Diferencias
Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
cap:poo:herencia [2017/04/06 13:31] user creado |
cap:poo:herencia [2018/02/20 09:18] (actual) |
||
---|---|---|---|
Línea 7: | Línea 7: | ||
* **Herencia biológica**.- Cuando una persona tiene hijos (descendencia), es común que los hijos adquieran rasgos físicos de los padres tales como el color de piel, el color de ojos, el color de pelo, la complexión, rasgos faciales como el tipo de cejas, mentón, orejas, entre otros, a esto se le llama herencia. | * **Herencia biológica**.- Cuando una persona tiene hijos (descendencia), es común que los hijos adquieran rasgos físicos de los padres tales como el color de piel, el color de ojos, el color de pelo, la complexión, rasgos faciales como el tipo de cejas, mentón, orejas, entre otros, a esto se le llama herencia. | ||
* **Crecimiento empresarial**.- Cuando una empresa crece, suelen dividirse departamentos creando otros departamentos nuevos para atender con una mejor especialización y atención ciertas áreas, estas departamentos productos de dichas divisiones suelen heredar algunas funciones del departamento del cual nacieron, y a su vez crear nuevas funciones para enfocar la atención para la cual fueron creadas. | * **Crecimiento empresarial**.- Cuando una empresa crece, suelen dividirse departamentos creando otros departamentos nuevos para atender con una mejor especialización y atención ciertas áreas, estas departamentos productos de dichas divisiones suelen heredar algunas funciones del departamento del cual nacieron, y a su vez crear nuevas funciones para enfocar la atención para la cual fueron creadas. | ||
- | * ****.- . | + | * **Esquema de seguridad de usuarios y grupos**.- En algunos sistemas se tienen grupos definidos, estos grupos tienen diferentes permisos sobre acciones y/o accesos en el sistema, un usuario es ingresado como miembro a uno mas grupos, el usuario puede tener definidos diferentes permisos, el usuario hereda los permisos del grupo al pertenecer a el, por lo tanto una vez que el usuario quiere ser validado, se validan tanto sus permisos como los permisos de los grupos a los que pertenece. |
==== Aplicación en CSharp ==== | ==== Aplicación en CSharp ==== | ||
- | En el siguiente ejemplo veremos como un semaforo afecta al transito de una calle tomando en cuenta que: | + | En el siguiente ejemplo veremos como es aplicada la herencia en un ejemplo de personas y profesiones donde tendremos: |
- | * Si el semáforo esta en verde el carro puede avanzar | + | * Una persona la cual tiene como propiedades Edad, Sexo y Nombre, |
- | * Si el semáforo esta en amarillo el carro debe disminuir su velocidad | + | * Un bombero el cual tiene como propiedades Escuadrón, Numero y como acción tiene Apagar Incendio. |
- | * Si el semáforo esta en rojo el carro debe detenerse | + | * Un doctor el cual tiene como propiedad Cédula y como acción tienen Consultar. |
- | * El semáforo estará cambiando de color en base al siguiente temporizador: | + | * Un cirujano es una especialidad del doctor el cual tiene como propiedad el tipo de cirujano que es y como acción Operar. |
- | * El semáforo cambiará de rojo a verde a los 40 segundos | + | |
- | * El semáforo cambiará de verde a amarillo a los 35 segundos | + | |
- | * El semáforo cambiará de amarillo a rojo a los 5 segundos | + | |
- | * Por la calle pasara un carro cada 5 segundos. | + | |
- | <file csharp concepto_encapsulamiento.cs> | + | <file csharp concepto_herencia.cs> |
using System; | using System; | ||
- | using System.Timers; | ||
- | namespace Capacitacion.Encapsulamiento | + | namespace Capacitacion.Herencia |
{ | { | ||
- | public enum ColorSemaforo | + | public class Persona |
{ | { | ||
- | Rojo = 0, | + | public int Edad { get; set; } |
- | Amarillo = 1, | + | public char Sexo { get; set; } |
- | Verde = 2 | + | public string Nombre { get; set; } |
- | } | + | |
- | + | ||
- | public class Semaforo | + | |
- | { | + | |
- | private Timer timer; | + | |
- | private Timer timerAlerta; | + | |
- | private ColorSemaforo color; | + | |
- | + | ||
- | public ColorSemaforo Color { get { return color; } } | + | |
- | public Semaforo() | + | public override string ToString() |
{ | { | ||
- | timer = new Timer(); | + | var sb = new System.Text.StringBuilder(); |
- | timer.Interval = TimeSpan.FromSeconds(40).TotalMilliseconds; | + | sb.AppendLine($"Nombre: {Nombre}"); |
- | timer.Elapsed += Timer_Elapsed; | + | sb.AppendLine($"Sexo: {Sexo}"); |
+ | sb.AppendLine($"Edad: {Edad}"); | ||
+ | return sb.ToString(); | ||
+ | } | ||
- | timerAlerta = new Timer(); | + | } |
- | timerAlerta.Interval = TimeSpan.FromSeconds(35).TotalMilliseconds; | + | |
- | timerAlerta.Elapsed += TimerAlerta_Elapsed; | + | |
- | color = ColorSemaforo.Verde; | + | public class Bombero: Persona |
- | Console.WriteLine($"El semaforo ha cambiado a {color}"); | + | { |
- | timer.Start(); | + | public Bombero(Persona persona) |
- | timerAlerta.Start(); | + | { |
+ | this.Nombre = persona.Nombre; | ||
+ | this.Sexo = persona.Sexo; | ||
+ | this.Edad = persona.Edad; | ||
} | } | ||
- | + | public string Escuadron { get; set; } | |
- | private void TimerAlerta_Elapsed(object sender, ElapsedEventArgs e) | + | public int Numero { get; set; } |
+ | public void ApagarIncendio() | ||
{ | { | ||
- | timerAlerta.Stop(); | + | Console.WriteLine("Apagando Incendio"); |
- | color = ColorSemaforo.Amarillo; | + | |
- | Console.WriteLine($"El semaforo ha cambiado a {color}"); | + | |
} | } | ||
- | private void Timer_Elapsed(object sender, ElapsedEventArgs e) | + | public override string ToString() |
{ | { | ||
- | timer.Stop(); | + | var sb = new System.Text.StringBuilder(); |
- | color = Color == ColorSemaforo.Amarillo ? ColorSemaforo.Rojo : ColorSemaforo.Verde; | + | sb.Append(base.ToString()); |
- | + | sb.AppendLine("Profesion: Bombero"); | |
- | Console.WriteLine($"El semaforo ha cambiado a {color}"); | + | sb.AppendLine($"Escuadron: {Escuadron}"); |
- | + | sb.AppendLine($"Numero: {Numero}"); | |
- | timer.Start(); | + | return sb.ToString(); |
- | if (color == ColorSemaforo.Verde) | + | |
- | timerAlerta.Start(); | + | |
} | } | ||
} | } | ||
- | public class Calle | + | public class Doctor : Persona |
{ | { | ||
- | Semaforo semaforo; | + | public Doctor(Persona persona) |
- | Timer timer; | + | |
- | + | ||
- | public Calle(Semaforo semaforo) | + | |
{ | { | ||
- | this.semaforo = semaforo; | + | this.Nombre = persona.Nombre; |
- | timer = new Timer(); | + | this.Sexo = persona.Sexo; |
- | timer.Interval = TimeSpan.FromSeconds(5).TotalMilliseconds; | + | this.Edad = persona.Edad; |
- | timer.Elapsed += Timer_Elapsed; | + | |
- | timer.Start(); | + | |
} | } | ||
+ | public string Cedula { get; set; } | ||
+ | public void Consultar() | ||
+ | { | ||
+ | Console.WriteLine("Consultando al paciente"); | ||
+ | } | ||
+ | public override string ToString() | ||
+ | { | ||
+ | var sb = new System.Text.StringBuilder(); | ||
+ | sb.Append(base.ToString()); | ||
+ | sb.AppendLine("Profesion: Doctor"); | ||
+ | sb.AppendLine($"Cedula: {Cedula}"); | ||
+ | return sb.ToString(); | ||
+ | } | ||
+ | } | ||
- | private void Timer_Elapsed(object sender, ElapsedEventArgs e) | + | public class Cirujano : Doctor |
+ | { | ||
+ | public Cirujano(Doctor doctor) : base(doctor) | ||
+ | { | ||
+ | this.Cedula = doctor.Cedula; | ||
+ | } | ||
+ | public string Tipo { get; set; } | ||
+ | public void Operar() | ||
+ | { | ||
+ | Console.WriteLine("Operando al paciente"); | ||
+ | } | ||
+ | public override string ToString() | ||
{ | { | ||
- | var estatus = semaforo.Color == ColorSemaforo.Verde ? "avanza" : semaforo.Color == ColorSemaforo.Amarillo ? "disminuye su velocidad" : "se detiene"; | + | var sb = new System.Text.StringBuilder(); |
- | Console.WriteLine($"el carro {estatus}"); | + | sb.Append(base.ToString()); |
+ | sb.AppendLine($"Especialidad: {Tipo}"); | ||
+ | return sb.ToString(); | ||
} | } | ||
} | } | ||
Línea 105: | Línea 114: | ||
public static void Main(string[] args) | public static void Main(string[] args) | ||
{ | { | ||
- | var semaforo = new Semaforo(); | + | var persona = new Persona() { Edad = 19, Nombre = "Cesar", Sexo = 'H' }; |
+ | Console.WriteLine(persona); | ||
- | var calle = new Calle(semaforo); | + | var doctor = new Doctor(persona); |
+ | doctor.Cedula = "ABC1233"; | ||
+ | Console.Write(doctor); | ||
+ | doctor.Consultar(); | ||
+ | Console.WriteLine(); | ||
- | Console.ReadKey(); | + | var cirujano = new Cirujano(doctor); |
+ | cirujano.Tipo = "Ginecologia"; | ||
+ | Console.Write(cirujano); | ||
+ | cirujano.Consultar(); | ||
+ | cirujano.Operar(); | ||
+ | Console.WriteLine(); | ||
+ | |||
+ | var bombero = new Bombero(persona); | ||
+ | bombero.Escuadron = "L501"; | ||
+ | bombero.Numero = 669; | ||
+ | Console.Write(bombero); | ||
+ | bombero.ApagarIncendio(); | ||
+ | |||
+ | Console.ReadLine(); | ||
} | } | ||
} | } | ||
} | } | ||
+ | |||
</file> | </file> | ||