SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
Generalización
Especialización
Herencia
  Concepto
  Clase base Vs. clases derivadas
  Ejemplos
  En UML
  Sintaxis en C++
  Clases genéricas
Propiedad que permite
  compartir información entre
  dos clases, su objetivo es
  evitar la redundancia.
  Surge, ya que con
  frecuencia entre algunos
  objetos existen atributos y
  métodos que son comunes.
• Ejemplo: Lavadoras, Pulidoras, Neveras,
  Microondas, Tostadoras, Planchas, etc. son
  todos ELECTRODOMÉSTICOS. Ellos
  comparten algunas características comunes.
Características Comunes
de los Electrodomésticos
• Son aparatos para el
  hogar
• Necesitan corriente
• Tienen un serial,
  garantía, costo,…
• Proceso inverso a la
  Generalización.
• En los Objetos existen
  atributos y métodos que son
  específicos (particulares) a
  cada objeto.
• Ejemplo: Los Electrodomésticos (Lavadoras,
  Pulidoras,     Neveras,     Microondas,    Tostadoras,
  Planchas, ...) Si bien es cierto que comparten
  algunas características (artefactos hogar, necesitan
  corriente, serial, garantía,..) también es cierto que
  cada uno tiene características y comportamiento
  propio (específico).
Se utiliza solo
                  para planchar ropa




Se utiliza solo
para tostar pan
• La herencia o relación es-un,
  es una relación que se
  establece entre dos clases,
  que permite definir nuevas
  clases (específicas) a partir
  de una clase base ya
  existente (general).

• Las nuevas clases creadas se denominan clases
  derivadas (clases hijas ó subclases) y heredan los
  atributos y métodos de la clase base (clase padre ó
  superclase), pudiendo las clases derivadas
  redefinir los métodos que hereda de la clase
  padre y añadir métodos propios.
• Las clases derivadas son una especialización de
   la clase base.
 • La clase base es la generalización de las clases
   derivadas.

                   Clase Base (Padre)
                 ELECTRODOMÉSTICO




Clase Derivada                          Clase Derivada
     (Hijo)                                  (Hijo)
   Tostadora                                Plancha
• En la clase base (superclase, padre) se encuentran
  los atributos y métodos que son comunes.
• Las clases derivadas (subclases, hijas) además de
  las características comunes (localizadas en la
  superclase) tienen su propias características.
• El objetivo final es la
  reutilización o
  reusabilidad de código
  anteriormente
  desarrollado. Con esto
  se reduce la cantidad
  de código redundante
  en componentes de las
  clases.
Clase base (superclase)

                        Atributo A , B       Método X , Y




      Atributo A , B                                        Atributo A , B
                                     Atributo A , B
      Método X , Y                                          Método X , Y
       Atributo C                    Método X , Y
                                                            Atributo D, E

       Método Z                          Método T             Método W



 Clase derivada               Clase derivada                Clase derivada
    (subclase)                   (subclase)                    (subclase)

La herencia supone una clase base y una                            Características
jerarquía de clases que contienen clases                                comunes
derivadas de la clase base. Las clases derivadas
heredan los atributos y métodos de su clase base,                 Características
añadiendo sus propios atributo(s) y método(s),                       específicas
incluso puede cambiar aquellos elementos de la
clase base que necesita sean diferentes.
Es una herramienta poderosa que
  proporciona un marco adecuado para
producir software fiable, comprensible, de
bajo costo y reutilizable (no redundante).
Clase base (superclase)
                               PERSONA




                                                                Clase derivada
Clase derivada
                                                                  (subclase)
  (subclase)

             Clase derivada                    Clase derivada
               (subclase)                        (subclase)
                              Clase derivada
                                (subclase)


                  Una secretaria es una persona
                   Un médico es una persona ….
                  Un estudiante es una persona
Clase base (superclase)
                          TRANSPORTE


  AÉREO                   TERRESTRE                     MARÍTIMO


Clase derivada                                           Clase derivada
  (subclase)                                               (subclase)




    Clase derivada   Clase derivada Clase derivada   Clase derivada
      (subclase)       (subclase)     (subclase)       (subclase)

    Un avión es un medio de transporte aéreo
Un autobús es un medio de transporte terrestre ….
 Un velero es un medio de transporte marítimo.
   Todos a su vez son un medio de transporte
Nivel 0




Nivel 1




Nivel 2
La declaración de herencia debe incluir la
palabra reservada class, el nombre de la nueva
clase, el especificador de acceso que indica el
tipo de herencia (pública, privada o protegida) y el
nombre de la clase base de la que se deriva.
El formato general es el siguiente:

  Símbolo de derivación


class NombreClaseDerivada : tipo_herencia NombreClaseBase
{
   private:
       // nuevos miembros privados
    ……… específicos de clase derivada        Especificador de
    public:                                  acceso (private,
       // nuevos miembros públicos          public, protected)
                                              normalmente
    …..…. específicos de clase derivada
                                                  public
};
Como reglas se extrae:
– Los componentes ó miembros privados en
  la clase base son inaccesibles (no utilizables)
  por la clase derivada, para todos los modos
  de derivación (private, protected, public).
– Derivando en modo privado se obtienen
  miembros privados.
– Derivando en modo protegido se obtienen
  miembros protegidos.
– Derivando en modo público se respetan las
  características de los miembros de la clase
  base.
Se dice que hay Herencia en C++, porque el
compilador permite dependiendo del tipo de
derivación, utilizar los atributos y métodos de
una clases desde otra.
La herencia permite que una jerarquía de clases
sea construida, moviéndose desde la más
general a la más específica.
El proceso implica primero
definir una clase base, que
define características
comunes a todos los objetos
que se derivarán de ella y
luego definir las clases
derivadas.
• En general, se debe utilizar la palabra
  reservada public como tipo de herencia ya
  que es la herencia más general, esto permite
  conseguir que todos los miembros que son
  públicos en la clase base permanezcan
  públicos en la clase derivada.

  El especificador de acceso es
  opcional, pero si se omite el
  compilador lo tomará por
  defecto como private.
La derivación de clases
por el mecanismo de
herencia puede llegar a
muchos niveles de
profundidad, es decir,
una clase c1 puede
derivar de otra clase c2
que a su vez deriva de
otra clase c3 y así
sucesivamente.
• Son clases bases generales, que pueden
  utilizarse para crear nuevas clases
  derivadas en diversos planteamientos, de
  acuerdo a la particularidad que se requiera.

• Estas clases bases pueden ser programadas
  y colocadas como una librería genérica, su
  objetivo es evitar la redundancia.
• Ejemplo: Ubíquese en un planteamiento
  referido a un instituto educativo. Suponga
  que necesitamos crear una clase para el
  estudiante y otra clase para el profesor. De
  ambos se requiere guardar los datos de:
  cédula, nombre, dirección, …. (datos de
  identificación). Evidentemente definimos una
  clase base que podríamos llamar MPersona
  y luego creamos dos clases derivadas una
  MEstudiante y otra MProfesor.
• En otro instante, se requiere resolver un
  planteamiento de una empresa, para controlar
  la nómina de sus empleados. Por supuesto se
  necesita tener los datos de identificación de
  cada empleado (cédula, nombre, dirección,…..).
• ¿Qué hacemos?. Se podría crear para este
  planteamiento en particular una clase
  MEmpleado con todos sus atributos. Pero
  estamos      definiendo    y     programando
  nuevamente atributos y métodos que ya
  estaban en la clase MPersona del planteamiento
  anterior (REDUNDANCIA)
• SOLUCIÓN. Crear una clase base genérica
  llamada MPERSONA que puede ser utilizada
  en cualquier planteamiento que se requiera.
• Así también, existen diversos planteamientos
  en donde se debe trabajar con artículos (un
  supermercado, una venta de repuestos, una
  farmacia,…); de la misma manera podríamos
  crear una clase base genérica        llamada
  MARTICULO que mantenga los atributos y
  métodos generales para un artículo en
  cualquier ámbito.
Los ejemplos antes citados están relacionados
  con clases del modelo.
¿Qué ocurre con las clases de la vista?
• Podemos apreciar que en los planteamientos
  con los que se ha trabajado, en varias vistas se
  debe programar métodos para leer datos de
  tipo char, int, float…., entonces si se diseña
  una clase vista que contenga métodos
  generales, reusables, solo se programarían una
  vez. Esta clase de la vista la llamaremos
  VGeneral y será una clase base genérica.
NOTA: Se presentará posteriormente un
     material denominado «Tutorial
     para crear librerías genéricas», en
     donde se especifica los pasos que se
     deben seguir para trabajar con las
     librerías genéricas en C++
MPersona.h

//Clase Base Genérica   public:
#ifndef MPersona_H         MPersona();
#define MPersona_H         MPersona(string , string ...);
#include <string>          void SetCed(string c);
using namespace std;       void SetNombre(string n);
class MPersona             void SetFechaNac(string f);
{ protected:               string GetCed();
    string ced;            string GetNombre();
    string nombre;         string GetFechaNac();
    string fechanac;       ::::::
    :::::::             };
                        #endif
MPersona.cpp

  #include “MPersona.h”
  MPersona :: MPersona() {}
   ::::::::::
  void MPersona :: SetCed(string c)
  {
    :::::
  }
  string MPersona :: GetCed()
  {
    :::::
  }
    ::::::::::
MTrabajador.h
// Clase Derivada (subclase, hijo)
#ifndef MTrabajador_H
#define MTrabajador_H
#include “MPersona.h”
class MTrabajador : public MPersona
{ private:
     string fechaing;
     float sueldo;                        Clase Base
   public:                                 Genérica
     MTrabajador();
     MTrabajador(string c, string n, string fi, float s);
     void SetFechaIng(string fi);
     void SetSueldo(float s);
     string GetFechaIng();
     float GetSueldo();
}; #endif
MTrabajador.cpp
#include “MTrabajor.h”
MTrabajador::MTrabajador (){}
MTrabajador::MTrabajador (string c, string n,
{                         string fi, float s)
  :::::
}
void MTrabajador:: SetFechaIng(string fi)
{
  :::::
}
string MTrabajador:: GetFechaIng()
{
   :::::
}
::::::::::

Más contenido relacionado

La actualidad más candente

java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )brayan0015
 
Abstraction in java [abstract classes and Interfaces
Abstraction in java [abstract classes and InterfacesAbstraction in java [abstract classes and Interfaces
Abstraction in java [abstract classes and InterfacesAhmed Nobi
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesAlvaro Enrique Ruano
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesjmachado614
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Javaricardomore94
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 
Inheritance in oops
Inheritance in oopsInheritance in oops
Inheritance in oopsHirra Sultan
 
Conexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysqlConexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysqlROQUE Caldas Dominguez
 
polimorfismo
polimorfismopolimorfismo
polimorfismomiguel a
 
EASY TO LEARN INHERITANCE IN C++
EASY TO LEARN INHERITANCE IN C++EASY TO LEARN INHERITANCE IN C++
EASY TO LEARN INHERITANCE IN C++Nikunj Patel
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Josue Lara Reyes
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()Clara Patricia Avella Ibañez
 
Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractascodigosyalgomas
 

La actualidad más candente (20)

java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )
 
Abstraction in java [abstract classes and Interfaces
Abstraction in java [abstract classes and InterfacesAbstraction in java [abstract classes and Interfaces
Abstraction in java [abstract classes and Interfaces
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Poo en java herencia
Poo en java   herenciaPoo en java   herencia
Poo en java herencia
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Inheritance C#
Inheritance C#Inheritance C#
Inheritance C#
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Inheritance in oops
Inheritance in oopsInheritance in oops
Inheritance in oops
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
Conexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysqlConexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysql
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
 
Inheritance
InheritanceInheritance
Inheritance
 
EASY TO LEARN INHERITANCE IN C++
EASY TO LEARN INHERITANCE IN C++EASY TO LEARN INHERITANCE IN C++
EASY TO LEARN INHERITANCE IN C++
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
Clases abstractas e interfaces en java
Clases abstractas e interfaces en javaClases abstractas e interfaces en java
Clases abstractas e interfaces en java
 
Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractas
 

Destacado

POO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoPOO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoActimel
 
Microprogramacion.maria carrasco.advo polivalente pymes
Microprogramacion.maria carrasco.advo polivalente pymesMicroprogramacion.maria carrasco.advo polivalente pymes
Microprogramacion.maria carrasco.advo polivalente pymesMARIA JOSE CARRASCO PEREZ
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas umlUVM
 
Modificadores acceso
Modificadores accesoModificadores acceso
Modificadores accesonavarrow10
 
Análisis y Diseño OO 1
Análisis y Diseño OO 1Análisis y Diseño OO 1
Análisis y Diseño OO 1Jano González
 
Presentacion Proyecto POO
Presentacion Proyecto POOPresentacion Proyecto POO
Presentacion Proyecto POOAdán Silva
 
Laboratorio uml
Laboratorio umlLaboratorio uml
Laboratorio umlJhon St
 
95878125 sitema-de-farmacia
95878125 sitema-de-farmacia95878125 sitema-de-farmacia
95878125 sitema-de-farmaciaZuri At
 
Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Juan Carlos Espinoza
 
Mutaciones y reparacion del DNA
Mutaciones y reparacion  del DNAMutaciones y reparacion  del DNA
Mutaciones y reparacion del DNAelena_1
 
Mutaciones y reparación del adn
Mutaciones y reparación del adnMutaciones y reparación del adn
Mutaciones y reparación del adnJorge Vanegas
 
Proyecto de programacion orientada a objetos
Proyecto de programacion orientada a objetosProyecto de programacion orientada a objetos
Proyecto de programacion orientada a objetosdiana_jazmin
 
Mutagenos fisicos y quimicos
Mutagenos fisicos y quimicosMutagenos fisicos y quimicos
Mutagenos fisicos y quimicosJesi Garcia
 

Destacado (20)

POO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoPOO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y Polimorfismo
 
Modulo2 programaciondidacticmariacarrasco
Modulo2 programaciondidacticmariacarrascoModulo2 programaciondidacticmariacarrasco
Modulo2 programaciondidacticmariacarrasco
 
Microprogramacion.maria carrasco.advo polivalente pymes
Microprogramacion.maria carrasco.advo polivalente pymesMicroprogramacion.maria carrasco.advo polivalente pymes
Microprogramacion.maria carrasco.advo polivalente pymes
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Modificadores acceso
Modificadores accesoModificadores acceso
Modificadores acceso
 
Análisis y Diseño OO 1
Análisis y Diseño OO 1Análisis y Diseño OO 1
Análisis y Diseño OO 1
 
Presentacion Proyecto POO
Presentacion Proyecto POOPresentacion Proyecto POO
Presentacion Proyecto POO
 
Introduccion Orientada a Objetos
Introduccion Orientada a ObjetosIntroduccion Orientada a Objetos
Introduccion Orientada a Objetos
 
Laboratorio uml
Laboratorio umlLaboratorio uml
Laboratorio uml
 
95878125 sitema-de-farmacia
95878125 sitema-de-farmacia95878125 sitema-de-farmacia
95878125 sitema-de-farmacia
 
Atributos para transporte
Atributos para transporteAtributos para transporte
Atributos para transporte
 
Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.Metodos Get y Set, finalmente revelados.
Metodos Get y Set, finalmente revelados.
 
Proyecto poo
Proyecto pooProyecto poo
Proyecto poo
 
Mutaciones y reparacion del DNA
Mutaciones y reparacion  del DNAMutaciones y reparacion  del DNA
Mutaciones y reparacion del DNA
 
Mutaciones y reparación del adn
Mutaciones y reparación del adnMutaciones y reparación del adn
Mutaciones y reparación del adn
 
Proyecto de programacion orientada a objetos
Proyecto de programacion orientada a objetosProyecto de programacion orientada a objetos
Proyecto de programacion orientada a objetos
 
Mutaciones
MutacionesMutaciones
Mutaciones
 
Mutagenos fisicos y quimicos
Mutagenos fisicos y quimicosMutagenos fisicos y quimicos
Mutagenos fisicos y quimicos
 
Mutaciones
MutacionesMutaciones
Mutaciones
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 

Similar a Herencia

programacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netprogramacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netpp mm
 
C3 las clases en java v2
C3 las clases en java v2C3 las clases en java v2
C3 las clases en java v2Mariano Galvez
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxjuan gonzalez
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)KareliaRivas
 
Lenguaje de Programación Orientada a Objetos
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos Marielena Lujano
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc X
 
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfPROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfMariaTeresaGarznPrez
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnetjhordy2000
 
Que es una clase en java
Que es una clase en javaQue es una clase en java
Que es una clase en javaAndres Vasquez
 
Instructoria de Herencia en java
Instructoria de Herencia en javaInstructoria de Herencia en java
Instructoria de Herencia en javaJavier
 
Lenguajes de Programación: Herencia, Polimorfismo Y UML
Lenguajes de Programación: Herencia, Polimorfismo Y UMLLenguajes de Programación: Herencia, Polimorfismo Y UML
Lenguajes de Programación: Herencia, Polimorfismo Y UMLLuis Fernando Aguas Bucheli
 

Similar a Herencia (20)

Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Clasesyobjetos
ClasesyobjetosClasesyobjetos
Clasesyobjetos
 
Clase y Herencia en VB
Clase y Herencia en VBClase y Herencia en VB
Clase y Herencia en VB
 
JAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIAJAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIA
 
programacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netprogramacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic net
 
C3 las clases en java v2
C3 las clases en java v2C3 las clases en java v2
C3 las clases en java v2
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptx
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)
 
Herencia - Java
Herencia - JavaHerencia - Java
Herencia - Java
 
Lenguaje de Programación Orientada a Objetos
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfPROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnet
 
Que es una clase en java
Que es una clase en javaQue es una clase en java
Que es una clase en java
 
Aprendiendo objetos en c++
Aprendiendo objetos en c++Aprendiendo objetos en c++
Aprendiendo objetos en c++
 
Instructoria de Herencia en java
Instructoria de Herencia en javaInstructoria de Herencia en java
Instructoria de Herencia en java
 
Lenguajes de Programación: Herencia, Polimorfismo Y UML
Lenguajes de Programación: Herencia, Polimorfismo Y UMLLenguajes de Programación: Herencia, Polimorfismo Y UML
Lenguajes de Programación: Herencia, Polimorfismo Y UML
 

Herencia

  • 1.
  • 2. Generalización Especialización Herencia Concepto Clase base Vs. clases derivadas Ejemplos En UML Sintaxis en C++ Clases genéricas
  • 3. Propiedad que permite compartir información entre dos clases, su objetivo es evitar la redundancia. Surge, ya que con frecuencia entre algunos objetos existen atributos y métodos que son comunes. • Ejemplo: Lavadoras, Pulidoras, Neveras, Microondas, Tostadoras, Planchas, etc. son todos ELECTRODOMÉSTICOS. Ellos comparten algunas características comunes.
  • 4. Características Comunes de los Electrodomésticos • Son aparatos para el hogar • Necesitan corriente • Tienen un serial, garantía, costo,…
  • 5. • Proceso inverso a la Generalización. • En los Objetos existen atributos y métodos que son específicos (particulares) a cada objeto. • Ejemplo: Los Electrodomésticos (Lavadoras, Pulidoras, Neveras, Microondas, Tostadoras, Planchas, ...) Si bien es cierto que comparten algunas características (artefactos hogar, necesitan corriente, serial, garantía,..) también es cierto que cada uno tiene características y comportamiento propio (específico).
  • 6. Se utiliza solo para planchar ropa Se utiliza solo para tostar pan
  • 7. • La herencia o relación es-un, es una relación que se establece entre dos clases, que permite definir nuevas clases (específicas) a partir de una clase base ya existente (general). • Las nuevas clases creadas se denominan clases derivadas (clases hijas ó subclases) y heredan los atributos y métodos de la clase base (clase padre ó superclase), pudiendo las clases derivadas redefinir los métodos que hereda de la clase padre y añadir métodos propios.
  • 8. • Las clases derivadas son una especialización de la clase base. • La clase base es la generalización de las clases derivadas. Clase Base (Padre) ELECTRODOMÉSTICO Clase Derivada Clase Derivada (Hijo) (Hijo) Tostadora Plancha
  • 9. • En la clase base (superclase, padre) se encuentran los atributos y métodos que son comunes. • Las clases derivadas (subclases, hijas) además de las características comunes (localizadas en la superclase) tienen su propias características. • El objetivo final es la reutilización o reusabilidad de código anteriormente desarrollado. Con esto se reduce la cantidad de código redundante en componentes de las clases.
  • 10. Clase base (superclase) Atributo A , B Método X , Y Atributo A , B Atributo A , B Atributo A , B Método X , Y Método X , Y Atributo C Método X , Y Atributo D, E Método Z Método T Método W Clase derivada Clase derivada Clase derivada (subclase) (subclase) (subclase) La herencia supone una clase base y una Características jerarquía de clases que contienen clases comunes derivadas de la clase base. Las clases derivadas heredan los atributos y métodos de su clase base, Características añadiendo sus propios atributo(s) y método(s), específicas incluso puede cambiar aquellos elementos de la clase base que necesita sean diferentes.
  • 11. Es una herramienta poderosa que proporciona un marco adecuado para producir software fiable, comprensible, de bajo costo y reutilizable (no redundante).
  • 12. Clase base (superclase) PERSONA Clase derivada Clase derivada (subclase) (subclase) Clase derivada Clase derivada (subclase) (subclase) Clase derivada (subclase) Una secretaria es una persona Un médico es una persona …. Un estudiante es una persona
  • 13. Clase base (superclase) TRANSPORTE AÉREO TERRESTRE MARÍTIMO Clase derivada Clase derivada (subclase) (subclase) Clase derivada Clase derivada Clase derivada Clase derivada (subclase) (subclase) (subclase) (subclase) Un avión es un medio de transporte aéreo Un autobús es un medio de transporte terrestre …. Un velero es un medio de transporte marítimo. Todos a su vez son un medio de transporte
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. La declaración de herencia debe incluir la palabra reservada class, el nombre de la nueva clase, el especificador de acceso que indica el tipo de herencia (pública, privada o protegida) y el nombre de la clase base de la que se deriva.
  • 20. El formato general es el siguiente: Símbolo de derivación class NombreClaseDerivada : tipo_herencia NombreClaseBase { private: // nuevos miembros privados ……… específicos de clase derivada Especificador de public: acceso (private, // nuevos miembros públicos public, protected) normalmente …..…. específicos de clase derivada public };
  • 21.
  • 22. Como reglas se extrae: – Los componentes ó miembros privados en la clase base son inaccesibles (no utilizables) por la clase derivada, para todos los modos de derivación (private, protected, public). – Derivando en modo privado se obtienen miembros privados. – Derivando en modo protegido se obtienen miembros protegidos. – Derivando en modo público se respetan las características de los miembros de la clase base.
  • 23. Se dice que hay Herencia en C++, porque el compilador permite dependiendo del tipo de derivación, utilizar los atributos y métodos de una clases desde otra. La herencia permite que una jerarquía de clases sea construida, moviéndose desde la más general a la más específica. El proceso implica primero definir una clase base, que define características comunes a todos los objetos que se derivarán de ella y luego definir las clases derivadas.
  • 24. • En general, se debe utilizar la palabra reservada public como tipo de herencia ya que es la herencia más general, esto permite conseguir que todos los miembros que son públicos en la clase base permanezcan públicos en la clase derivada. El especificador de acceso es opcional, pero si se omite el compilador lo tomará por defecto como private.
  • 25. La derivación de clases por el mecanismo de herencia puede llegar a muchos niveles de profundidad, es decir, una clase c1 puede derivar de otra clase c2 que a su vez deriva de otra clase c3 y así sucesivamente.
  • 26. • Son clases bases generales, que pueden utilizarse para crear nuevas clases derivadas en diversos planteamientos, de acuerdo a la particularidad que se requiera. • Estas clases bases pueden ser programadas y colocadas como una librería genérica, su objetivo es evitar la redundancia.
  • 27. • Ejemplo: Ubíquese en un planteamiento referido a un instituto educativo. Suponga que necesitamos crear una clase para el estudiante y otra clase para el profesor. De ambos se requiere guardar los datos de: cédula, nombre, dirección, …. (datos de identificación). Evidentemente definimos una clase base que podríamos llamar MPersona y luego creamos dos clases derivadas una MEstudiante y otra MProfesor.
  • 28. • En otro instante, se requiere resolver un planteamiento de una empresa, para controlar la nómina de sus empleados. Por supuesto se necesita tener los datos de identificación de cada empleado (cédula, nombre, dirección,…..). • ¿Qué hacemos?. Se podría crear para este planteamiento en particular una clase MEmpleado con todos sus atributos. Pero estamos definiendo y programando nuevamente atributos y métodos que ya estaban en la clase MPersona del planteamiento anterior (REDUNDANCIA)
  • 29. • SOLUCIÓN. Crear una clase base genérica llamada MPERSONA que puede ser utilizada en cualquier planteamiento que se requiera. • Así también, existen diversos planteamientos en donde se debe trabajar con artículos (un supermercado, una venta de repuestos, una farmacia,…); de la misma manera podríamos crear una clase base genérica llamada MARTICULO que mantenga los atributos y métodos generales para un artículo en cualquier ámbito.
  • 30. Los ejemplos antes citados están relacionados con clases del modelo. ¿Qué ocurre con las clases de la vista? • Podemos apreciar que en los planteamientos con los que se ha trabajado, en varias vistas se debe programar métodos para leer datos de tipo char, int, float…., entonces si se diseña una clase vista que contenga métodos generales, reusables, solo se programarían una vez. Esta clase de la vista la llamaremos VGeneral y será una clase base genérica.
  • 31. NOTA: Se presentará posteriormente un material denominado «Tutorial para crear librerías genéricas», en donde se especifica los pasos que se deben seguir para trabajar con las librerías genéricas en C++
  • 32. MPersona.h //Clase Base Genérica public: #ifndef MPersona_H MPersona(); #define MPersona_H MPersona(string , string ...); #include <string> void SetCed(string c); using namespace std; void SetNombre(string n); class MPersona void SetFechaNac(string f); { protected: string GetCed(); string ced; string GetNombre(); string nombre; string GetFechaNac(); string fechanac; :::::: ::::::: }; #endif
  • 33. MPersona.cpp #include “MPersona.h” MPersona :: MPersona() {} :::::::::: void MPersona :: SetCed(string c) { ::::: } string MPersona :: GetCed() { ::::: } ::::::::::
  • 34. MTrabajador.h // Clase Derivada (subclase, hijo) #ifndef MTrabajador_H #define MTrabajador_H #include “MPersona.h” class MTrabajador : public MPersona { private: string fechaing; float sueldo; Clase Base public: Genérica MTrabajador(); MTrabajador(string c, string n, string fi, float s); void SetFechaIng(string fi); void SetSueldo(float s); string GetFechaIng(); float GetSueldo(); }; #endif
  • 35. MTrabajador.cpp #include “MTrabajor.h” MTrabajador::MTrabajador (){} MTrabajador::MTrabajador (string c, string n, { string fi, float s) ::::: } void MTrabajador:: SetFechaIng(string fi) { ::::: } string MTrabajador:: GetFechaIng() { ::::: } ::::::::::