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



23.1 ¿Qué es la POO?

 

La Programación Orientada a Objetos (POO) es trasladar el concepto y comportamiento de los objetos de la vida real al código de programación.

El objetivo es la reutilización de código y hacer más fácil la programación.

Un objeto, por ejemplo, un coche. El coche tiene una serie de propiedades, atributos o características y unos comportamientos.

·         Objeto

o    Tiene propiedades (atributos):

§  Color

§  Peso

§  Alto

§  Largo

o    Tiene un comportamiento (¿Qué es capaz de hacer?)

§  Arrancar

§  Frenar

§  Girar

§  Acelerar

22. PARÁMETROS POR FUNCIÓN YREFERENCIA << >> 23.2 Clase



22. PARÁMETROS POR FUNCIÓN Y REFERENCIA

 

Parámetros por función y referencia

·         Por valor

function ejemplo ($param){

$param++;

}

·         Por referencia

function ejemplo (&$param){

$param++;

}

Vamos a ver un ejemplo con una función pasada por valor:

                  <?php

            function incrementa($valor){

                  $valor++;

                  return $valor;

            }

            echo incrementa(5);

            ?>

Si ejecutamos este script nos va a dar un resultado de 6 ya que el número que le pasamos la función lo que hace es incrementarlo. Si hacemos esto:

            <?php

            function incrementa($valor){

                  $valor++;

                  return $valor;

            }

            $numero=5;

            echo incrementa($numero);

            ?>

Es el mismo resultado, nos incrementa a 6. Si hacemos esto:

            <?php

            function incrementa($valor){

                  $valor++;

                  return $valor;

            }

            $numero=5;

            echo incrementa($numero) . "<br>";

            echo $numero;

            ?>

Si tenemos la variable $numero que vale 5 la pasamos por parámetro a la función nos la va a incrementar en 6, pero en el segundo echo la variable sigue valiendo 5, ya que la función tiene en cuenta lo que le hemos pasado por parámetro, no tiene en cuenta que en el resto del código esa variable valga 5 u otro valor.



Si ahora en lugar de pasarla por valor la pasamos por referencia:

                  <?php

            function incrementa(&$valor){

                  $valor++;

                  return $valor;

            }

            $numero=5;

            echo incrementa($numero) . "<br>";

            echo $numero;

            ?>

Por referencia sí que va a tener en cuenta la variable $numero fuera de la función por lo que va a imprimir dos 6



Vemos otro ejemplo:

<?php

            function cambia_mayus($param){

                  $param=strtolower($param);

                  $param=ucwords($param);

                  return $param;

            }

            $cadena="hOLA mUnDo";

            echo cambia_mayus($cadena) . "<br>";

            echo $cadena;

            ?>

Lo que le indicamos que la cadena de texto que le pasamos nos la convierta en minúscula y después la primera letra de cada palabra en mayúscula, pero solo va a tener en cuenta el parámetro que le pasamos, no va a tener en cuenta fuera de la función como está construida esa frase si en mayúscula o minúscula, o algunas mayúsculas o minúsculas.



Si pasamos la función por referencia:

            <?php

            function cambia_mayus(&$param){

                  $param=strtolower($param);

                  $param=ucwords($param);

 

                  return $param;

            }

            $cadena="hOLA mUnDo";

            echo cambia_mayus($cadena) . "<br>";

            echo $cadena;

            ?>

Por referencia sí que tiene en cuenta y mantiene el valor de la variable que le pasamos por parámetro:



21. FUNCIONES << >> 23. PROGRAMACIÓN ORIENTADA A OBJETOS



21. FUNCIONES

 

Ya hemos visto anteriormente las funciones pero en esta ocasión las vamos a ver de una forma más profundizada. Las funciones permiten automatizar tareas. Esto permite eliminar código repetitivo en los programas.

Ejemplo: necesitamos que nuestros programas realicen un cálculo concreto. Creamos una función que realice dicho cálculo y utilizamos la función las veces que sea necesario en nuestros programas.

Hay dos tipos:

·         Funciones predefinidas: vienen con el lenguaje PHP

·         Funciones propias: las crea el programador con el objetivo de reutilizarlas en el futuro.

Las funciones que vienen con PHP las podemos ver aquí: PHP: Listado de Funciones y Métodos - Manual



Están ordenadas de forma alfabética, si queremos tener información de una de ellas, pulsamos:



Por ejemplo la función strtolower nos convierte un string a minúsculas, tiene una descripción. Si lo vemos en un ejemplo:

                  <?php

            $nombre="PACO";

            echo (strtolower($nombre));

            ?>

Si lo vemos en el navegador:



Nos ha convertido la palabra en minúscula.

Un ejemplo de función creada por nosotros mismos:

            <?php

            function suma($num1, $num2){

                  $resultado = $num1+$num2;

 

                  return $resultado;

            }

            ?>

Hemos creado una función a la que le hemos pasado dos parámetros, dos variables. Lo que va a hacer la función es una operación de suma, la palabra return nos devuelve el resultado. Llamamos a la función pasándole dos variables o parámetros:

<?php

            function suma($num1, $num2){

                  $resultado = $num1+$num2;

                  return $resultado;

            }

            echo suma(5, 7);

            ?>

Al llamar a la función le hemos pasado dos valores, entra en la función y realiza la suma que nos devuelve el resultado que se almacena en la variable $resultado.

Vamos a realizar otro ejemplo que sea una función que nos pase una frase de mayúscula a minúscula y que sea capaz de convertir la primera letra de todas las palabras que componen el String en mayúscula.

            <?php

            function frase_mayus($frase, $conversion=true){

                  $frase=strtolower($frase);

                  if($conversion==true){

                        $resultado=ucwords($frase);

                  }else {

                        $resultado=strtoupper($frase);

 

                  }

                  return $resultado;

            }

            ?>

Llamamos a la función:

            <?php

            function frase_mayus($frase, $conversion=true){

                  $frase=strtolower($frase);

                  if($conversion==true){

                        $resultado=ucwords($frase);

                  }else {

                        $resultado=strtoupper($frase);

                  }

                  return $resultado;

            }

            echo frase_mayus("esto es una prueba");

            ?>

Si lo ejecutamos:



Al no pasarle el segundo parámetro PHP lo ha cogido por defecto que la variable $conversion es true por lo que se ha ejecutado el primer condicional if. Si le pasamos el segundo parámetro a false:

            <?php

            function frase_mayus($frase, $conversion=true){

                  $frase=strtolower($frase);

                  if($conversion==true){

                        $resultado=ucwords($frase);

                  }else {

                        $resultado=strtoupper($frase);

                  }

                  return $resultado;

            }

            echo frase_mayus("esto es una prueba", false);

            ?>

Se va a ejecutar el else, nos va a convertir la frase en mayúscula:



20. BUCLE FOR << >> 22. PARÁMETROSPOR VALOR Y REFERENCIA



Buscar este blog