Publicado el 17 de Febrero del 2019
2.064 visualizaciones desde el 17 de Febrero del 2019
1,6 MB
40 paginas
Creado hace 5a (15/08/2018)
Programación Orientada a Objetos en C# .NET
CAPÍTULO 6
COMPOSICIÓN Y AGREGACIÓN
2
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
1
Programación Orientada a Objetos en C# .NET
Preguntas detonadoras
¿Qué es y para qué sirve una clase parametrizada?
Una clase parametrizada, ¿Qué tipo de parámetro recibe?
¿Cuáles con las colecciones genéricas incluidas en el framework?
¿Es posible insertar uno o varios objetos dentro de otro? ¿Cómo?
¿En qué se parece una composición a una agregación? ¿En qué
difieren?
¿Cuándo se recomienda implementar composición? ¿Cuándo
agregación?
Cuando una clase define una colección privada de objetos, ¿cómo
pueden consultarse sus datos desde el exterior?
¿Se puede implementar un iterador por medio de un método? ¿y de
una propiedad?
Relaciones entre clases:
Herencia, Composición y
Agregación
3
4
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
2
Programación Orientada a Objetos en C# .NET
Clases parametrizadas o genéricas
Ejemplo: Una empresa y una escuela desean
la clave y nombre de sus
almacenar
personas:
Clave: Entero ó String
Nombre: String
Pero en la empresa la clave es numérica
entera y en la escuela es una cadena.
5
6
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
3
Programación Orientada a Objetos en C# .NET
Clases parametrizadas o genéricas
(cont.)
Clases iguales
(excepto en el tipo de dato de la clave)
Escuela
Empresa
7
Clases parametrizadas o genéricas
(cont.)
Diseñar una clase parametrizada que sirva para ambos
casos:
8
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
4
Programación Orientada a Objetos en C# .NET
Codificación de la clase
parametrizada
class Persona<Tipo> // Clase parametrizada o genérica
{
// Atributos privados
private Tipo clave; // Se define el tipo de dato de la clave
private string nombre;
// Propiedades públicas
public Tipo Clave // Se define el tipo de dato de la propiedad
{
get { return clave; }
set { clave = value; }
}
public string Nombre
{
get { return nombre; }
set { nombre = value; }
}
}
9
Clases parametrizadas o genéricas
(cont.)
// Declaración y creación de los objetos
Persona<int> miEmpleado = new Persona<int>();
Persona<string> miEstudiante = new Persona<string>();
// Uso de los objetos
miEmpleado.Clave = int.Parse(txtClave.Text);
miEstudiante.Clave = txtClave.Text;
10
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
5
Programación Orientada a Objetos en C# .NET
Clases parametrizadas con varios
tipos
Ejemplo: Una empresa y una escuela
desean almacenar la clave y grupo de sus
personas:
Clave: Entero ó string
Grupo: Entero ó caracter
11
Clases parametrizadas con varios
tipos
Clases iguales
(excepto en los tipos de datos)
Escuela
Empresa
12
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
6
Programación Orientada a Objetos en C# .NET
Codificación de la clase
parametrizada con varios tipos
class Persona<Tipo1, Tipo2> // Clase parametrizada con varios tipos
{
// Atributos privados
private Tipo1 clave;
private Tipo2 grupo;
// Propiedades públicas
public Tipo1 Clave
{
get { return clave; }
set { clave = value; }
}
public Tipo2 Grupo
{
get { return grupo; }
set { grupo = value; }
}
}
13
Clases parametrizadas con varios
tipos (cont.)
// Declaración y creación de los objetos
Persona<int, int> miEmpleado = new Persona<int, int>();
Persona<string, char> miEstudiante = new Persona<string, char>();
// Uso de los objetos
miEmpleado.Clave = int.Parse(txtClave.Text);
miEmpleado.Grupo = int.Parse(txtGrupo.Text);
miEstudiante.Clave = txtClave.Text;
miEstudiante.Grupo =char.Parse(txtClave.Text);
14
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
7
Programación Orientada a Objetos en C# .NET
Colecciones genéricas en C#
Incluidas
en
el
namespace
System.Collection.Generic
Incorporadas a partir del .NET Framework
2.0
Contiene clases e interfaces que definen
tipos genéricos para instanciar colecciones
Permite modelar estructuras de datos
Estructuras de datos en C#
Colección (clase genérica)
ArrayList
Stack
Queue
List
LinkedList
Estructura de datos
Arreglos
Pilas
Colas
Listas enlazadas simples
Listas enlazadas dobles
15
16
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
8
Programación Orientada a Objetos en C# .NET
Listas enlazadas simples
Estructura de datos compuesta de nodos en
secuencia enlazados a través de una referencia
(apuntador).
Cada nodo se compone de 2 partes:
Datos
Referencia al siguiente nodo
Además, hay una referencia al primer nodo de la
lista y el último nodo apunta a nulo
17
La clase genérica List
Modela listas enlazadas en C#
Requiere un parámetro adicional para definir
el tipo de dato que almacena
El parámetro se coloca entre < y >
P. ejem.
List <int> miListaSimpleEnteros;
List <double> miListaReales;
List <Empleado> miListaEmpleados;
18
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
9
Programación Orientada a Objetos en C# .NET
Principales métodos y propiedades
de la clase genérica List
Método o propiedad Uso
Clear()
Add()
Remove()
Elimina la primera ocurrencia de un nodo de la
lista y devuelve un valor booleano para confirmar
la operación
Elimina todos los nodos de la lista
Agrega un nodo al final de la lista
Contains()
Count
Sort()
GetEnumerator()
Determina si un nodo se encuentra almacenado
en la lista
Devuelve la cantidad de nodos almacenados en la
lista
Ordena en forma ascendente los nodos de la lista
Recorre los nodos de la lista y devuelve un
enumerador.
19
Ejemplo de lista
Crear una clase para
modelar objetos con
datos de empleados
Crear una lista que
almacene muchos
empleados
20
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
10
Programación Orientada a Objetos en C# .NET
Creación de un objeto de una lista
genérica
Creación de un objeto de una lista genérica
List<Empleado> miEmpresa = new
List<Empleado>();
El objeto miEmpresa es una lista genérica
que almacena objetos de la clase Empleado
21
Captura de datos de un nodo de la
lista genérica
Capturar los datos de
un empleado en
textBoxes
Al oprimir el botón
insertar, crear un objeto
de la clase Empleado e
insertarlo en la lista
genérica
Mostrar los datos en un
dataGridView
22
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
11
Programación Orientada a Objetos en C# .NET
Creación de un empleado (nodo de
la lista)
Crear un objeto con los datos de un empleado para
agregarlo a la lista
Empleado miEmpleado = new Empleado();
Llenar los datos del empleado
miEmpleado.Numero = int.Parse(textBox1.Text);
miEmpleado.Nombre = textBox2.Text;
miEmpleado.Sueldo = double.Parse(textBox3.Text);
23
Insertar un empleado (agregar un
nodo a la lista)
Insertar el empleado en la lista
miEmpresa.Add(miEmpleado);
Crear el dataGridView
dataGridView1.Columns.Add("Número", "Número");
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;
24
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
12
Programación Orientada a Objetos en C# .NET
Iterador
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)
{
……
}
25
El ciclo foreach
Se utiliza para recorrer los elementos de una
colección y obtener la información deseada.
No se debe utilizar para modificar el contenido de
la colección.
foreach repite un grupo de instrucciones incluidas
en el cuerpo del ciclo para cada elemento de una
estructura de datos.
26
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
13
Programación Orientada a Objetos en C# .NET
Uso de un iterador para limpiar los
textBoxes
foreach(Control x in groupBox1.Controls)
if(x is TextBox)
x.Text=“”;
27
Ejemplo de un iterador en una colección
genérica de una lista
Para recorrer los nodos de una lista
foreach(Empleado miEmpleado in miEmpresa)
Donde:
Empleado: Clase que define los datos de los empleados
miEmpleado: Objeto de tipo Empleado que contiene
los datos de un empleado
miEmpresa: Objeto de la colección genérica
28
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
14
Programación Orientada a Objetos en C# .NET
Mostrar los datos de una lista en
un dataGridView
dataGridView1.Rows.Clear();
foreach(Empleado miEmpleado in miEmpresa)
{
dataGridView1.Rows.Add(miEmpleado.Numero,
miEmpleado.Nombre, miEmpleado.Sueldo)
}
Uso de iteradores
Recuerde que no es recomendable incluir
sentencias para desplegar datos en pantalla en un
método de una clase, ya que se restringe el uso
de dicha clase exclusivamente para la plataforma
en la que se está trabajando y no se puede
reutilizar en otras plataformas
29
30
Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas
15
Programación Orientada a Objetos en C# .NET
La interfase IEnumerator
Incluida
en
el
espacio
de
nombres
System.Collections
Se utiliza para recorrer un conjunto
Comentarios de: 06a.- Composición Y Agregación - Programación Orientada a Objetos en C# (0)
No hay comentarios