Curso POO: Clase 4 Herencia

Tema en 'Programación & Programación Web' iniciado por cavoso, 9 Oct 2011.

  1. cavoso

    cavoso Usuario Casual nvl. 2
    2/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    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
    Insertar CODE, HTML o PHP:
    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
    Insertar CODE, HTML o PHP:
    <?
    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
    Insertar CODE, HTML o PHP:
    <?
    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
    Insertar CODE, HTML o PHP:
    <?
    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

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    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

    Insertar CODE, HTML o PHP:
    class persona
    no lo escriban en otro lado como

    Insertar CODE, HTML o PHP:
    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

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    tienes razon siempre deben esribir los parametros de la misma forma en todas partes
     
  4. pttmix

    pttmix Usuario Nuevo nvl. 1
    17/41

    Registrado:
    13 Ene 2007
    Mensajes:
    381
    Me Gusta recibidos:
    3
    vale cavoso, super bien me quedo claro thank
     
  5. VenenoxHC

    VenenoxHC Usuario Casual nvl. 2
    37/41

    Registrado:
    30 Nov 2008
    Mensajes:
    1.780
    Me Gusta recibidos:
    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

    Registrado:
    14 Jun 2011
    Mensajes:
    377
    Me Gusta recibidos:
    0
    oh se agradece men :D me servirá bastante !
     
  7. cavoso

    cavoso Usuario Casual nvl. 2
    37/41

    Registrado:
    31 May 2008
    Mensajes:
    2.727
    Me Gusta recibidos:
    13
    eso espero para eso lo cree
     
  8. Dozzie

    Dozzie Usuario Nuevo nvl. 1
    17/41

    Registrado:
    3 May 2006
    Mensajes:
    153
    Me Gusta recibidos:
    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

    Registrado:
    30 Nov 2010
    Mensajes:
    67.638
    Me Gusta recibidos:
    11
    Gracias !
     
  10. Aguil@

    Aguil@ Usuario Habitual nvl.3 ★
    197/244

    Registrado:
    10 Oct 2007
    Mensajes:
    13.935
    Me Gusta recibidos:
    38
    Muchas gracias !
     
  11. Merovingio

    Merovingio Usuario Habitual nvl.3 ★
    187/244

    Registrado:
    20 Mar 2009
    Mensajes:
    33.491
    Me Gusta recibidos:
    6
    se agradece
     
  12. Lateralus.-

    Lateralus.- Usuario Nuevo nvl. 1
    2/41

    Registrado:
    23 Feb 2009
    Mensajes:
    0
    Me Gusta recibidos:
    3