23.3 Instancia

 

La instancia es el ejemplar perteneciente a una clase. Vamos a ir “picando” código para ello nos creamos dentro de nuestra carpeta PHP donde estamos guardando los ejemplos que estamos realizando a lo largo del tutorial otra carpeta a la que vamos a llamar POO, aquí en este directorio vamos a guardar todos los ejemplos relacionados con la POO.

Creamos un archivo PHP con el nombre de cohe.php, lo primero que vamos a hacer es crearnos la clase Coche:

            <?php

            class Coche {

            }

            ?>

El nombre de la clase tiene que ir la primera letra en mayúscula. Ya hemos creado la clase que se crea con la palabra reservada class. Ahora creamos una instancia de la clase Coche:

                  <?php

            class Coche {

            }

            new Coche();

            ?>

Sin embargo, hay muchos tipos de coche, está el Renault, KIA, Ford… creamos una instancia o ejemplar de la clase Coche:

            <?php

            class Coche {

            }

            $renault = new Coche();

            $ford = new Coche();

            ?>

El coche tiene una serie de propiedades que en programación las declaramos como variables con la palabra reservada var:

<?php      

class Coche {

                  var $ruedas;

                  var $color;

                  var $motor;

            }

            $renault = new Coche();

            $ford = new Coche();

            ?>

Los comportamientos del coche se declaran con funciones:

<?php

            class Coche {

                  var $ruedas;

                  var $color;

                  var $motor;

 

                  function arrancar(){

                  }

                  function girar(){

                  }

                  function frenar(){     

                  }

            }

            $renault = new Coche();

            $ford = new Coche();

            ?>

Para darle un estado inicial a las propiedades del objeto Coche lo hacemos con una función especial llamada constructor.

<?php

            class Coche {

                  var $ruedas;

                  var $color;

                  var $motor;

                  function Coche(){

                        $this->ruedas=4;

                        $this->color="";

                        $this->motor=1600;

                  }

                  function arrancar(){

 

                  }

                  function girar(){

                  }

                  function frenar(){

                  }

            }

            $renault = new Coche();

            $ford = new Coche();

            ?>

El constructor tiene que tener el mismo nombre que la clase. La palabra reservada this se refiere a las variables o propiedades de la clase.

Con las funciones vamos a escribir un echo para que nos imprima el comportamiento.

            <?php

            class Coche {

                  var $ruedas;

                  var $color;

                  var $motor;

                  function Coche(){

                        $this->ruedas=4;

                        $this->color="";

                        $this->motor=1600;

                  }

                  function arrancar(){

 

                        echo "Estoy arrancando <br>";

                  }

                  function girar(){

                        echo "Estoy girando <br>";

                  }

                  function frenar(){

                        echo "Estoy frenando <br>";

                  }

            }

            $renault = new Coche();

            $ford = new Coche();

            ?>

Ahora vamos a indicar a los objetos de la clase Coche las propiedades o comportamiento que tienen:

<?php

            class Coche {

                  var $ruedas;

                  var $color;

                  var $motor;

                  function Coche(){

                        $this->ruedas=4;

                        $this->color="";

                        $this->motor=1600;

                  }

                  function arrancar(){

                        echo "Estoy arrancando <br>";

                  }

                  function girar(){

                        echo "Estoy girando <br>";

                  }

                  function frenar(){

                        echo "Estoy frenando <br>";

                  }

            }

            $renault = new Coche();

            $ford = new Coche();

            $renault->girar();

            echo $ford->ruedas;

            ?>

Si ejecutamos el archivo en el navegador:



Si nos fijamos en el código no hemos inicializado la variable color:

$this->color="";

Vamos a crear un método que establezcamos como parámetro el color y al crear el objeto pasarle como parámetro el color:

                  function establece_color($color_coche){

                  $this->color=$color_coche;

                  echo "El color de este coche es " . $this->color;

                  }

En la instancia:

$renault -> establece_color("Azul");

Si probamos: 



Podemos también pasarle el objeto por parámetro:

function establece_color($color_coche, $nombre_coche){

                        $this->color=$color_coche;

                        echo "El color de " . $nombre_coche . " es " . $this->color;

                  }

En el objeto:

$renault->establece_color("Azul", "Renault");

Si lo probamos en el navegador:



Hemos creado la clase Coche podemos crear en un mismo archivo otra clase similar. Borramos las instancias, seleccionamos todo el código PHP lo copiamos y lo vamos a pegar en un archivo PHP nuevo llamado vehículos. A continuación del final de la clase Coche vamos a volver a pegar de nuevo el código, con una serie de modificaciones:

                        <?php

            class Coche {

                  var $ruedas;

                  var $color;

                  var $motor;

                  function Coche(){

                        $this->ruedas=4;

                        $this->color="";

                        $this->motor=1600;

                  }

                  function arrancar(){

                        echo "Estoy arrancando <br>";

                  }

                  function girar(){

                        echo "Estoy girando <br>";

                  }

                  function frenar(){

                        echo "Estoy frenando <br>";

                  }

                  function establece_color($color_coche, $nombre_coche){

                        $this->color=$color_coche;

                        echo "El color de " . $nombre_coche . " es " . $this->color;

 

                  }

            }

            class Camion {

                  var $ruedas;

                  var $color;

                  var $motor;

                  function Camion(){

                        $this->ruedas=8;

                        $this->color="";

                        $this->motor=2600;

                  }

                  function arrancar(){

                        echo "Estoy arrancando <br>";

                  }

                  function girar(){

                        echo "Estoy girando <br>";

                  }

                  function frenar(){

                        echo "Estoy frenando <br>";

                  }

            }

            ?>

En la clase Camion hemos eliminado el método establece_color. Nos volvemos a crear un nuevo archivo PHP uso_vehiculos.php, cuyo código:

<?php

include("vehiculos.php");

$Kia = new Coche();

$Pegaso = new Camion();

echo "El KIA tiene " . $Kia->ruedas . " ruedas.<br>";

echo "El Pegaso tiene " . $Pegaso->ruedas . " ruedas.";

?>

Mediante la función include le pasamos el archivo donde están creadas las clases. Instanciamos el objeto Coche y Camión, le indicamos que nos salga impreso en el navegador el número de ruedas que tiene cada uno, probamos:



23.2 Clase << >> 23.4 Herencia



Buscar este blog