Diferencia entre revisiones de «Plantilla:PHP/Herencia»

De WikiEducator
Saltar a: navegación, buscar
(Herencia)
(Herencia)
Línea 9: Línea 9:
 
*Vemos dos ejemplos  para explicar de forma empírica este concepto
 
*Vemos dos ejemplos  para explicar de forma empírica este concepto
 
{{MRM_Ejemplo|Title= Herencia: gestión personal ambulatorio|
 
{{MRM_Ejemplo|Title= Herencia: gestión personal ambulatorio|
*Se pide gestionar un ambulatorio. Para ello vamos a hacer sólo el diagrama de clases y su implementación a nivel básico (sin entrar en detalles).
+
*Se pide gestionar un ambulatorio.
*Tras una serie de entrevistas, lo que se quiere gestionar son los datos de los empleados y anotar las acciones básicas que realizan.
+
*Para ello vamos a hacer sólo el diagrama de clases y su implementación.
Encontramos los siguientes elementos que especificamos como clases
+
*Lo hacemos a nivel básico (sin entrar en detalles).
 +
*Tras realizar un análisis se determina que se pretende gestionar:
 +
;los datos de los empleados y anotar las acciones básicas que realizan.
 +
*Encontramos los siguientes elementos que especificamos como clases
 
;Conserjes
 
;Conserjes
 
;Enfermeras
 
;Enfermeras
 
;Médicas
 
;Médicas
  Las propiedades (atributos) y métodos de cada clase quedarían especificadas en los diagramas
+
  Las propiedades (atributos) y métodos de cada clase se especifican
 +
en los siguientes diagramas de clases
 
  <gallery>
 
  <gallery>
 
  Image:claseConserje.png|Clase Conserje  
 
  Image:claseConserje.png|Clase Conserje  
  Image:claseEnfermera.jpg|Clase Enfermera
+
  Image:claseEnfermera.png|Clase Enfermera
  Image:claseMedica.jpg|Clase Medicas
+
  Image:claseMedica.png|Clase Medicas
 
  </gallery>
 
  </gallery>
 
+
*Claramente vemos que todos ellos tienen varios elementos en común.
 +
*Esto nos permite crear una clases genérica que por ejemplo podemos llamar '''''personalAmbulatorio'''''
 +
*Posteriormente creamos una especialización de '''''personalAmbulatorio''''' con los elementos particulares
 +
*El digrama podría quedar
 +
[[Imagen:JerarquiaPersonaAmbulatorio.png|center]]<br />
  
 
}}
 
}}

Revisión de 11:17 5 dic 2016

Herencia

  • La herencia es un mecanismo de programación que me permite crear una jerarquía en los componentes software, que se pueden ir especializando

Se puede definir una clase con ciertas características (atributos, métodos)

  • Posteriormente puedo definir otra clase a partir de la ya existente, quedándo implícitamente los atributos y métodos como también parte de su estructura o composición
  • Es una característica muy natural (p.e Personas (médicos y bailarines) vehículos (Terrestres (coche, moto) Acuáticos (barco, lancha))

Herencia.png

  • Es una forma de obtener características comunes por separado y luego especializar evitando redundancias
  • Facilita la reusabilidad y adaptación
  • Vemos dos ejemplos para explicar de forma empírica este concepto


Icon casestudy.gif
Herencia: gestión personal ambulatorio
  • Se pide gestionar un ambulatorio.
  • Para ello vamos a hacer sólo el diagrama de clases y su implementación.
  • Lo hacemos a nivel básico (sin entrar en detalles).
  • Tras realizar un análisis se determina que se pretende gestionar:
los datos de los empleados y anotar las acciones básicas que realizan.
  • Encontramos los siguientes elementos que especificamos como clases
Conserjes
Enfermeras
Médicas
Las propiedades (atributos) y métodos de cada clase se especifican
en los siguientes diagramas de clases
  • Claramente vemos que todos ellos tienen varios elementos en común.
  • Esto nos permite crear una clases genérica que por ejemplo podemos llamar personalAmbulatorio
  • Posteriormente creamos una especialización de personalAmbulatorio con los elementos particulares
  • El digrama podría quedar
JerarquiaPersonaAmbulatorio.png



  • Vamos a platear un ejemplo

Vamos a suponer que queremos hacer un programa de figuras geométricas. Tenemos cuadrados, rectángulos y triángulos. Archivo:HerenciaPHP1.png

Cómo vemos hay atributos comunes podríamos declara una clase común llamada Polígono con los elementos comunes y luego tres clases que deriven de Poligono Archivo:HerenciaPHP2.png

  • La implementación de esta estructura podría quedar de la siguiente manera
 
  • Ahora vemos también un método común que es calcularArea()
  • A pesar de que es común y la idea de la acción es igual, la implementación es diferente en cada caso
  • Para estas situaciones está la posib

Métodos abstractos