Conoce la programación orientada a objetos (2da parte)

En el anterior artículo te hablé sobre la importancia que tiene trabajar con la programación orientada a objetos ya que este paradigma ayuda a clasificar, ordenar nuestro código de tal forma que podemos modularizar cada uno de los componentes que vaya a conformar nuestra aplicación web.

Ahora hablaré de los constructores ya que estos nos permiten inicializar los atributos de nuestra clase, continuando con nuestro ejemplo del restaurante y los platillos vamos a crear nuestra clase que van a contener tanto atributos como métodos pero también haremos uso del constructor.

[php]
<?php
class platillo
{
private $nombre;
private $precio;
public function __construct($nom, $prec)
{
$this->nombre=$nom;
$this->precio=$prec;
}
public function vender()
{
echo «Se procederá a vender el platillo «.$this->nombre.» , con precio «.$this->precio.» USD.»;
}
}
?>
[/php]

Como puedes observar se creó una clase llamada platillo y esta contendrá dos atributos privados $nombre y $precio y seguido se creó un constructor para inicializar los valores de los atributos, este constructor es un método pre diseñado que tiene PHP que nos permite inicializar estos atributos, este método siempre lo definiremos como público. Posteriormente hemos creado un método vender() en el que podríamos desarrollar el código para realizar la respectiva venta, por ejemplo podemos realizar un insert a la base de datos para procesar la venta, para este ejemplo simplemente imprimí un mensaje donde nos indica que se procederá a realizar una venta del platillo, si te das cuenta dentro de la función vender hemos hecho uso de nuestros atributos que inicializamos en el constructor.

A continuación te mostraré el código donde creamos nuestro objeto y llamamos al método vender para que nos muestre el respectivo mensaje:

[html]
<!DOCTYPE html>
<html lang=»es»>
<head>
<meta charset=»UTF-8″ />
<title>Platillos</title>
</head>
<body>
<?php
require_once(«class.php»);
$venta_platillo = new platillo(«Mariscos», 50);
$venta_platillo->vender();
?>
</body>
</html>
[/html]

Este código contiene una estructura HTML ya que sera esta la página que se mostrará en el navegador, pero vamos a enfocarnos en el código PHP que se encuentra dentro la etiqueta body. Bueno primeramente hemos hecho una llamada al archivo class.php que es donde se encuentra nuestra clase platillo, posterior a eso creamos un objeto llamado $venta_platillo y con la sentencia new realizamos la instancia a la clase platillo y si te das cuenta le mandamos dos parámetros que justamente son los que inicializamos en nuestro constructor de la clase platillo, estos parámetros son el nombre del platillo «Mariscos» y su respectivo precio que en este caso es de 50 y solo nos queda llamar al método vender que nos imprimirá el mensaje:

«Se procederá a vender el platillo Mariscos , con precio 50 USD. «

Puedes probar el código, yo te recomiendo que lo hagas en dos archivos distintos para así mantener tu código mas ordenado, puedes tener un archivo llamado class.php el cual contendrá tu clase platillo y todos los métodos asociados a esta clase y después otro archivo que puede ser venta.php que contendrá la creación de los objetos, instancias y llamada a todos los métodos necesarios.


Para finalizar quiero hablarte de un concepto mas avanzado como ser herencia que es la interacción entre clases, nosotros podemos crear una clase padre donde los atributos lo definiremos de tipo protected esto con el fin de que otras clases que vayamos a crear posteriormente dispongan de los atributos de la clase padre.

Para que lo entiendas mejor te lo mostraré con otro ejemplo, vamos a proseguir con nuestro restaurante y los platillos, supongamos que tenemos una variedad de carnes, cuando se realiza un pedido de un platillo que contengan carnes este tendrá un precio adicional unicamente para las carnes, entonces vamos a crear una clase padre que será platillos y otra clase hijo que será  carnes, cada vez que un comensal pida un platillo de carnes se le debe cobrar un monto adicional, vamos al código:

[php]
<?php
class platillo
{
protected $nombre;
protected $precio;
protected $precio_total;
public function __construct($nom, $prec)
{
$this->nombre=$nom;
$this->precio=$prec;
}
public function vender()
{
echo «Se procederá a vender el platillo «.$this->nombre.» , con precio «.$this->precio.» USD. <br />»;
}
}

class carnes extends platillo
{
public function crear_platillo()
{
$precio_adicional = 20;
$this->precio_total = $precio_adicional + $this->precio;
return $this->precio_total;
}
}
?>
[/php]

Como puedes observar acá ya definimos dos clases, una clase padre llamado platillo que contiene sus atributos de tipo protected, su respectivo constructor y su función vender, despues creamos otra clase hijo llamado carnes y si te das cuenta utilizamos una sentencia extends esto es clave porque acá le indicamos que esta clase carnes va heredar todo lo que contenga su clase padre platillo tanto sus atributos, constructor como también su método vender. Esta clase hijo llamado carnes tiene una función crear_platillo el cual realizará una operación de suma entre el precio normal del platillo mas el adicional por ser un platillo de carnes y retornará este resultado.

Ahora vamos a ver el código donde creamos el objeto y su instancia para proceder a llamar a los métodos necesarios:

[html]
<!DOCTYPE html>
<html lang=»es»>
<head>
<meta charset=»UTF-8″ />
<title>Platillos</title>
</head>
<body>
<?php
require_once(«temp.php»);

$platillo_carne = new carnes(«Milanezas», 100);
$platillo_carne -> vender();
echo «Como pidió una platillo de carnes el total de su pedido será «.$platillo_carne->crear_platillo().» USD.»;
?>
</body>
</html>
[/html]

En este código creamos un objeto $platillo_carne de la clase carnes y le mandamos dos parámetros «Milanezas» que es el tipo de platillo y tambien le mandamos el precio que es de 100, si te das cuenta al mandar esos parámetros hacemos uso del constructor de la clase platillo, y eso es gracias a la herencia ya que la clase carnes esta heredando del padre platillo, posteriormente llamamos al método vender ya que también se lo hereda y seguido de eso mostramos en pantalla el total del pedido junto con el resultado de la suma adicional por ser un platillo de carne es decir 100 + 20 = 120.

Entonces lo que nos mostrará en pantalla será lo siguiente:

«Se procederá a vender el platillo Milanzas , con precio 100 USD.
Como pidió una platillo de carnes el total de su pedido será 120 USD.»


Si bien la POO nos ayuda a ordenar, clasificar y modularizar nuestro código te habrás dado cuenta que junto con la herencia puede llegar hasta optimizar nuestro código y mantener mas organizado nuestros módulos por el simple hecho de que con la herencia existe cierta colaboración entre clases.

Y ahora dime tu que te pareció trabajar con la POO junto con la herencia? o que aspectos mas debemos tomar en cuenta, puedes dejar un comentario y si el artículo te pareció interesante pues no dudes en compartirlo.

Saludos!

firma emm

5 respuestas a «Conoce la programación orientada a objetos (2da parte)»

    1. Hola Enrique, gracias por comentar, que bueno que te sean útiles los artículos, próximamente estaré hablando sobre Frameworks PHP y pronto habilitare un newsletter para que puedan suscribirse para poder mandarles material extra. Saludos!

  1. Me alegra mucho a ver encontrado este tipo de articulos, en donde se explica a la perfección el tema de POO.

    Muchas gracias por crear este tipo de articulos.

    Excelente.

    1. Hola Alexander, gracias a ti por el comentario y por pasarte por mi blog, te recomiendo seguir los siguientes artículos están bastante interesantes. Saludos!!!

  2. Excelente información, me sirvió para hacer un ejemplo de una cafetería que vende únicamente bebidas. Así pude entender y explicar fácilmente los conceptos de la POO.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *