Objetos:
Objetos se
basa en la programación de clases; a diferencia de la programación
estructurada, que está centrada en las funciones.
Una clase es un molde del que luego se pueden crear
múltiples objetos, con similares características.
Un poco más abajo se define una clase Persona y
luego se crean dos objetos de dicha clase.
Una clase es una plantilla (molde), que define
atributos (lo que conocemos como variables) y métodos (lo que conocemos como
funciones).
La clase define los atributos y métodos comunes a
los objetos de ese tipo, pero luego, cada objeto tendrá sus propios valores y
compartirán las mismas funciones.
Debemos crear una clase antes de poder crear
objetos (instancias) de esa clase. Al crear un objeto de una clase, se dice que
se crea una instancia de la clase o un objeto propiamente dicho.
Confeccionaremos nuestra primera clase para conocer
la sintaxis en el lenguaje PHP, luego definiremos dos objetos de dicha clase.
Implementaremos una clase llamada Persona que
tendrá como atributo (variable) su nombre y dos métodos (funciones), uno de
dichos métodos inicializará el atributo nombre y el siguiente método mostrará
en la página el contenido del mismo.
codigo1.php
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
class
Persona {
private $nombre;
public function inicializar($nom)
{
$this->nombre=$nom;
}
public function imprimir()
{
echo $this->nombre;
echo
'<br>';
}
}
$per1=new
Persona();
$per1->inicializar('Juan');
$per1->imprimir();
$per2=new
Persona();
$per2->inicializar('Ana');
$per2->imprimir();
?>
</body>
</html>
La
sintaxis básica para declarar una clase es:
class [Nombre de la Clase] {
[atributos]
[métodos]
}
Siempre conviene buscar un nombre de clase lo más
próximo a lo que representa. La palabra clave para declarar la clase es class,
seguidamente el nombre de la clase y luego encerramos entre llaves de apertura
y cerrado todos sus atributos(variable) y métodos(funciones).
Nuestra
clase Persona queda definida entonces:
class Persona {
private
$nombre;
public
function inicializar($nom)
{
$this->nombre=$nom;
}
public
function imprimir()
{
echo
$this->nombre;
echo
'<br>';
}
}
Las clases son solo una definición, es decir una
plantilla, tal y como vimos en el ejemplo la clase Vehículo me permite
describir las propiedades y métodos de los vehículos en general, pero aún no
puedo utilizarlos para un vehículo en particular. Para ello es necesario
instanciar una clase en un objeto tal y como vemos en el
siguiente ejemplo:
<?php
$coche1=newVehiculo();
$coche1->aumentarVelocidad();
// velocidad = 1
Queda claro que el coche1 tiene velocidad 1, mientras que el coche2 aún está parado.$coche2=newCoche();
El proceso por el cual utilizo una clase para crear un objeto se denomina instanciación y se identifica mediante la palabra reservada new. Avancemos un poco más.
Herencia
La herencia consiste la capacidad en reutilizar código a través de clases padre y clases hijo, que heredan los métodos y propiedades de este, así por ejemplo si quisiera definir una nueva clase que representara a un coche deportivo, podría ser la siguiente:<?php
class Deportivo extends Coche {
var$aleron_deportivo=true;
var$cristales_tintados=true;
var$musica_maquinera=0;
function ponerMusica() {
$this->musica_maquinera =10;
}
function apagarMusica() {
$this->musica_maquinera =0;
}
}
$deportivo=newDeportivo();
$deportivo->aumentarVelocidad();
// velocidad = 1
$deportivo->aumentarVelocidad();
// velocidad = 2
$deportivo->ponerMusica();
// musica = 10
Por lo tanto utilizamos la herencia para definir clases generales, y a
través de clases hijos, ir definiendo clases más concretas, afinando su
comportamiento, por ejemplo podríamos crear una clase Ferrari, que heredara a
su vez de Deportivo, para añadirle características más específicas, o crear una
nueva clase que herede de Coche, llamada furgoneta, que aumente su velocidad
más despacio, pero con mayor capacidad de carga. La herencia es el mecanismo
fundamental de la OOP,<br />
informa al navegador para que introduzca un salto de línea). En algunos
elementos se puede añadir más información. Esa información extra se denomina
atributo.Ejemplo 1:
<h2 style="background-color:#ff0000;">Mi amistad con HTML</h2>
Los atributos se incluyen siempre dentro de la etiqueta de inicio y llevan
inmediatamente detrás el signo de igual ("=") con los valores de
dichos atributos entre comillas (""). El punto y coma que sigue al
atributo se usa para separar los diferentes comandos de estilo. Más tarde
volveremos a tratar sobre este tema.¿Cuál es la pega?
Existen muchos atributos diferentes. El primero que vas a aprender esstyle. Con el atributo style se puede añadir
efectos de presentación a tu sitio web. Por ejemplo, un color de
fondo:Ejemplo 2:
<html>
<head>
</head>
<body style="background-color:#ff0000;">
</body>
</html>
El código anterior mostrara un página con fondo
rojo en el navegador; adelante, pruébalo tú mismo. En unos minutos explicaremos
como más detalle cómo funciona el sistema de colores en HTML.
Ten en cuenta que algunas etiquetas y atributos
usan ortografía estadounidense, es decir, "color" en vez de
"colour". Es importante que utilices la misma ortografía que usamos
en los ejemplos de este tutorial; de otro modo, los navegadores no serán
capaces de interpretar el código. Además, no olvides cerrar siempre las
comillas detrás del atributo.
¿Qué ocurrió para que la página apareciera en color rojo?
En el ejemplo anterior, hicimos referencia al
color de fondo usando el código "#ff0000". Este es el código de color
para el rojo en el sistema numérico hexadecimal (HEX). Cada color tiene
su propio número hexadecimal.. Y estos son algunos ejemplos:
Blanco: #ffffffNegro: #000000 (ceros)
Rojo: #ff0000
Azul: #0000ff
Verde: #00ff00
Amarillo: #ffff00
El código de color hexadecimal se compone de una
almohadilla, "#", y seis dígitos (del 0 al 9) o letras (de la A a la
F). Existen más de 1.000 códigos hexadecimales y no es fácil calcular qué
código hexadecimal corresponde a un color específico. Para facilitar las cosas
hemos preparado una tabla con los 216 colores más usados: Tabla
de colores seguros para la web.
También se pueden usar los nombres en inglés para
los colores más comunues (white: blanco, black: negro, red: rojo, blue: azul,
green: verde y yellow: amarillo).
Ejemplo 3:
<body style="background-color: red;">
De momento, ya vale de colores. Volvamos a los atributos.¿Qué elementos pueden usar atributos?
Son varios los atributos diferentes que
se pueden aplicar a la mayoría de los elementos.
Por ejemplo, usarás con frecuencia atributos en
la etiqueta
body, mientras
que, por ejemplo, raras veces usarás atributos en la etiqueta br, ya que un salto de línea es un salto
de línea que no tiene parametros que ajustar.
Al igual que existen muchos elementos, existen
también muchos y diferentes atributos. Algunos atributos están hechos a la
medida para un elemento concreto, mientras que otros se pueden usar para muchos
elementos diferentes. Y viceversa: algunos elementos sólo pueden contener un
tipo de atributo mientras otros pueden contener muchos.
Puede sonar algo confuso, pero una vez que te
acostumbres a los diferentes atributos, es en realidad de lo más lógico y
pronto verás qué fácil es usarlos y cuántas posibilidades brindan.
Este tutorial te presentará los atributos más
importantes.
Como crear un metodo
La sintaxis de un método en PHP sería la siguiente:
1. function nombreMetodo(parámetros) {
2. // Código del Método
3. }A continuación procedemos a crear un método en PHP que nos sirva para sumar dos números enteros.
Primero ponemos la estructura básica del método:
1. //Metodo para sumar dos enteros
2. function sumar($i,$j){
3. ....
4. }Una vez definida la estructura básica del método en PHP vamos a proceder a escribir la funcionalidad para nuestro método. En este caso es sencillo, ya que sumaremos los dos números definidos como parámetros:
1. $i=intval(trim($i)); //obtener parte entera de $i
2. $j=intval(trim($j)); //obtener parte entera de $j
3. return $i+$j;Vemos que el resultado del método se devuelve mediante el operador return.
El método PHP para sumar dos números quedaría de la siguiente forma:
1. function sumar($i,$j){
2. $i=intval(trim($i));
3. $j=intval(trim($j));
4. return $i+$j;
5. }
Que es un metodo
En nuestro ejemplo del método sumar podríamos ejecutar el método de las siguientes formas:
1.
2. // ejecucion del script php
3. echo metodoSumar(200,797)."<br>";
4. echo metodoSumar('123','97')."<br>";
5. echo metodoSumar('123.78','97.90')."<br>";
6. echo metodoSumar('b','a')."<br>";
Metodos en objetos
Definición de método.
En la página anterior vimos cómo crear un objeto,
y cómo definir sus propiedades. Las propiedades son una característica del
objeto, siempre almacenan un valor. Los métodos sin embargo representan
acciones. Con un método indicamos al código que haga algo relacionado con el
objeto, por ejemplo calcular un valor a partir de otros, sacar en pantalla
algunas o todas las propiedades, etc.
ESto lo haremos mediante funciones, por lo tanto
un método no es más que una función donde pedimos al código que haga algo con
el objeto.
Crear un método
En la página anterior hemos creado una clase
llamada Herramientas. Siguiendo
con este ejemplo, crearemos en primer lugar un método que calcule el precio
para artículos que tengan un tanto por ciento de descuento. el código de la
clase Herramientas lo teníamos
guardado en un archivo llamado clase_herramientas.php. Abrimos ese
archivo con el editor de textos, el cual debe tener el siguiente código:
<?php
class Herramientas {
var $nombre="sin_nombre";
var $precio=0;
var $imagen="objetos/herramientas.gif";
}
?>
En la clase herramientas (dentro de las llaves) escribiremos lo
siguiente:En primer lugar definimos una nueva propiedad.
var $descripcion;
Después escribiremos la función que crea el método, de modo que el archivo clase_herramientas.php
quedará así:<?php
class Herramientas {
var $nombre="sin_nombre";
var $precio=0;
var $imagen="objetos/herramientas.gif";
var $precio_descuento;
function descuento($porcentaje) {
$rebaja=$this->precio - ($this->precio*($porcentaje/100));
$this->precio_descuento =$rebaja;
}
}
?>
Explicaremos algunas cosas de esta función:- La función puede llevar parámetros, en este caso en el parámetro indicaremos el tanto por ciento en que el producto está rebajado.
- La variable $this que aparece en la función se utiliza para hacer referencia al objeto al que se le aplica, es decir, al llamar a la función o método, se hace sobre un objeto concreto de la clase, nos refiremos a ese objeto, de ahí que podamos ponerle también las propiedades del objeto.
;
- Mediante un cálculo el método añade el valor a la nueva propiedad que hemos definido anteriormente (precio_descuento)
$caja_herramientas->descuento(15);
Como ves la forma correcta de llamar a un método desde un objeto concreto es
similar a la forma de llamar a una propiedad; es decir, mediante los signos -> .
$nombre_objeto->nombre_metodo()
El método, al igual que las funciones puede llevar parámetros, en este caso
pasamos como parámetro el valor del tanto por ciento del descuento.El método puede devolver también un valor de retorno, para ello utilizaremos al final de su código la instrucción return, de la misma manera que se hace con el resto de las funciones.
Una vez llamado al método, la nueva propiedad debe tener el valor asignado por el método, por lo que llamamos a la nueva propiedad para mostrarla en pantalla:
echo "<p>Precio con descuento =
$caja_herramientas->precio_descuento.</p>";
En la página index.php, el código PHP para mostrar el objeto será el
siguiente:<?php
$caja_herramientas = new Herramientas;
$caja_herramientas->nombre = "Caja de herramientas";
$caja_herramientas->precio = 60;
$caja_herramientas->descripcion ="Caja completa de herramientas, 50 piezas calidad buena.";
echo "<img src='$caja_herramientas->imagen' alt='$caja_herramientas->nombre' width='200' align='left'>";
echo "<p>Producto: $caja_herramientas->nombre. </p>";
echo "<p>Precio: $caja_herramientas->precio € </p>";
$caja_herramientas->descuento(15);
echo "<p>Precio con descuento = $caja_herramientas->precio_descuento.</p>";
echo "<p>Descripción: $caja_herramientas->descripcion. </p>";
?>
En color morado hemos destacado las nuevas líneas que hemos añadido al
código que ya teníamos antes.La página principal ahora nos quedará como en el siguiente enlace:
Método para ver el objeto en pantalla
Una vez que hemos visto cómo se crea un método, no nos será difícil crear un método que nos muestre las propiedades del objeto en pantalla.Mediante este método evitaremos que, cada vez que creemos un objeto nuevo de la clase, tengamos que escribir el código para mostrarlo, ya que con una simple llamada al método, podremos mostrar el objeto.
La función que crea este método será la siguiente, la cual debemos ponerla dentro de las llaves que delimitan la clase Herramientas, en el archivo clase_herramientas.php.
function mostrar() {
echo "<img src='$this->imagen' alt='$this->nombre' width='200' align='left'>";
echo "<p>Producto: $this->nombre. </p>";
echo "<p>Precio: $this->precio € </p>";
if ($this->precio_descuento) {
echo "<p>Precio con descuento = $this->precio_descuento.</p>";
}
echo "<p>Descripción: $this->descripcion. </p>";
}
El código dentro de la función es similar al que utilizabamos para mostrar
el objeto en pantalla, salvo algunos cambios:- Hemos cambiado el nombre del objeto por la variable $this. De esta manera el código puede valer para cualquier objeto de esta clase.
- Para mostrar la propiedad precio_descuento, hemos puesto la condición de que a esta se le haya asignado algún valor.
El código de la página index.php quedará así:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Herramientas</title>
<?php
include("clase_herramientas.php");
?>
</head>
<body>
<h1>Herramientas</h1>
<?php
$caja_herramientas = new Herramientas;
$caja_herramientas->nombre = "Caja de herramientas";
$caja_herramientas->precio = 60;
$caja_herramientas->descripcion ="Caja completa de herramientas, 50 piezas calidad buena.";
$caja_herramientas->descuento(15);
$caja_herramientas->mostrar();
?>
</body>
</html>
La ventaja de aplicar este nuevo método es obvia en el caso de que tengamos
que mostrar en pantalla varios objetos de esta misma clase, ya que con sólo
llamar al método nos evitamos tener que escribir una y otra vez todas las
instrucciones echo.Veamos ahora el código completo de la página clase_herramientas.php, donde hemos guardado el código de la clase herramientas. Este debe quedar así:
<?php
class Herramientas {
var $nombre="sin_nombre";
var $precio=0;
var $imagen="objetos/herramientas.gif";
var $descripcion;
var $precio_descuento;
function descuento($porcentaje) {
$rebaja=$this->precio - ($this->precio*($porcentaje/100));
$this->precio_descuento =$rebaja;
}
function mostrar() {
echo "<img src='$this->imagen' alt='$this->nombre' width='200' align='left'>";
echo "<p>Producto: $this->nombre. </p>";
echo "<p>Precio: $this->precio € </p>";
if ($this->precio_descuento) {
echo "<p>Precio con descuento = $this->precio_descuento.</p>";
}
echo "<p>Descripción: $this->descripcion. </p>";
}
}
?>
Por último vamos a ver como queda en pantalla la página principal tras los
cambios realizados. para ello pulsa en el siguiente enlace:Métodos en objetos II.
El contenido de la página sigue siendo el mismo que en el ejemplo anterior, la diferencia está en la simplificación del código de la página principal.
http://phpbasico.freevar.com/temas/php15_2.php
tp://lineadecodigo.com/php/crear-un-metodo-en-php/
ntroducción a la orientación a objetos en php objetos, clases y herencia
No hay comentarios:
Publicar un comentario