Entendido.

Este sitio utiliza cookies para analizar la navegación. Si continúa navegando se entiende que acepta su uso. Ver más detalles.";

Logo

Aprende Web

Crea y diseña tus sitios en la Web.

Manual de PHP

PHP: imprescindible para crear páginas web de modo profesional


Y ahora tambien aprende a programar en C++ con Aprende Web C++

logo rss RSS. Suscribir canal.

Buscar en Aprende Web

Traducir página

Visita nuestro blog:

bolg.aprende-web.net

y entérate de las novedades o deja un comentario.

Dudas y sugerencias:

aprendeweb@aprende-web.net





Sobre ésta página

Ültima modificación: 29-01-2016.

Visitas este mes: 17

Visitas el mes pasado: 34

logo
WEB-GRAFÍA

Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de este manual.:

Curso de PHP
www.programaciónweb.net
Lecciones PHP
WebTaller.com
Manual de PHP
manualdephp.com
Curso de PHP
Aula Fácil.com
Manual de PHP en español
manual-php.com
PHP a fondo
desarrolloweb.com
Manual de PHP
Foros del Web
Manual de PHP
www.php.net
PHP Tutorial
w3schools.com

Donativos

Si este sitio te parece interesante puedes contribuir con una pequeña aportación.




16. Resumen(XII)

16.12 Objetos en PHP

php

La Programación Orientada a Objetos

La programación orientada a objetos es usada en muchos lenguajes de programación. Consiste en crear clases de objetos.

En cada clase de objetos se agrupan objetos de características similares. A cada clase se le asignan unas propiedades y unos métodos.

En programación, crearemos primero la clase de objetos, con sus métodos y propiedades, para crear después los objetos concretos que pertenecen a esa clase.

Las propiedades son cualidades o características que posee el objeto, y se definen en variables, mientras que los métodos son acciones que pueden realizarse con el objeto. Se definen mediante funciones.

Creación de clases

Para definir una clase de objetos, utilizamos la palabra reservada class seguida del nombre de la clase. Después, entre llaves escribimos las propiedades y los métodos de la clase.

class Productos { /*...*/ }

Aunque no es obligatorio, es conveniente poner el nombre de la clase con mayúscula, para distinguirla del resto de elementos.

Propiedades

Para definir las propiedades, dentro de las llaves escribiremos una serie de variables:

class Productos {
   var $nombre ="no_definido";
   var $precio = 0;
   var $descripcion;
   var $imagen = "objetos/producto.gif";
   }

Al definir las variables se crean las propiedades de esta clase de objetos.

Las propiedades pueden llevar un valor por defecto, que es el que les damos, o no llevar ninguno.

Instanciar un objeto

Instanciar un objeto es crear un objeto concreto de la clase que hemos creado, para ello escribimos:

$naranja = new Productos;

Hemos creado el objeto $naranja perteneciente a la clase Productos.

Este objeto tiene las propiedades y métodos que se hayan definido al crear la clase, con sus valores por defecto.

Para acceder a sus propiedades lo haremos de la siguiente manera:

echo $naranja->nombre;

Aquí hemos accedido a la propiedad en modo lectura, pero si queremos cambiarla, utilizaremos el modo escritura, en el cual le damos otro valor:

$naranja->nombre = "Naranja";

El código completo de este ejemplo, en el que instanciamos el objeto y le damos sus propiedades, es el siguiente:

$naranja=new Productos;
$naranja->nombre = "Naranja";
$naranja->precio = 1.25;
$naranja->descripcion = "Naranja. Origen Valencia. clase Navelina.";
$naranja->imagen = "objetos/naranjas.gif";

Métodos

Un método es una función en la que pedimos al objeto que haga algo. Por ejemplo podemos hacer una función que muestre en pantalla el producto del ejemplo anterior.

La función se escribe dentro de las llaves que ponemos al crear el objeto. Dentro de la función podemos utilizar las propiedades del objeto, y para referirnos al objeto utilizaremos la variable $this. En este ejemplo modificamos la creación del objeto anterior:

class Productos {
   var $nombre ="no_definido";
   var $precio = 0;
   var $descripcion;
   var $imagen = "producto.jpg";
   function mostrar(){
     echo "<img src='$this->imagen' style='float: left; height: 80px; margin-right: 10px;'>";
     echo "Nombre = $this->nombre<br/>";
     echo "Precio = $this->precio<br/>";
     echo "Descripción = $this->descripcion.<br/>";
  }
}

En color lila hemos destacado el código nuevo que hemos añadido al que ya teníamos, el cual consiste en la función que crea el método.

Para utilizar el método en un objeto ya instanciado de la clase lo haremos de la siguiente manera.

$naranja->mostrar();

El método tendrá el mismo nombre que la función. Si la función necesita argumentos deberemos ponerlos también en el método.

Función constructora

Una función constructora permite que al instanciar un objeto podamos indicar directamente sus propiedades, sin tener que definirlas luego.

Para ello al crear la clase debemos poner dentro de las llaves la función constructora. Veamos una función constructora en el ejemplo anterior.

class Productos {
   function Productos($n="no definido",$p=0,$d="",$i="producto.jpg") {
    $this->nombre=$n;
    $this->precio=$p;
    $this->descripcion=$d;
    $this->imagen=$i;
  }
   function mostrar(){
     echo "<img src='$this->imagen' style='float: left; height: 80px; margin-right: 10px;'>";
     echo "Nombre = $this->nombre<br/>";
     echo "Precio = $this->precio<br/>";
     echo "Descripción = $this->descripcion.<br/>";
  }

}

Hemos quitado el código en el que hemos creado las propiedades y lo hemos sustituido por la función constructora (destacada en color lila).

En la función los argumentos que pongamos serán las propiedades, a las cuales les damos un valor por defecto. Después mediante la fórmula $this->propiedad = $argumento creamos las propiedades de la clase.

La ventaja está en que ahora al instanciar un nuevo objeto podemos darle directamente las propiedades. Por ejemplo:

$nombre="Pimiento verde";
$precio=1.40;
$descripcion="Pimiento verde tipo Italiano. Origen: La Rioja.";
$imagen="objetos/pimiento.jpg";
$pimiento=new Productos($nombre,$precio,$descripcion,$imagen); 

Definimos primero las propiedades en variables, y luego las pasamos al instanciar el objeto en forma de argumentos. También podríamos haber introducido los datos directamente en los argumentos:

$pimiento=new Productos("Pimiento verde",1.4,"Pimiento verde tipo Italiano. Origen: La Rioja.", "objetos/pimiento.jpg");

El orden en que se pasan los argumentos debe ser siempre el mismo, ya que a cada argumento le corresponde una propiedad.

Subclases

Dentro de una clase de objetos podemos crear una o varias subclases. Éstas normalmente especifican el tipo de objeto dentro de la clase.

Cada subclase puede tener propiedades y métodos específicos, además de las propiedades y métodos de la clase general.

Para definir una subclase lo haremos mediante:

class Subclase extends Clase_general { .. }

Creamos la subclase con la palabra class seguida del nombre de la clase, seguimos con la palabra extends y el nombre de la clase a la que pertenece. Después entre llaves pondremos las nuevas propiedades y métodos específicos de la subclase.

Siguiendo el ejemplo anterior crearemos una subclase de la clase Productos

class Frutas extends Productos {
    var $clase="no definida";
    var $origen="indefinido";
    }

Herencia y polimorfismo

La herencia consiste en que todas las propiedades y métodos de la clase general se conservan en las subclases secundarias. De esta manera los objetos instanciados desde las clases secundarias tendrán los métodos y propiedades generales y también los específicos de su clase.

El polimorfismo consiste en que podemos modificar una propiedad o un método de la clase general en una secundaria, de manera que sólo afectará a los objetos instanciados desde la clase secundaria, mientras que los instanciados desde la clase general u otras subclases no les afecta el cambio.

Cambiar propiedades o métodos por defecto en subclase

Para cambiar una propiedad o un método dentro de una subclase volveremos a definir la propiedad o método dentro de la subclase. Supongamos que en el ejemplo anterior queremos cambiar el método mostrar() de manera que se muestren también las nuevas propiedades específicas. También cambiaremos el valor por defecto de la propiedad nombre

Para no tener que repetir el código de la función de la clase general haremos un referencia a ella dentro de la función de la subclase mediante: parent::nombre_funcion(). Este es el código:

class Frutas extends Productos {
  var $clase="no definida";
  var $origen="indefinido";
  var $nombre="Frutas";
  function mostrar(){
     parent::mostrar();
     echo "Clase : $this->clase<br/>";
     echo "Origen : $this->origen<br/>";
     }	
  }

El método mostrar() amplia el código del que teníamos en la clase general, y ahora muestra también las propiedades específicas

Hemos cambiado también el valor por defecto de la propiedad nombre dentro de esta subclase. Sin embargo esto sólo funciona si hemos definido las propiedades en la clase general directamente, y no con la función constructora.

De igual manera podemos definir nuevos métodos que se utilicen sólo con una subclase. Para ello no tenemos más que crear las funciones que realicen las acciones de los métodos.

Función constructora en subclases.

Volvamos al ejemplo en el cual queremos instanciar los objetos ya con propiedades, porque hemos puesto una función constructora.

Al añadir más métodos en una subclase, la función constructora de la clase general no permite definir las propiedades específicas al instanciar el objeto.

Debemos hacer una función constructora dentro de la subclase que contenga la función constructora de la clase general más las clases específicas de la subclase.

Para ello utilizaremos también la instrucción parent::funcion() para incluir la función constructora de la clase general.

En el ejemplo se muestra cómo queda el código de la creación de la subclase tras añadir la función constructora y el método visto anteriormente:

class Frutas extends Productos {
function Frutas($n="Productos",$p=0,$d="",$i="producto.jpg",$c="no definido",$o="indefinido") {
   parent::Productos($n,$p,$d,$i);
   $this->clase=$c;
   $this->origen=$o;
   }
function mostrar(){
	 parent::mostrar();
	 echo "Clase : $this->clase.<br/>";
	 echo "Origen : $this->origen.<br/>";
	 }
}

En color lila está destacado el código de la función constructora, en ella ponemos como argumentos las propiedades de la clase general más las propiedades que añadimos, con sus valores por defecto.

Incluimos la función general mediante la instrucción parent::Productos(). Aquí debemos poner como argumentos las variables que hemos utilizado anteriormente como argumentos para las propiedades generales.

Después incluimos las propiedades específicas de la misma manera que lo hemos hecho con las generales en la clase general.




Aquí acaba el resumen del manual de PHP y también el manual. Gracias por haber seguido el manual y espero que os haya servido de ayuda

Volver a página principal



manual de PHP

Anterior siguiente ... Siguiente siguiente


imprimir esta página

Página creada por ANYELGUTI.

Sugerencias: aprendeweb@aprende-web.net. Envia un manda un correo

Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog

Más sobre anyelguti en http://anyelguti.16mb.com