Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 1
CAPÍTULO 6COMPOSICIÓN Y AGREGACIÓN
(Varios “todos”)
2
1
2
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 2
Ejercicio con varios “todos”�Un Grupo Corporativo Empresarial cuenta
con varias sucursales y cada una de ellascontrata de manera exclusiva a variosempleados
�Datos de la sucursal:�Nombre
�Dirección
�Datos del empleado:�Número
�Nombre
� Sueldo3
Composición simple
4
Sin embargo, el Grupo Corporativo Empresarial cuenta con varias sucursales distribuidas en varios
puntos de una ciudad
3
4
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 3
5
Diseño de la forma
Diseño completo
6
5
6
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 4
Procedimiento al capturar una sucursal
�Crear un objeto local para la nueva sucursal
�Capturar sus datos de los textBoxes
�Agregar la nueva sucursal al listBox
7
Botón para capturar nueva sucursal
private void btnCapturarSucursal_Click(object sender, EventArgs e)
{
// Declaración y creación de un objeto local para nueva sucursal
Sucursal nuevaSucursal = new Sucursal();
// Capturar los datos de la nueva sucursal
nuevaSucursal.Nombre = txtNombreSucursal.Text;
nuevaSucursal.Direccion = txtDireccionSucursal.Text;
// Insertar la nueva sucursal al listBox
lstSucursales.Items.Add(nuevaSucursal);
MessageBox.Show("Nueva sucursal capturada correctamente");
// Limpiar los textBoxes
Limpiar();
}
8
7
8
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 5
� El método ToString() se sobrescribe en la claseSucursal para configurar lo que se desea mostraren el listBox cuando se agregue una nueva sucursal
� De no hacerlo, no despliega correctamente sus datosen el listBox
9
Sobrescritura del método ToString() de la clase Sucursal
Ejemplo sin la sobrescritura de
ToString( )
Sobrescritura de ToString()
class Sucursal
{
. . .
. . .
. . .
// Sobrescritura del método ToString()
public override string ToString()
{
return this.Nombre;
}
}10
9
10
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 6
Procedimiento al capturar un empleado de una sucursal
� El usuario debe seleccionar una sucursal dellistBox
� El botón de captura de datos del empleadodebe validar que el usuario seleccionecorrectamente una sucursal de la lista
� Crear un objeto local para el nuevo empleado� Capturar los datos de los textBoxes� Insertar el nuevo empleado al objeto de la
sucursal seleccionada de la lista� Actualizar el dataGridView con los datos de los
empleados de la sucursal seleccionada11
Botón para capturar nuevo empleadoprivate void btnCapturarEmpleado_Click(object sender, EventArgs e)
{
// Declaración y creación de un objeto local para la sucursal
Sucursal sucursalSeleccionada = new Sucursal();
// Seleccionar una sucursal del listBox
sucursalSeleccionada = (Sucursal) lstSucursales.SelectedItem;
// Validar que el usuario seleccione una sucursal del listBox
if(sucursalSeleccionada==null)
{
MessageBox.Show("Debe seleccionar una sucursal de la lista");
return;
}
// Declaración y creación de un objeto local para el nuevo empleado
Empleado nuevoEmpleado = new Empleado();
// Capturar los datos del nuevo empleado
nuevoEmpleado.Numero = int.Parse(txtNumeroEmpleado.Text);
nuevoEmpleado.Nombre = txtNombreEmpleado.Text;
nuevoEmpleado.Sueldo = double.Parse(txtSueldoEmpleado.Text);
// Insertar el nuevo empleado a la sucursal seleccionada
sucursalSeleccionada.InsertarEmpleado(nuevoEmpleado);
// Mostrar los empleados de la sucursal seleccionada
MostrarDatosEmpleados(sucursalSeleccionada);
MessageBox.Show("Nuevo empleado insertado a la sucursal");
// Limpiar los textBoxes
LimpiarTextBoxes();
}
12
11
12
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 7
Mostrar los datos de una sucursal seleccionada de la lista� Al seleccionar una sucursal almacenada en el listBox se deben
mostrar sus datos y los de sus empleados
� Al hacer click sobre un objeto del listBox se dispara el eventoClick
13
¿Cómo seleccionar el evento Clickdel listBox?
� Abrir la ventana depropiedades dellistBox
� Cambiar a la ventanade eventos
� Hacer doble clicksobre el eventodeseado
14
13
14
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 8
Código del evento Clickprivate void lstSucursales_Click(object sender, EventArgs e)
{
// Declaración y creación de un objeto local para la sucursal seleccionada
Sucursal sucursalSeleccionada = new Sucursal();
// Seleccionar una sucursal de la lista
sucursalSeleccionada = (Sucursal) lstSucursales.SelectedItem;
// Validar la correcta selección de la sucursal
if(sucursalSeleccionada==null)
{
MessageBox.Show("Debe seleccionar una sucursal de la lista");
return;
}
// Mostrar los datos de la sucursal seleccionada
MostrarDatosEmpleados(sucursalSeleccionada);
}
15
Ejemplo 1: Contar los empleados de una sucursal seleccionada de la lista� Agregar un botón para contar los empleados de una sucursal
16
15
16
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 9
Método de la clase Sucursal para contar los empleados
class Sucursal
{
. . .
. . .
. . .
// Método para contar los empleados
public int ContarEmpleados()
{
return _listaEmpleados.Count;
}
}17
Código del botón para contarprivate void btnContarEmpleados_Click(object sender, EventArgs e)
{
// Declaración y creación de un objeto local para la sucursal
seleccionada
Sucursal sucursalSeleccionada = new Sucursal();
// Seleccionar una sucursal de la lista
sucursalSeleccionada = (Sucursal)lstSucursales.SelectedItem;
// Validar la correcta selección de la sucursal
if (sucursalSeleccionada == null)
{
MessageBox.Show("Debe seleccionar una sucursal de la lista");
return;
}
// Invocar el método ContarEmpleados() de la clase Sucursal
MessageBox.Show("La sucursal " + sucursalSeleccionada.Nombre + "
tiene " + sucursalSeleccionada.ContarEmpleados()+" empleados");
}18
17
18
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 10
Ejemplo 2: Sumar los sueldos de los empleados de todas las sucursales
19
Método de la clase Sucursal para sumar los sueldos de los empleadosclass Sucursal
{
. . .
. . .
. . .
// Método para sumar los sueldos de todos sus empleados
public double SumarSueldos()
{
// Declaración de una variable local para la sumatoria
double dblSuma = 0.0;
// Recorrer la lista de empleados
foreach (Empleado miEmpleado in _listaEmpleados)
dblSuma += miEmpleado.Sueldo;
return dblSuma;
}
}20
19
20
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 11
Código del botón para sumarprivate void btnSumarSueldos_Click(object sender,
EventArgs e)
{
// Declaración de variable local para la sumatoria
double dblSumaSueldos = 0.0;
// Recorrer todas las sucursales del listBox
foreach(Sucursal miSucursal in lstSucursales.Items)
dblSumaSueldos += miSucursal.SumarSueldos();
MessageBox.Show("La suma de los sueldos de todos los
empleados es " + dblSumaSueldos.ToString("C"));
}
21
22
Ejercicios� ¿Cuántos empleados tiene todo el grupo corporativo empresarial?
� ¿Cuál es la suma de los sueldos de los empleados de todo el grupo corporativo empresarial?
� ¿Cuál es el nombre del empleado con el sueldo mayor de una sucursal seleccionada del listBox?
� ¿Cuál es el nombre del empleado con el sueldo mayor de todo el grupo corporativo empresarial?
� ¿Cuál es el nombre de la sucursal con la menor suma de sueldos de sus empleados?
� De las sucursales, ¿cuál tiene la menor cantidad de empleados?
� Calcular el promedio de sueldo de los empleados del grupo corporativo empresarial
� Calcular el promedio de empleados por sucursal del grupo corporativo empresarial
21
22
Programación Orientada a Objetos en C# .NET
Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 12
Otros títulos del autor
http://www.itnuevolaredo.edu.mx/Takeyas/Libro
Bruno López [email protected]
23