Sunteți pe pagina 1din 20

Universidad Nacional Autnoma de Nicaragua

Len, Nicaragua

Programacin Visual I
Ingeniera en Telemtica

Tema 3: Programacin Orientada a


Objetos en CSharp

Pre-requisito: Programacin
Orientada a Objetos

Crditos: 4
Semestre: 6to

Ing. Julio Csar Gonzlez Moreno


julcgmoreno@gmail.com

Contenidos
El lenguaje CSharp y la orientacin a objetos
Definicin de sistemas orientados a objetos
Uso de variables de tipo referencia
La jerarqua de objetos
El operador is
Creacin y destruccin de objetos
Bibliografa

Programacin Visual
I
Ingeniera en Telemtica

2 / 20

El lenguaje CSharp y la orientacin a objetos (I)


Instancias de nuevos objetos

Declarar una variable del tipo de una clase no crea un objeto


Para crear el objeto se debe utilizar la palabra reservada new

Programacin Visual
I
Ingeniera en Telemtica

3 / 20

El lenguaje CSharp y la orientacin a objetos (II)


Uso de la palabra reservada this

La palabra reservada this apunta al objeto usado para la llamada al


mtodo
Es til en caso de conflicto entre identificadores de distintos mbitos

Programacin Visual
I
Ingeniera en Telemtica

4 / 20

Definicin de sistemas orientados a objetos (I)


Herencia

La herencia indica una relacin es un tipo de


La herencia es una relacin entre clases
Las nuevas clases aaden especializacin a las existentes

Generalizacin

Especializacin

Programacin Visual
I
Ingeniera en Telemtica

Animal

Herbvoro

Clase base

Carnvoro Clases derivadas

5 / 20

Definicin de sistemas orientados a objetos (II)


Herencia simple y mltiple
Herencia simple
Construir una nueva clase que es derivada de una sola clase base
Herencia mltiple
Construir una nueva clase que es derivada de dos o ms clases base
Animal

Herbvoro

Carnvoro

Omnvoro

Programacin Visual
I
Ingeniera en Telemtica

El animal omnvoro
tiene dos clases
base directas

6 / 20

Uso de variables de tipo referencia (I)


Declaracin y liberacin de variables referencia
Declaracin de variables del tipo referencia
Animal a = null;
a = new Animal();
a.patas = 4;
a.tipo = Insecto;
Liberacin de variables del tipo referencia
a = null

Programacin Visual
I
Ingeniera en Telemtica

7 / 20

Uso de variables de tipo referencia (II)


Referencias no vlidas
Las referencias no vlidas impiden el acceso a los atributos miembros de
una clases as como tambin a sus mtodos
Las referencias no vlidas pueden aparecer en:
Tiempo de compilacin
El compilador detecta e informa a travs de Warnings la
declaracin o el uso de referencias no inicializadas
Tiempo de ejecucin
Se genera una excepcin del tipo NullPointerException

Programacin Visual
I
Ingeniera en Telemtica

8 / 20

Uso de variables de tipo referencia (III)


Referencias mltiples a un mismo objeto
Dos referencias pueden apuntar a un mismo objeto
Se establecen dos formas de acceder al mismo objeto
Qu sucede si cambiamos el estado del objeto a travs de una de las dos
referencias disponibles?
Animal a, b = null;
a = new Animal();
a.patas = 4;
a.tipo = Insecto;
b = a;
Console.WriteLine(Patas: + Convert.ToString(a.patas) + , tipo: + a.tipo);
Console.WriteLine(Patas: + Convert.ToString(b.patas) + , tipo: + b.tipo);

Programacin Visual
I
Ingeniera en Telemtica

9 / 20

La jerarqua de objetos (I)


El tipo Object (I)
Object es una clase que se encuentra en el espacio de nombre System
Sinnimo de System.Object
Es la clase base para todas las dems clases (Button, Label, Form,
etc.)

Object

String

Exception

SystemException

MiClase

La jerarqua de objetos (II)


El tipo Object (II)
Es posible asignar a una variable del tipo object cualquier referencia
private void ctGradosF_KeyPress(object sender, keyPressEventArgs e)
{
convertir(sender);
}
private void ctGradosC_KeyPress(object sender, keyPressEventArgs e)
{
convertir(sender);
}
private void convertir(object objObject)
{
TextBox objTextBox = (TextBox)objObject;
if(objTextBox == ctGradosF)
{
MessageBox.Show(Hay que convertir a grados Fahrenheit):
}
if(objTextBox == ctGradosC)
{
MessageBox.Show(Hay que convertir a grados Centgrados):
}
}

Programacin Visual
I
Ingeniera en Telemtica

11 / 20

El operador is
Devuelve true si el objeto comparado es de un tipo de clase indicada como
parmetro

Pajaro p;
if(j is Pajaro)
p = (Pajaro) j;
else
System.Console.WriteLine(El objeto j no es un objeto de la clase Pajaro);

Programacin Visual
I
Ingeniera en Telemtica

12 / 20

Creacin y destruccin de objetos (I)


Creacin de objetos
Paso 1: Asignacin de un espacio de memoria (crea el objeto)
Se usa la palabra reservada new para asignar memoria
Paso 2: Inicializacin del objeto usando un constructor
Se usa el nombre de la clase seguido por parntesis

Programacin Visual
I
Ingeniera en Telemtica

13 / 20

Creacin y destruccin de objetos (II)


Uso del constructor por defecto
Un constructor por defecto presenta las siguientes caractersticas:
El acceso al mismo es pblico
Posee el mismo nombre que el de la clase
No tiene ningn tipo de valor de retorno (ni siquiera void)
No recibe ningn argumento
Se emplea para inicializar todos los atributos miembros de la clase a
cero, false o null
Sintaxis del constructor
public class Date {
//Atributos miembros de la clase
public Date ( ) {
//Inicializacin de los atributos miembros de la clase
}
}

Programacin Visual
I
Ingeniera en Telemtica

14 / 20

Creacin y destruccin de objetos (III)


Utilizacin del constructor por defecto
El constructor por defecto puede no ser adecuado
Generalmente no tiene asociado ningn cdigo a ejecutar
En ese caso hay que usarlo colocando el cdigo necesario
public class Date : Form {
private int dia, mes, anyo;
public Date ( ) {
initialComponent();
}
}
public class Date : Form {
private int dia, mes, anyo;
public Date ( ) {
InitialComponent();
dia = 5;
mes = 9;
anyo = 2011;
}
}

Programacin Visual
I
Ingeniera en Telemtica

15 / 20

Creacin y destruccin de objetos (IV)


Sobrecarga de constructores
Los constructores pueden ser considerados como mtodos y pueden estar
sobrecargados dentro de una misma clase
Existen en el mismo mbito, poseen el mismo nombre, pero poseen distintos
parmetros
Permite inicializar objetos de distintas maneras
Problema
Si se escribe un constructor para una clase (diferente al constructor por
omisin), el compilador no crear un constructor por defecto
Solucin
Utilizar para la
recientemente

creacin

de

los

objetos

el

nuevo

constructor

escrito

Crear, a parte del constructor ya existente, un constructor por defecto

Programacin Visual
I
Ingeniera en Telemtica

16 / 20

Creacin y destruccin de objetos (V)


Sobrecarga de constructores - Ejemplo

public class Date : Form {


private int dia, mes, anyo;
public Date ( ) {
initialComponent();
}
public Date (int iDia, int iMes, int iAnyo ) {
InitialComponent();
dia = iDia;
mes = iMes;
anyo = iAnyo;
}
}

Programacin Visual
I
Ingeniera en Telemtica

17 / 20

Creacin y destruccin de objetos (VI)


Tiempo de vida de un objeto
Creacin de objetos
Se usa new para asignar memoria
Se usa un constructor para inicializar un objeto en esa memoria
Uso de objetos
Llamadas a mtodos, utilizacin de atributos y propiedades
Destruccin de objetos
Se desasocia la referencia del objeto en memoria
Se libera la memoria

Programacin Visual
I
Ingeniera en Telemtica

18 / 20

Creacin y destruccin de objetos (VII)


Recolector de basura
No es posible eliminar la memoria asignada a los objetos de forma
explcita
C# no incluye un inverso de new (ej: delete, free, etc.)
C# cuenta con una herramienta denominada recolector de basura
(garbage collector)
Busca objetos que no se utilizan con el fin de destruirlos, liberando as
la memoria que ocupan
Todo esto se lleva a cabo de manera automtica
Elimina el uso de un mecanismo explcito, as como tambin errores de
programacin frecuentes

Programacin Visual
I
Ingeniera en Telemtica

19 / 20

Bibliografa
C#. Curso de Programacin
Fco. Javier Ceballos Sierra
RA-MA
Enciclopedia de Microsoft Visual C#, 2da edicin
Fco. Javier Ceballos Sierra
RA-MA
Captulo 4, pgina 81

Programacin Visual
I
Ingeniera en Telemtica

20 / 20

S-ar putea să vă placă și