Biblia C#
Programación Orientada
a Objetos en C#
Unidad 3.- Herencia
Autor:
Dr. Ramón Roque Hernández
http://ramonroque.com/Materias/pooTec.htm
ramonroque@yahoo.com
Colaborador:
Ing. Bruno López Takeyas, M.C.
www.itnuevolaredo.edu.mx/takeyas
takeyas@itnuevolaredo.edu.mx
1
Relaciones entre clases:
Herencia, Composición
y Agregación
2Programación Orientada a Objetos con C#
3
Herencia
• Característica de la POO que permite
definir nuevas clases a partir de otras
ya existentes.
• Las clases existentes “transmiten” sus
características.
4
Programación Orientada a Objetos con C#
Herencia (cont.)
• Puede usarse para:
– Relaciones del tipo “es un”
• Ejemplo: Un Gerente “es un” Empleado con
características propiasadicionales.
• Objetivo: Reutilización de código.
5
Herencia
Aparato_Electrodomestico
(Propiedades:
Interruptor, CableElectrico
Métodos:
Encender, Apagar)
Herendan características de
Aparato_Electrodomestico
e incorporan las suyas propias.
Lavadora
• Propiedades:
(Interruptor, CableElectrico,
PerillaDeCiclosDeLavado, CapacidadDeCarga)
• Métodos:
(Encender, Apagar,LlenarConAgua, TirarAgua)
Televisión
• Propiedades:
(Interruptor, CableElectrico,
BotonDeCanales, BotonDeVolumen)
• Métodos:
(Encender, Apagar,
CambiarVolumen, CambiarCanal)
6
Programación Orientada a Objetos con C#
Uso de la Herencia
• Beneficios:
– Permte escribir menos código.
– Mejora la reusabilidad de los componentes.
– Facilita el mantenimiento del sistema completo.• Util para un buen diseño del programa.
• Un diseño pobre sin herencia implementaría las
clases involucradas de manera independiente.
7
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
• Todos los objetos heredan de System.Object
8
Programación Orientada a Objetos con C#
Ejemplode herencia
class Persona
{
….
}
class Empleado:Persona
{
….
}
class Administrador:Empleado
{
….
}
class Estudiante:Persona
{
….
}
class Profesor:Empleado
{
….
}
9
Ejercicio
• Se deben modelar dos clases con las siguientes
características:
Automovil
PalaMecanica
CaballosDeFuerza: int
CantidadDePuertas: int
CaballosDeFuerza: int
PesoMaximoDeLevante: intArrancar() : void
Detener() : void
Acelerar(int cuanto): void
Arrancar() : void
Detener() : void
MoverPala(string direccion) : void
10
Programación Orientada a Objetos con C#
Mal Diseño
(No recomendable)
•
Modelarlas de manera independiente.
class Automovil
{
private int cf, cp;
public int CaballosDeFuerza
{
Iguales
get { return cf; }
set { cf = value; }
}public int CantidadDePuertas
{
get { return cp; }
set { cp = value; }
}
public void Arrancar()
{
Iguales
}
public void Detener()
{
Iguales
}
public void Acelerar(int cuanto)
{
}
}
class PalaMecanica
{
private int cf, pml;
public int CaballosDeFuerza
{
get { return cf; }
set { cf = value; }
}
public int PesoMaximoDeLevante
{
get { return pml; }
set { pml = value; }
}public void Arrancar()
{
}
public void Detener()
{
}
public void MoverPala(string direccion)
{
}
}
11
Diseño usando Herencia
(Recomendado)
Vehiculo
CaballosDeFuerza : int
Arrancar() : void
Detener() : void
Herencia
Automovil
Superclase
(Clase base)
(Clase padre)
(Clase madre)
Subclases
(Clases derivadas)
(Clases Hijas)
PalaMecanica
CantidadDePuertas : intPesoMaximoDeLevante : int
Acelerar(int cuanto) : void
MoverPala(string direccion) : void
12
Programación Orientada a Objetos con C#
Diseño de las clases usando
herencia en C#
class Vehiculo
{
private int cf;
public int CaballosDeFuerza
{
get { return cf; }
set { cf = value; }
}
public void Arrancar()
{
}
public void Detener()
{
}
}
class Automovil : Vehiculo
{...
Regístrate para leer el documento completo.