3-programación orientada a objetos en csharp

20
 Programación Visual I Programación Visual I Ingeniería en Telemática Ing. Julio César González Moreno Ing. Julio César González Moreno [email protected] Universidad Nacional Autónoma de Nicaragua León, Nicaragua Pre-requisito: Programación Orientada a Objetos Créditos: 4 Semestre: 6to Tema 3: Programación Orientada a Objetos en CSharp

Upload: sophia-harris

Post on 12-Jan-2016

5 views

Category:

Documents


1 download

DESCRIPTION

shell

TRANSCRIPT

Page 1: 3-Programación Orientada a Objetos en CSharp

  

Programación Visual IProgramación Visual IIngeniería en Telemática

Ing. Julio César González MorenoIng. Julio César González [email protected]

Universidad Nacional Autónoma de NicaraguaLeón, Nicaragua

Pre-requisito: Programación Orientada a ObjetosCréditos: 4Semestre: 6to

Tema 3: Programación Orientada a Objetos en CSharp

Page 2: 3-Programación Orientada a Objetos en CSharp

  

Contenidos

El lenguaje CSharp y la orientación a objetos

Definición de sistemas orientados a objetos

Uso de variables de tipo referencia

La jerarquía de objetos

El operador is

Creación y destrucción de objetos

Bibliografía

2 / 20Programación Visual IIngeniería en Telemática

Page 3: 3-Programación Orientada a Objetos en CSharp

  

El lenguaje CSharp y la orientación 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

3 / 20Programación Visual IIngeniería en Telemática

Page 4: 3-Programación Orientada a Objetos en CSharp

  

La palabra reservada this apunta al objeto usado para la llamada al método

Es útil en caso de conflicto entre identificadores de distintos ámbitos

4 / 20Programación Visual IIngeniería en Telemática

El lenguaje CSharp y la orientación a objetos (II)Uso de la palabra reservada this

Page 5: 3-Programación Orientada a Objetos en CSharp

  

La herencia indica una relación “es un tipo de”

La herencia es una relación entre clases

Las nuevas clases añaden especialización a las existentes

5 / 20Programación Visual IIngeniería en Telemática

Definición de sistemas orientados a objetos (I)Herencia

Animal

Herbívoro

Clase base

Clases derivadas

Generalización

Especialización Carnívoro

Page 6: 3-Programación Orientada a Objetos en CSharp

  

Herencia simple

Construir una nueva clase que es derivada de una sola clase base

Herencia múltiple

Construir una nueva clase que es derivada de dos o más clases base

6 / 20Programación Visual IIngeniería en Telemática

Definición de sistemas orientados a objetos (II)Herencia simple y múltiple

Animal

Herbívoro Carnívoro

OmnívoroEl animal omnívoro

tiene dos clases base directas

Page 7: 3-Programación Orientada a Objetos en CSharp

  

Declaración de variables del tipo referencia

Liberación de variables del tipo referencia

7 / 20Programación Visual IIngeniería en Telemática

Uso de variables de tipo referencia (I)Declaración y liberación de variables referencia

Animal a = null;a = new Animal();a.patas = 4;a.tipo = “Insecto”;

a = null

Page 8: 3-Programación Orientada a Objetos en CSharp

  

Las referencias no válidas impiden el acceso a los atributos miembros de una clases así como también a sus métodos

Las referencias no válidas pueden aparecer en:

Tiempo de compilación

El compilador detecta e informa a través de Warnings la declaración o el uso de referencias no inicializadas

Tiempo de ejecución

Se genera una excepción del tipo NullPointerException

8 / 20Programación Visual IIngeniería en Telemática

Uso de variables de tipo referencia (II)Referencias no válidas

Page 9: 3-Programación Orientada a Objetos en CSharp

  

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 través de una de las dos referencias disponibles?

9 / 20Programación Visual IIngeniería en Telemática

Uso de variables de tipo referencia (III)Referencias múltiples a un mismo objeto

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);

Page 10: 3-Programación Orientada a Objetos en CSharp

  

Object es una clase que se encuentra en el espacio de nombre System

Sinónimo de System.Object

Es la clase base para todas las demás clases (Button, Label, Form, etc.)

La jerarquía de objetos (I)El tipo Object (I)

Object

Exception

SystemException

String MiClase

Page 11: 3-Programación Orientada a Objetos en CSharp

  

Es posible asignar a una variable del tipo object cualquier referencia

11 / 20Programación Visual IIngeniería en Telemática

La jerarquía de objetos (II)El tipo Object (II)

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 Centígrados”):}

}

Page 12: 3-Programación Orientada a Objetos en CSharp

  

El operador is

Devuelve true si el objeto comparado es de un tipo de clase indicada como parámetro

12 / 20Programación Visual IIngeniería en Telemática

Pajaro p;

if(j is Pajaro)p = (Pajaro) j;

elseSystem.Console.WriteLine(“El objeto j no es un objeto de la clase Pajaro”);

Page 13: 3-Programación Orientada a Objetos en CSharp

  

Paso 1: Asignación de un espacio de memoria (crea el objeto)

Se usa la palabra reservada new para asignar memoria

Paso 2: Inicialización del objeto usando un constructor

Se usa el nombre de la clase seguido por paréntesis

13 / 20Programación Visual IIngeniería en Telemática

Creación y destrucción de objetos (I)Creación de objetos

Page 14: 3-Programación Orientada a Objetos en CSharp

  

Un constructor por defecto presenta las siguientes características:

El acceso al mismo es público

Posee el mismo nombre que el de la clase

No tiene ningún tipo de valor de retorno (ni siquiera void)

No recibe ningún argumento

Se emplea para inicializar todos los atributos miembros de la clase a cero, false o null

Sintaxis del constructor

14 / 20Programación Visual IIngeniería en Telemática

Creación y destrucción de objetos (II)Uso del constructor por defecto

public class Date {//Atributos miembros de la clasepublic Date ( ) {

//Inicialización de los atributos miembros de la clase}

}

Page 15: 3-Programación Orientada a Objetos en CSharp

  

El constructor por defecto puede no ser adecuado

Generalmente no tiene asociado ningún código a ejecutar

En ese caso hay que usarlo colocando el código necesario

15 / 20Programación Visual IIngeniería en Telemática

Creación y destrucción de objetos (III)Utilización del constructor por defecto

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;

}}

Page 16: 3-Programación Orientada a Objetos en CSharp

  

Los constructores pueden ser considerados como métodos y pueden estar sobrecargados dentro de una misma clase

Existen en el mismo ámbito, poseen el mismo nombre, pero poseen distintos parámetros

Permite inicializar objetos de distintas maneras

Problema

Si se escribe un constructor para una clase (diferente al constructor por omisión), el compilador no creará un constructor por defecto

Solución

Utilizar para la creación de los objetos el nuevo constructor escrito recientemente

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

16 / 20Programación Visual IIngeniería en Telemática

Creación y destrucción de objetos (IV)Sobrecarga de constructores

Page 17: 3-Programación Orientada a Objetos en CSharp

  17 / 20

Programación Visual IIngeniería en Telemática

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;

}}

Creación y destrucción de objetos (V)Sobrecarga de constructores - Ejemplo

Page 18: 3-Programación Orientada a Objetos en CSharp

  

Creación de objetos

Se usa new para asignar memoria

Se usa un constructor para inicializar un objeto en esa memoria

Uso de objetos

Llamadas a métodos, utilización de atributos y propiedades

Destrucción de objetos

Se desasocia la referencia del objeto en memoria

Se libera la memoria

18 / 20Programación Visual IIngeniería en Telemática

Creación y destrucción de objetos (VI)Tiempo de vida de un objeto

Page 19: 3-Programación Orientada a Objetos en CSharp

  

No es posible eliminar la memoria asignada a los objetos de forma explícita

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 automática

Elimina el uso de un mecanismo explícito, así como también errores de programación frecuentes

19 / 20Programación Visual IIngeniería en Telemática

Creación y destrucción de objetos (VII)Recolector de basura

Page 20: 3-Programación Orientada a Objetos en CSharp

  

Bibliografía

C#. Curso de Programación

Fco. Javier Ceballos Sierra

RA-MA

Enciclopedia de Microsoft Visual C#, 2da edición

Fco. Javier Ceballos Sierra

RA-MA

Capítulo 4, página 81

20 / 20Programación Visual IIngeniería en Telemática