Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

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 getset} 
-        Amarillo = 1, +        ​public char Sexo { getset; } 
-        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>​