Curso POO: Clase 4 Herencia

Discussion in 'Programación & Programación Web' started by cavoso, Oct 9, 2011.

  1. cavoso

    cavoso Usuario Casual nvl. 2
    2/41

    Joined:
    May 31, 2008
    Messages:
    2,727
    Likes Received:
    13
    Una caracteristica importante de la Programacion Orientada a Objeto (POO) es la herencia, en php se puede heredar una solo class padre o super class, sin embargo esta super class puede tener multiple class hijas, para poder agregar una class hija llamando a una class padre se utiliza la funcion
    Code:
    extends
    lo que hace la herencia es dar la posibilidad de utilizar los atributos y metodos de la class padre a la class hijo, la idea es que la class padre contenga todos los metodos y atributos generales de lo respectivo a la class es decir que si creamos la class persona, esta puede tener atributos como id, nombre y apellido, pero podemos crear una class hija llamada empleado la cual contenga el cargo, el codigo de seguridad y algun otro factor propio del empleado, tambien podemos crear una class cliente la cual contenga datos del cliente propios de este como serian nº de cuenta, password u otro.

    como pueden ver en ese ejemplo una class padre puede tener varias class hija, pero una class hija solo puede tener una class padre, almenos esta es una regla en php, en otros lenguajes se pueden tener varias class padre.

    acontinuacion les mostrare un ejemplo para utilizar la herencia para una empresa utilizando una class padre y una class hija.

    class padre: class_persona.php
    Code:
    <?
    class persona{
        protected $id;
        protected $nombre;
    public function __construct($nom){
        $this->nombre=$nom;
    }
    public function id($id1){
    $this->id=$id1;
    }
    }
    ?>
    
    class hija: class_empleado.php
    Code:
    <?
    class empleado extends persona{
        protected $cargo;
    public function cargo($cargo1){
    $this->cargo=$cargo1;
    }
    public function graficar(){
    echo "El id es: ".$this->id." y el cargo es: ".$this->cargo.", el nombre es ".$this->nombre;
    }
    }
    ?>
    
    archivo de muestra: index.php
    Code:
    <?
    require_once "class/class_persona.php";
    require_once "class/class_empleado.php";
    $empleado= new empleado($_GET["nombre"]);
    $empleado->id($_GET["id"]);
    $empleado->cargo($_GET["cargo"]);
    $empleado->graficar();
    echo '<a href="index.php?id=1&cargo=webmaster&nombre=portanet">Ejemplo</a>';
    ?>
    
    como pueden ver en este ejemplo usamos un solo constructor, la mayoria pensaria en usar un constructor en cada class pero debido a que en la class persona tiene un constructor y que la class hija adquiere todos los atributos de la class padre la class hija ya tiene un constructor y si se le colocara otro daria un error, cualquier consuta sobre herencia me la dejan aqui
     
  2. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Joined:
    Oct 10, 2007
    Messages:
    13,935
    Likes Received:
    38
    gracias viejo ...solo una recomendacion para programadores new asi como yo , traten de escribir todo igual en las diferentes classes y funciones ,etc ...me refiero

    Code:
    class persona
    no lo escriban en otro lado como

    Code:
    class Persona
    y asi ...una letra y quizas no funcione tu codigo ,lo mismo con

    ' ' y " " ,
    o
    ; y ,
    es solo un "Tipp".
    gracias cavoso!!
     
  3. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Joined:
    May 31, 2008
    Messages:
    2,727
    Likes Received:
    13
    tienes razon siempre deben esribir los parametros de la misma forma en todas partes
     
  4. pttmix

    pttmix Usuario Nuevo nvl. 1
    17/41

    Joined:
    Jan 13, 2007
    Messages:
    381
    Likes Received:
    3
    vale cavoso, super bien me quedo claro thank
     
  5. VenenoxHC

    VenenoxHC Usuario Casual nvl. 2
    37/41

    Joined:
    Nov 30, 2008
    Messages:
    1,780
    Likes Received:
    1
    weeeenaaa te las mandaste denuevo, cavoso eres un groso!

    MUXISIMAS GRACIAS COMPADRE!

    he aprendido caleta wn vale, encerio!.
     
  6. andresxe

    andresxe Usuario Nuevo nvl. 1
    16/41

    Joined:
    Jun 14, 2011
    Messages:
    377
    Likes Received:
    0
    oh se agradece men :D me servirá bastante !
     
  7. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Joined:
    May 31, 2008
    Messages:
    2,727
    Likes Received:
    13
    eso espero para eso lo cree
     
  8. Dozzie

    Dozzie Usuario Nuevo nvl. 1
    17/41

    Joined:
    May 3, 2006
    Messages:
    153
    Likes Received:
    0
    Vale compadre...
    He estado viendo harto también los de abstracción y el uso de los protected, si puedes hablar más de ello
    se agradece byee
     
  9. e-Xploit

    e-Xploit Usuario Maestro nvl. 6 ★ ★ ★ ★
    687/812

    Joined:
    Nov 30, 2010
    Messages:
    67,638
    Likes Received:
    11
    Gracias !
     
  10. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Joined:
    Oct 10, 2007
    Messages:
    13,935
    Likes Received:
    38
    Muchas gracias !
     
  11. Merovingio

    Merovingio Usuario Habitual nvl.3 ★
    187/244

    Joined:
    Mar 20, 2009
    Messages:
    33,491
    Likes Received:
    6
    se agradece
     
  12. Lateralus.-

    Lateralus.- Usuario Nuevo nvl. 1
    2/41

    Joined:
    Feb 23, 2009
    Messages:
    0
    Likes Received:
    3