Programación orientada a objetos con PHP (I), para empezar.

Programación orientada a objetos

 

Programación orientada a objetos (POO) con PHP

La Programación Orientada a Objetos (abreviada usualmente como “POO” o, en inglés, “OOP”) es un paradigma de programación basado en “objetos”, que contienen atributos que los caracterizan así como métodos (acciones que pueden realizar estos objetos) para interactuar.

Una clase puede tener sus propias constantes, variables (llamadas «propiedades»), y funciones (llamados «métodos»).

Un objeto refleja algo de la vida real, un elemento del universo que se desea representar.

Para esto cuenta con características propias (atributos), que tendrán un estado o un valor determinado.

Además, tiene comportamientos y responsabilidades propios, los cuales se implementan mediante “métodos”. Mediante los objetos se intenta “modelar” aquellos elementos que componen una solución de software, por lo que pueden crearse objetos muy diversos a la medida de las necesidades.

Por ejemplo, si se está diseñando un programa para gestionar las ventas de una empresa, probablemente haya objetos como “Artículo”, “Venta”, “Cliente”, “Vendedor”, etc.

La programación orientada a objetos se considera más avanzada y eficiente que el estilo de programación procedimental .

Esta eficiencia se debe al hecho de que admite una mejor organización del código, proporciona modularidad y reduce la necesidad de repetirnos.

Dicho esto, aún podemos preferir el estilo de procedimiento en proyectos pequeños y simples. Sin embargo, a medida que nuestros proyectos crecen en complejidad, es mejor usar el estilo orientado a objetos.

Clases, objetos, métodos y propiedades.

Con este tutorial, vamos a dar nuestros primeros pasos en el mundo de la programación orientada a objetos aprendiendo los términos más básicos en el campo:

  • clases
  • objetos
  • propiedades
  • métodos

 

esquema programacion objetos

 

Una clase es una plantilla para la creación de objetos de datos según un modelo predefinido.

Las clases se utilizan para representar entidades o conceptos. Cada clase es un modelo que define un conjunto de variables y métodos apropiados para operar con dichos datos.

Cada objeto creado a partir de la clase se denomina instancia de la clase.

¿Cómo crear clases?

Para crear una clase , agrupamos el código que maneja un determinado tema en un solo lugar. Por ejemplo, podemos agrupar todo el código que maneja a los usuarios de un blog en una clase, todo el código que está involucrado con la publicación de las publicaciones en el blog en una segunda clase, y todo el código dedicado a comentarios en una tercera clase.

Para nombrar la clase, se acostumbra usar un sustantivo singular que comienza con una letra mayúscula. Por ejemplo, podemos agrupar un código que maneja usuarios en una clase de Usuario , el código que maneja publicaciones en una clase de Publicación y el código que se dedica a comentarios en una clase de Comentario .

Para el ejemplo que se muestra a continuación, crearemos una clase Coche en la que agruparemos todo el código que tiene algo que ver con los autos.

class Coche {
// el código... 
}

 

  • Declaramos la clase con la palabra clave class .
  • Escribimos el nombre de la clase y escribimos con mayúscula la primera letra.
  • Si el nombre de la clase contiene más de una palabra, capitalizamos cada palabra. Esto se conoce como upper camel case . Por ejemplo, JapaneseCars , AmericanIdol , EuropeTour , etc.
  • Rodeamos el cuerpo de la clase entre llaves. Dentro de las llaves, ponemos nuestro código.

 

¿Cómo agregar propiedades a una clase?

Llamamos propiedades a las variables dentro de una clase. Las propiedades pueden aceptar valores como cadenas, enteros y booleanos (valores verdadero / falso), como cualquier otra variable.

Agreguemos algunas propiedades a la clase Coche .

class Coche { 
public $comp; 
public $color = 'beige' ; 
public $techoSolar = true; 
}

 

  • Ponemos la palabra clave public delante de una propiedad de clase.
  • La convención de nomenclatura es comenzar el nombre de la propiedad con una letra minúscula.
  • Si el nombre contiene más de una palabra, todas las palabras, excepto la primera palabra, comienzan con una letra mayúscula. Por ejemplo, $color o $techoSolar .
  • Una propiedad puede tener un valor predeterminado. Por ejemplo, $color = ‘beige .
  • También podemos crear una propiedad sin un valor predeterminado. Vea la propiedad $comp en el ejemplo anterior.

 

¿Cómo crear objetos a partir de una clase?

Podemos crear varios objetos de la misma clase, y cada objeto tiene su propio conjunto de propiedades.

Para trabajar con una clase, necesitamos crear un objeto a partir de ella. Para crear un objeto, usamos la palabra clave new.

Por ejemplo:

$opel = new Coche();

 

  • Creamos el objeto $opel de la clase Coche con la palabra clave new.
  • El proceso de crear un objeto también se conoce como instanciación.

Podemos crear más de un objeto de la misma clase.

$opel = new Coche(); 
$audi = new Coche();
$seat = new Coche();

De hecho, podemos crear tantos objetos como queramos de la misma clase, y luego dar a cada objeto su propio conjunto de propiedades.

 

Objetos, ¿para qué sirven?

Mientras que en el estilo de programación de procedimiento, todas las funciones y variables se unen en el ámbito global de una manera que permite su uso simplemente llamando su nombre, el uso de clases hace que cualquier cosa dentro de las clases se oculte del ámbito global.

Esto se debe a que el código dentro de las clases está encapsulado dentro del alcance de la clase , fuera del alcance del alcance global. Por lo tanto, necesitamos una forma de permitir que el código del ámbito global use el código dentro de la clase, y lo hacemos creando objetos a partir de una clase.

Digo objetos, y no objeto, porque podemos crear tantos objetos como queramos de la misma clase y todos compartirán los métodos y propiedades de la clase.

 

De la misma clase Coche , creamos tres objetos individuales con el nombre de: Opel , Audi y Seat .

Aunque todos los objetos se crearon a partir de la misma clase y, por lo tanto, tienen los métodos y propiedades de la clase, siguen siendo diferentes.

Esto no es solo porque tienen nombres diferentes, sino también porque pueden tener valores diferentes asignados a sus propiedades. Por ejemplo, se pueden diferenciar  por la propiedad de color: uno puede ser verde, mientras que otro puede ser azul y el otro naranja.

 

Una clase contiene los métodos y propiedades que comparten todos los objetos que se crean a partir de ella.  Aunque los objetos comparten el mismo código, pueden comportarse de manera diferente porque pueden tener diferentes valores asignados a ellos.

 

¿Cómo obtener las propiedades de un objeto?

Una vez que creamos un objeto, podemos obtener sus propiedades.

  • Para obtener una propiedad, escribimos el nombre del objeto, y luego un guión mayor que (->), y luego el nombre de la propiedad.
  • Tenga en cuenta que el nombre de la propiedad no comienza con el signo $ ; solo el nombre del objeto comienza con $.

 

Por ejemplo:

echo $seat -> color; 
//resultado: beige

echo $opel -> color;
//resultado: beige

 

¿Cómo establecer las propiedades del objeto?

Para establecer una propiedad de objeto, utilizamos un enfoque similar.

Por ejemplo, para establecer el color en ‘azul’ en el objeto opel:

$opel -> color = 'azul' ;

y para establecer el valor de la propiedad $comp para ambos objetos:

$opel -> comp = "OPEL" ; 
$audi -> comp = "AUDI MOTORS" ;

Una vez que establecemos el valor de una propiedad, podemos obtener su valor.

Para obtener el color del objeto $opel , utilizamos la siguiente línea de código:

echo $opel -> color;
//resultado : azul

También podemos obtener el nombre de la empresa y el color del segundo objeto del automóvil.

echo $opel -> color; 
echo $opel-> comp;

//resultado: 
//azul
//OPEL
 

 

¿Cómo agregar métodos a una clase?

Las clases más a menudo contienen funciones. Una función dentro de una clase se llama método . Aquí agregamos el método hola() a la clase con el prefijo public .

class Coche { 
public $comp; 
public $color = 'beige' ; 
public $techoSolar = true; 
public function hola()  { 
return "beep" ; 
} 
}

 

  • Ponemos la palabra clave public delante de un método.
  • La convención de nomenclatura es comenzar el nombre de la función con una letra minúscula.
  • Si el nombre contiene más de una palabra, todas las palabras, excepto la primera palabra, comienzan con una letra mayúscula. Por ejemplo, holaUser () o borrarDato()

 

Podemos enfocar los métodos de manera similar a la forma en que enfocamos las propiedades, pero primero necesitamos crear al menos un objeto de la clase.

$opel = new Coche (); 
$audi = new Coche (); 
echo $opel -> hola(); 
echo $audi -> hola();

//Result:
//beep
//beep

 

Aquí está el código completo que hemos escrito durante este tutorial con otras marcas de vehículos:

// Declaramos la clase
 
class Coche { 
// propiedades 
public $comp; 
public $color = 'beige' ; 
public $techoSolar = true;  

// Método sonar cláxon
public function hola()  { 
return "beep" ;  
} 
} 

// Create an instance 
$bmw = new Coche (); 
$mercedes = new Car (); 

// Recogemos valores 
echo $bmw -> color; // beige 
echo $mercedes -> color; // beige

// Asignamos valores
$bmw -> color = 'blue' ;
$bmw -> comp = "BMW" ;  

// Recogemos valores de nuevo 
echo $bmw -> color; // blue 
echo $mercedes -> color; //beige 
echo $bmw -> comp; // BMW 

// Metodo para un sonido de cláxon

echo $bmw -> hello(); // beep 
echo $mercedes -> hello(); // beep

 

Conclusión

En este tutorial, ha dado sus primeros pasos en el mundo de la programación orientada a objetos al aprender sobre las clases, métodos y sobre los objetos que se pueden crear a partir de ellas.

En el siguiente tutorial , aprenderemos acerca de la palabra clave $this que nos permite acercarnos a propiedades y métodos dentro del alcance de la clase.

Prueba a practicar un poco antes de pasar al siguiente post.

Hasta pronto!!

 

 

 

 

Compartir esta entrada.

Deja una respuesta

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

CAPTCHA ImageChange Image