You are on page 1of 41

Elaborado por JCastro Docente UTEPSA

Tema 1: POO Programacin Orientada a Objeto

DESCRIPCIN


Elaborado por JCastro Docente UTEPSA

Clases Herencia Polimorfismo Encapsulamiento

CLASES

Elaborado por JCastro Docente UTEPSA

Terminologa de las Clases Mtodos, Eventos, Sobrecarga de mtodos Propiedades Constructores Tiempo de vida de un objeto

Terminologa de las Clases 1


Una Clase en la programacin orientada a objetos es una categora generalizada que describe un grupo de artculos ms especficos llamados objetos los cuales pueden existir dentro de la misma. Un Constructor es un mtodo que le permite al programador establecer valores predeterminados, limitar la instanciacin y escribir programas que sean flexibles y fciles de leer. Un Evento es una accin o suceso generalmente producido por el usuario y para el cual puede responder un programa (por ejemplo: presionar teclas, hacer clic o mover el mouse). Un Mtodo en la programacin orientada a objetos es un proceso ejecutado por un objeto cuando este recibe un mensaje.

Elaborado por JCastro Docente UTEPSA

Terminologa de las Clases 2


Objeto En la POO es una variable que contiene rutinas y datos que se procesan como una entidad discreta. La POO es un paradigma de la programacin en el cual un programa se ve como una coleccin de objetos discretos que se encuentran contenidos en estructuras de informacin y rutinas que interactan con otros objetos. Propiedad- miembros de una clase que proporcionan un mecanismo flexible para leer, escribir o calcular los valores de campos privados. Las propiedades se ven o se pueden acceder a travs de los descriptores (get{ }) dentro de la clase y se pueden cambiar o modificar a travs de de los descriptores (set{ }) dentro de la clase.
Elaborado por JCastro Docente UTEPSA

Objetos y Clases. La Relacin.


Los objetos son instancias de un tipo de informacin dada. El tipo de informacin proporciona un modelo para el objeto creado (o instanciado) cuando se ejecuta la aplicacin. Los nuevos tipos de datos se definen utilizando clases.

Las clases son los bloques bsicos en las aplicaciones en C# y contienen el cdigo y datos. Una aplicacin C# siempre tendr por lo menos una clase.

Objetos y Clases. Comparativo.


Un objeto pertenece a una clase y es una instancia de dicha clase. La clase es el modelo del objeto y define los campos y los mtodos. El objeto existe durante el tiempo de ejecucin y se debe declarar y construir de manera explcita por el programa ejecutante. Para la mayora de los lenguajes de programacin, no se puede cambiar una clase durante la ejecucin de un programa. Las clases tienen campos que pueden cambiar en valor y mtodos que se pueden llevar a cabo durante la ejecucin de un programa. La clase a la cual pertenece el objeto, define estos atributos y mtodos.

Representacin de Clases segn UML


Clases Estereotipadas Los estereotipos permiten tomar elementos propios de UML y convertirlos en otros. La finalidad es extender a un elemento UML. Se representan encerrados entre << y >>
Trabajador
- nombre : string - edad : byte - <<categorizacin>> sueldo + Contratacin( ) : int + Vacaciones( )

Elaborado por JCastro Docente UTEPSA

Nota: Se estereotipa el atributo categorizacin, indicando que existe un elemento UML que habr de revisar

Representacin de Clases segn UML


Restricciones Es un texto libre encerrado entre llaves { y } que especifica una o varias reglas que definirn la validacin en la DB
Trabajador
- nombre : string - edad : byte - <<categorizacin>> sueldo
Elaborado por JCastro Docente UTEPSA

{ edad >= 18 y edad <= 60 }

+ Contratacin( ) : int + Vacaciones( )

Nota: Se aplica la regla para que la edad est comprendida entre 18 y 60 aos

Representacin de Clases segn UML


Notas Adjuntas Se utiliza para agregar una nota descriptiva de la Clase, Atributo u Operacin
Trabajador
fono esta compuesto por: Cdigo del Pas Cdigo de Regin Cdigo de Zona Nmero
Elaborado por JCastro Docente UTEPSA

- nombre : string - fono : string - <<categorizacin>> sueldo + Contratacin( ) : int + Vacaciones( )

Propiedades
Las propiedades se pueden usar como si fueran miembros pblicos de datos pero en realidad son mtodos especiales llamados descriptores. Esto permite el acceso a los datos de manera fcil a la vez que proporciona la seguridad y la flexibilidad de los mtodos.

Elaborado por JCastro Docente UTEPSA

Ejemplo de Propiedad
public class Rectangle { private double length; public double Length { get { return length; } set { if (value > 0) length = value; } }

Elaborado por JCastro Docente UTEPSA

:
}

Constructores
Los constructores son mtodos de clase los cuales se ejecutan cuando se crea un objeto de un determinado tipo. Los constructores tienen el mismo nombre que la clase y por lo general inicializan los miembros de datos del nuevo objeto.

Elaborado por JCastro Docente UTEPSA

Ejemplo de Constructor con argumento


public class Rectangle { : public Rectangle(double l, double w) { length = l; width = w; } }

Elaborado por JCastro Docente UTEPSA

Mtodos
Un mtodo es un bloque de cdigo que contiene una serie de sentencias. Cada instruccin que se ejecuta, se lleva a cabo en el contexto de un mtodo. public class Rectangle {

Elaborado por JCastro Docente UTEPSA

public void Magnify (int factor) { length *= factor; width *= factor; }


}

Uso de la Clase Rectangle


Ejemplo 1

Elaborado por JCastro Docente UTEPSA

public class ShapeProgram { public static void Main() { Rectangle rec1 = new Rectangle(10,20); rec1.magnify(3); Console.WriteLine(Longitud + rec1.length); Console.WriteLine(Ancho + rec1.width); } }

Uso de la Clase Rectangle


Ejemplo 2

Elaborado por JCastro Docente UTEPSA

public class Window { Rectangle outerFrame; Rectangle innerFrame; public Window ( ) { outerFrame = new Rectangle(10,8); innerFrame = new Rectangle(8,6); } public void enlargeWindow( ) { outerFrame.magnify(2); } }

Recursividad
La recursividad ocurre cuando se usa un mtodo para resolver otra versin del mismo problema. Con cada repeticin, el problema se hace ms fcil y avanza a un caso base. El caso base se alcanza cuando no se requiere ninguna otra iteracin. Un caso base es el punto en el cual ya no se realiza ninguna otra iteracin.

Elaborado por JCastro Docente UTEPSA

Ejemplo de Recursividad 1
public int fact (int n) { if (n == 1) return 1; else return n * fact(n - 1); }
Elaborado por JCastro Docente UTEPSA

fact (4)

24

ite-1

fact (4) 4* fact (3)

ite-2

fact (3) 3* fact (2)

ite-3

int result = fact(4); Console.WriteLine(La respuesta final es + result);


Ite-4

fact (2) 2* fact (1)

1
fact (1)

Ejemplo de Recursividad 2
public int identity (int num) { if (nmu < 1) Caso base return 10; Llamada recursiva else Avance hacia el Caso base return num + identity (num - 2); } int result = identity(6); Console.WriteLine(La respuesta final es + result); Identidad (num) Identidad (6) Identidad (4) Identidad (2) Identidad (0) Acciones suspendidas 6 + identidad (4) 4 + identidad (2) 2 + identidad (0) 10 Regresar a la pila 22 16 12

Elaborado por JCastro Docente UTEPSA

Ejercicios de Recursividad
1 public int negative(int num) { if(num >= 20) return -5; else return negative(num + 4) + 2 * num; } int result1 = negative(-3); Console.WriteLine(La respuesta es + result1); public int product(int num) { if(num > 20) return -1; else return num * product(-2 * num); } int result2 = product(1); Console.WriteLine(La respuesta es + result2);

2
Elaborado por JCastro Docente UTEPSA

Uso de mtodos sobrecargados

Declaracin de mtodos sobrecargados Firmas de mtodos

Uso de mtodos sobrecargados


Elaborado por JCastro Docente UTEPSA

Declaracin de mtodos sobrecargados


Mtodos que comparten un nombre en una clase Se distinguen examinando la lista de parmetros
class OverloadingExample { static int Suma(int a, int b) { return a + b; } static int Suma(int a, int b, int c) { return a + b + c; } static void Main( ) { Console.WriteLine(Suma(1,2) + Suma(1,2,3)); } }

Firmas de mtodos
Las firmas de mtodos deben ser nicas dentro de una clase Definicin de firma

Forman la definicin de la firma


Nombre del mtodo Tipo_dato de parmetro Cantidad de parmetros

No afectan a la firma
Nombre de parmetro Modificador de acceso del mtodo Tipo de retorno

Firmas de mtodos. Ejemplos


class Firmas { private void M1( ) { } public int M1( ) { return 0; } private void M1(int x) { } public int M1(int x, int y) {return 0;} public int M1(int y) {return 0;} public int M1(int y, int x) {return 0;} public void M1(float x) { } } //1 //2 //3 //4 //5 //6 //7

Error igual firma a 1 Ok firma distinta Ok firma distinta

Error igual firma a 3


Error igual firma a 4 Ok firma distinta

Uso de mtodos sobrecargados


Conviene usar mtodos sobrecargados si: Hay mtodos similares que requieren parmetros diferentes Se quiere aadir funcionalidad al cdigo existente

No hay que abusar, ya que: Son difciles de depurar Son difciles de mantener

El Sistema de Tipos Comunes (CTS)


Aspectos Generales Comparacin de tipos de Valor y Referencia Definicin de datos de Valor por el usuario: enum (Enumeraciones) struct (Estructuras)
Elaborado por JCastro Docente UTEPSA

Tipos de datos Enumerativos

Aspectos generales del CTS

El CTS admite tanto tipos de valor como de referencia

Tipo

Tipo de valor

Tipo de referencia

Comparacin de tipos de valor y de referencia


Tipos de valor:

Tipos de referencia:

Contienen sus datos directamente


Cada una tiene su propia copia de datos Las operaciones sobre una no afectan a otra

Almacenan referencias a sus datos (conocidos como objetos)


Dos variables de referencia pueden apuntar al mismo objeto Las operaciones sobre una pueden afectar a otra

Comparacin de tipos valor y tipos referencia

Tipos valor

Tipos referencia

La variable contiene el valor directamente Ejemplos: char, int

La variable contiene una referencia al dato El dato se almacena en un rea de memoria aparte
string mol; mol = Hola";

int mol; mol = 42;

42

Hola

Declaracin y liberacin de variables referencia

Declaracin de variables referencia

coordenada c1; c1 = new coordenada( ); c1.x = 6.12; c1.y = 4.2;

6.12

4.2

Liberacin de variables referencia


c1 = null;

6.12

4.2

Referencias no vlidas

Si hay referencias no vlidas

No es posible acceder a miembros o variables El compilador detecta el uso de referencias no inicializadas

Referencias no vlidas en tiempo de compilacin

Referencias no vlidas en tiempo de ejecucin

El sistema generar un error de excepcin

Comparacin de valores y comparacin de referencias

Comparacin de tipos valor

== and != comparan valores == and != comparan las referencias, no los valores


@ 1.0 1.0 2.0 2.0

Comparacin de tipos referencia

Diferente

Referencias mltiples a un mismo objeto

Dos referencias pueden apuntar a un mismo objeto

Dos formas de acceder a un mismo objeto para lectura/escritura


c1 @ 2.3 7.6

c2

coordinate c1= new coordinate ( ); coordinate c2; c1.x = 2.3; c1.y = 7.6; c2 = c1; Console.WriteLine(c1.x + " , " + c1.y); Console.WriteLine(c2.x + " , " + c2.y);

Consideraciones de tipos de valor y de referencia


Los tipos por valor son tipos de datos cuyo valor se almacena en la pila (Stack). Se puede decir que el acceso al valor contenido en uno de estos tipos es directo, es decir se almacena directamente en la memoria reservada para ese tipo y cualquier cambio que se haga se hace directamente sobre dicho valor, de igual forma las copias de estos valores son independientes.

Por otro lado, los tipos por referencia se almacenan en la memoria "lejana (Heap), a diferencia de los tipos por valor, los tipos por referencia lo nico que almacenan es una referencia (o puntero) al valor asignado. Las copias de tipos por referencia, son de direcciones, pero no de contenidos.

Comparacin de tipos de valor predefinidos y definidos por el usuario


Tipos de valor

Predefinido
Ejemplos de tipos de valor predefinidos: int float

Del usuario
Ejemplos de tipos de valor definidos por el usuario: enum struct

Creacin de tipos de datos definidos por el usuario


Enumeraciones
Estructuras (estudiadas en Prog I )

Enumeraciones
Utilidad: La utilidad de los enumerativos es ms manifiesta cuando se quiere manejar una serie de valores constantes con nombre. Sintaxis: enum idVar { valor1, valor2, .. valorn } Ejemplo: enum Color { Rojo, Amarillo, Verde } De forma implcita una variable enum asigna un valor numrico entero a cada elemento comenzando por 0, as en el ejemplo, Rojo = 0, Amarillo = 1 y Verde = 2

Uso de variables enumerativas


Definicin de una enumeracin enum Color { Rojo, Verde, Azul } Uso de una enumeracin Color colorPaleta = Color.Rojo; Visualizacin de una variable de enumeracin MessageBox.Show ( colorPaletta ); // Muestra Rojo

Ejemplo de variables enumerativas


enum Semana { domingo=1, lunes=2, martes=3, miercoles=4, jueves=5, viernes=6, sabado=7} Note que en este ejemplo se han dado valores a las constantes de forma explicita Uso de una enumeracin Semana diaSem = Semana.sabado; if (diaSem == Semana.sabado || diaSem == Semana.domingo) MessageBox.Show("Dia de descanso "); else MessageBox.Show("Dia de trabajo "); void MostrarDia ( int dia ) { if (dia >= 1 && dia <= 7) MessageBox.Show(( (Semana)dia).ToString( )); .. }

Ejercicio de Sobrecarga de Mtodos


CL: segn el diagrama UML que se muestra a continuacin
Saludos
+ tpo: enum = maana, tarde, noche

+ Saludo( ) : string + Saludo( nombre : string) : string + Saludo( nombre : string, tiempo : tpo) : string
Elaborado por JCastro Docente UTEPSA

Nota: El mtodo Saludo( ) devolver


Hola si no se pasan argumentos; Hola + nombre si se pasa un argumento; Buenos das + nombre si se pasan 2 argumentos y tpo=manana, Buenos tardes + nombre si se pasan 2 argumentos y tpo=tarde, etc.

CP: Evento que invoque al mtodo Saludo en sus 3 variantes

You might also like