Académique Documents
Professionnel Documents
Culture Documents
Herencia
Caracterstica de la POO que permite definir nuevas clases a partir de otras ya existentes.
Herencia (cont.)
Puede usarse para:
Relaciones del tipo es un
Ejemplo: Un Gerente es un Empleado con caractersticas propias adicionales.
Herencia
Aparato_Electrodomestico
(Propiedades: Interruptor, CableElectrico Mtodos: Encender, Apagar)
Lavadora
Propiedades: (Interruptor, CableElectrico, PerillaDeCiclosDeLavado, CapacidadDeCarga) Mtodos: (Encender, Apagar, LlenarConAgua, TirarAgua)
Televisin
Propiedades: (Interruptor, CableElectrico, BotonDeCanales, BotonDeVolumen) Mtodos: (Encender, Apagar, CambiarVolumen, CambiarCanal)
Uso de la Herencia
Beneficios:
Permte escribir menos cdigo. Mejora la reusabilidad de los componentes. Facilita el mantenimiento del sistema completo.
Util para un buen diseo del programa. Un diseo pobre sin herencia implementara las clases involucradas de manera independiente.
Herencia en C#
En C# solo se permite Herencia simple. Ejemplo de Herencia en C#
class A { } class B : A { }
Indica que B Hereda de A
Ejemplo de herencia
class Persona { . }
class Empleado:Persona { . }
class Estudiante:Persona { . }
class Administrador:Empleado { . }
class Profesor:Empleado { . } 9
Ejercicio
Se deben modelar dos clases con las siguientes caractersticas:
Automovil CaballosDeFuerza: int CantidadDePuertas: int Arrancar() : void Detener() : void Acelerar(int cuanto): void PalaMecanica CaballosDeFuerza: int PesoMaximoDeLevante: int Arrancar() : void Detener() : void MoverPala(string direccion) : void
10
11
12
class Programa { static void Main() { Automovil unAuto = new Automovil(); unAuto.Arrancar(); unAuto.Acelerar(10); unAuto.Detener(); PalaMecanica unaPala = new PalaMecanica(); unaPala.Arrancar(); unaPala.MoverPala ("arriba"); unaPala.Detener(); System.Console.ReadLine(); } }
14
class Vehiculo { public void Arrancar() { System.Console.WriteLine("....Arrancando....Clase Vehiculo... "); } } class Automovil : Vehiculo { public void Acelerar(int cuanto) { System.Console.WriteLine("Primero, hay que arrancar"); base.Arrancar(); System.Console.WriteLine("Despues, hay que acelerar..."); System.Console.WriteLine("Acelerando "+ cuanto + " km/hr"); } } class Programa { static void Main() { Automovil miCarro = new Automovil(); miCarro.Acelerar(10); System.Console.ReadLine(); } 15 }
A Al crear una instancia de C, Primero se ejecuta el constructor de la clase padre (Que en realidad siempre es Object), luego el constructor de la clase A, despus el constructor de la clase B, y finalmente el constructor de la clase C
17
class programa { static void Main() { C miObjetoC = new C(); miObjetoC = null; GC.Collect(); Console.ReadKey(); } }
18
19
La palabra reservada base( ) hace referencia a la clase padre inmediata desde la cual se invoca. Entre parntesis se especifican los parmetros requeridos.
20
ERROR!
Empresa
23
24
25
27
Empresa
28
29
31
Colecciones genricas en C#
Incluidas en el namespace System.Collection.Generic Incorporadas a partir del .NET Framework 2.0 Contiene clases e interfaces que definen tipos genricos para instanciar colecciones Permite modelar estructuras de datos
32
Estructuras de datos en C#
Coleccin (clase genrica) Estructura de datos ArrayList Arreglos Stack Pilas Queue Colas List Listas enlazadas simples LinkedList Listas enlazadas dobles
33
Adems, hay una referencia al primer nodo de la lista y el ltimo nodo apunta a nulo
34
35
36
Ejemplo de lista
Crear una clase para modelar objetos con datos de empleados Crear una lista que almacene muchos empleados
37
El objeto miEmpresa es una lista genrica que almacena objetos de la clase Empleado
38
Crear el dataGridView
dataGridView1.Columns.Add("Nmero", "Nmero"); dataGridView1.Columns.Add("Nombre", "Nombre"); dataGridView1.Columns.Add("Sueldo", "Sueldo"); // Inicializa las propiedades del dataGridView1 dataGridView1.ReadOnly = true; dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false; dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
41
Iteradores
Es un conjunto de instrucciones que devuelve una secuencia de valores del mismo tipo. Puede invocarse mediante un ciclo foreach P.ejem.
foreach(int Dato in X) { }
42
El ciclo foreach
Se utiliza para recorrer los elementos de una coleccin y obtener la informacin deseada. No se debe utilizar para modificar el contenido de la coleccin. foreach repite un grupo de instrucciones incluidas en el cuerpo del ciclo para cada elemento de una estructura de datos.
43
44
46
El mtodo GetEnumerator()
Sirve para implementar iteradores El mtodo GetEnumerator() devuelve un enumerador que recorre en iteraciones una coleccin. Lo contiene System.Collections Se utiliza por medio del ciclo foreach
47
Ejemplo de GetEnumerator()
public IEnumerator GetEnumerator() { if(Arreglo.Tamao == 0) yield break; for(i=0; i<Arreglo.Tamao; i++) yield return Arreglo[i]; }
49
Composicin
Asociacin
Agregacin
50
Descripcin de la cardinalidad
Uno y slo uno Uno a uno Cero uno Desde M hasta N MN Cero muchos Cero muchos Uno muchos (al menos uno)
51
Ejemplos
52
Composicin
Define una relacin fuerte entre clases Se utiliza para modelar un " todo" y sus " partes " donde
El " todo" no puede existir si no existen sus " partes" Las " partes" desaparecen cuando se elimina el " todo "
53
54
Representacin de la composicin
Grficamente se representa colocando un rombo negro en el extremo de la clase constituida (parte del todo).
55
Composicin
Un objeto puede tener como miembro otro objeto definido previamente. Cuando un objeto se encuentra compuesto por otros objetos, se dice que hay Composicin. La composicin permite implementar relaciones del tipo tiene un.
Ejemplo: Un Auto tiene un Motor.
Una caracterstica importante de la composicin es que la clase del todo regularmente contiene un destructor para eliminar sus partes
56
Composicin
ProcesosDeUsuario Impresion
class Impresion { public void Imprimir(string Titulo, string mensaje) { System.Console.WriteLine(Titulo.ToUpper()); System.Console.WriteLine(mensaje); } } class ProcesosDeUsuario Composicin { private Impresion imp; public void ImprimirInstrucciones() { imp = new Impresion(); imp.Imprimir("Bienvenido", "Presione Enter para continuar"); System.Console.ReadLine(); } } 57
58
Un objeto de la clase del todo tiene dentro un objeto de la clase parte El objetoTodo tiene un objetoParte como atributo 60
61
// Mtodo para insertar una parte a la lista public void Insertar(Parte P) { ListaComponentes.Add(P); } // Destructor (elimina el componente) ~Todo() { ListaComponentes.Clear(); } }
62
objetoParte
Atributos del objetoParte
objetoParte
Atributos del objetoParte
Un objeto de la clase del todo tiene dentro una coleccin de objetos de la clase parte El objetoTodo tiene una lista de objetoParte como atributo
63
(Es un)
Composicin
(Tiene un o unos)
64
Agregacin
Define una relacin donde una clase se puede formar de otras clases Sin embargo, la existencia de objetos de dichas clases es independiente Se utiliza para modelar un " todo" y sus " partes " donde
El " todo" se forma agregando sus" partes" Las " partes" pueden pertenecer a varios " todos " Si se elimina el " todo" pueden seguir existiendo 65 sus" partes"
Representacin de la agregacin
Grficamente se representa colocando un rombo blanco en el extremo de la clase constituida (parte del todo).
66
67
68
Composicin
Agregacin
Referencias adicionales
http://www.dcc.uchile.cl/~psalinas/uml/mo delo.html http://arodm.blogspot.com/2008/09/umlrelaciones-compocicion-agregacion.html
70