1 Poo Clases

41
Elaborado por JCastro – Docente UTEPSA Tema 1: POO Programación Orientada a Objeto

Transcript of 1 Poo Clases

Module 5: Methods and Parameters

Elaborado por JCastro Docente UTEPSATema 1: POO Programacin Orientada a ObjetoElaborado por JCastro Docente UTEPSA DESCRIPCINClasesHerenciaPolimorfismoEncapsulamientoElaborado por JCastro Docente UTEPSA CLASESTerminologa de las ClasesMtodos, Eventos, Sobrecarga de mtodosPropiedadesConstructoresTiempo de vida de un objeto

Terminologa de las Clases 1 Elaborado por JCastro Docente UTEPSAUna 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. Terminologa de las Clases 2Elaborado por JCastro Docente UTEPSAObjeto 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. 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.Elaborado por JCastro Docente UTEPSA Representacin de Clases segn UMLClases EstereotipadasLos estereotipos permiten tomar elementos propios de UML y convertirlos en otros. La finalidad es extender a un elemento UML. Se representan encerrados entre >

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

Trabajador- nombre : string- edad : byte- sueldo + Contratacin( ) : int+ Vacaciones( )Elaborado por JCastro Docente UTEPSA Representacin de Clases segn UMLRestriccionesEs un texto libre encerrado entre llaves { y } que especifica una o varias reglas que definirn la validacin en la DB

{ edad >= 18 y edad 0) length = value; }} :

Elaborado por JCastro Docente UTEPSA ConstructoresLos 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 argumentopublic class Rectangle{ :

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

Elaborado por JCastro Docente UTEPSA MtodosUn 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 {

}

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

Elaborado por JCastro Docente UTEPSA Uso de la Clase RectangleEjemplo 1public 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);}}

Elaborado por JCastro Docente UTEPSA Uso de la Clase RectangleEjemplo 2public class Window{Rectangle outerFrame;Rectangle innerFrame;public Window ( ){ outerFrame = new Rectangle(10,8); innerFrame = new Rectangle(8,6);}public void enlargeWindow( ){outerFrame.magnify(2); }}

Elaborado por JCastro Docente UTEPSA RecursividadLa 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);}

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

fact (4)4* fact (3)fact (3)3* fact (2)fact (2)2* fact (1)fact (1)fact (4)24621ite-1ite-2ite-3Ite-4Elaborado por JCastro Docente UTEPSA Ejemplo de Recursividad 2 public int identity (int num){ if (nmu < 1) return 10; else return num + identity (num - 2);} int result = identity(6); Console.WriteLine(La respuesta final es + result);

Identidad (6)6 + identidad (4)22 Identidad (4)4 + identidad (2)16 Identidad (2)2 + identidad (0)12 Identidad (0) 10

Identidad (num)Acciones suspendidas Regresar a la pilaCaso baseLlamada recursivaAvance hacia el Caso baseElaborado por JCastro Docente UTEPSA Ejercicios de Recursividad 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);

12Elaborado por JCastro Docente UTEPSA Uso de mtodos sobrecargadosDeclaracin de mtodos sobrecargadosFirmas de mtodosUso de mtodos sobrecargados Declaracin de mtodos sobrecargadosMtodos que comparten un nombre en una claseSe distinguen examinando la lista de parmetrosclass 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 mtodosLas firmas de mtodos deben ser nicas dentro de una clase Definicin de firmaNombre del mtodoTipo_dato de parmetroCantidad de parmetros

Forman la definicinde la firmaNombre de parmetroModificador de acceso del mtodoTipo de retornoNo afectan a lafirma Firmas de mtodos. Ejemplosclass Firmas{ private void M1( ) { } //1 public int M1( ) { return 0; } //2 private void M1(int x) { } //3 public int M1(int x, int y) {return 0;}//4 public int M1(int y) {return 0;}//5 public int M1(int y, int x) {return 0;}//6 public void M1(float x) { }//7 }Error igual firma a 1Error igual firma a 3Error igual firma a 4Ok firma distintaOk firma distintaOk firma distinta Uso de mtodos sobrecargadosConviene usar mtodos sobrecargados si:Hay mtodos similares que requieren parmetros diferentesSe quiere aadir funcionalidad al cdigo existente

No hay que abusar, ya que:Son difciles de depurarSon difciles de mantenerElaborado por JCastro Docente UTEPSA El Sistema de Tipos Comunes (CTS)Aspectos GeneralesComparacin de tipos de Valor y ReferenciaDefinicin de datos de Valor por el usuario: enum (Enumeraciones)struct (Estructuras)Tipos de datos EnumerativosAspectos generales del CTS El CTS admite tanto tipos de valor como de referencia Tipo de referencia Tipo Tipo de valorComparacin de tipos de valor y de referencia Tipos de valor:Contienen sus datos directamente Cada una tiene su propia copia de datos Las operaciones sobre una no afectan a otra Tipos de referencia:Almacenan referencias a sus datos (conocidos como objetos) Dos variables de referencia pueden apuntar al mismo objetoLas operaciones sobre una pueden afectar a otra Comparacin de tipos valor y tipos referenciaTipos valorLa variable contiene el valor directamenteEjemplos: char, int42int mol;mol = 42;string mol;mol = Hola";@HolaTipos referenciaLa variable contiene una referencia al datoEl dato se almacena en un rea de memoria aparte Declaracin y liberacin de variables referenciaDeclaracin de variables referencia

coordenada c1; c1 = new coordenada( ); c1.x = 6.12; c1.y = 4.2;@[email protected] de variables referencia

c1 = null;Referencias no vlidasSi hay referencias no vlidasNo es posible acceder a miembros o variablesReferencias no vlidas en tiempo de compilacinEl compilador detecta el uso de referencias no inicializadasReferencias no vlidas en tiempo de ejecucinEl sistema generar un error de excepcinComparacin de valores y comparacin de referenciasComparacin de tipos valor== and != comparan valoresComparacin de tipos referencia== and != comparan las referencias, no los [email protected]@1.02.0Referencias mltiples a un mismo objetoDos referencias pueden apuntar a un mismo objetoDos formas de acceder a un mismo objeto para lectura/escritura 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);@2.37.6@c1c2Consideraciones 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 Ejemplos de tipos de valor predefinidos: int floatEjemplos de tipos de valor definidos por el usuario: enumstructDel usuario Tipos de valor Predefinido Creacin de tipos de datos definidos por el usuario EnumeracionesEstructuras (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 enumerativasDefinicin de una enumeracin

Uso de una enumeracin

Visualizacin de una variable de enumeracinenum Color { Rojo, Verde, Azul }Color colorPaleta = Color.Rojo; MessageBox.Show ( colorPaletta ); // Muestra Rojo Ejemplo de variables enumerativasenum Semana { domingo=1, lunes=2, martes=3, miercoles=4, jueves=5, viernes=6, sabado=7}

Uso de una enumeracin

Note que en este ejemplo se han dado valores a las constantesde forma explicitaSemana 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