PHP » Tutorial » Diseño Orientado a Objetos Unidad I

Patrón de Diseño (design patterns)

Los patrones de diseño se refieren a la arquitectura de un programa, a la forma en la que está construidos, ellos se crean por la necesidad de solucionar algún  problemas de forma efectiva y reusable, además pretenden estandarizar el modo en que se desarrolla e implementa el software, facilitar el aprendizaje de las nuevas generaciones de diseñadores, y generar un criterio de codigo eficiente y la optimización de una aplicación.

Un Diseñador de Software (mejor conocido como programador) demuestra su madurez profesional aplicando dichos patrones que son variados y evocados a distintas soluciones o distintos software.

OOP (programación orientada a objetos)

La oop (object-oriented programming) es una abstracción del mundo real, en otras palabras intenta imitar los objetos y circunstancias de la vida real, así como los objetos de nuestro mundo poseen características (atributos) como: color, peso, tamaño, estatura, entre otros, y comportamientos (funciones, métodos o procedimientos) como: caminar, correr, disparar, buscar, entre otras, estos objetos también los tienen, en forma de código, este código que le da forma a un objeto se le llama "clase" (class).

La oop también es conocida como paradigma de programación orientada a objetos.

PHP es un lenguaje de programación que soporta la oop y es de gran utilidad crear objetos.

Los atributos siempre serán sustantivos y las funciones verbos.

Class

Antes de empezar con el código, se puede decir que un objeto tiene dos niveles, uno que es la clase y otro que es su implementación (instancia) o creación, la clase es la plantilla por la cual se regirá la forma del objeto, por ejemplo la clase Persona, esta tiene atributos como color de cabello, estatura, nacionalidad, nombre entre otros, pero no es ninguna Persona en particular, es solo el concepto de lo que debe ser una Persona, una instancia o creación de esta clase eres tu, y yo, el escritor de este articulo, ambos tal vez con nombres, nacionalidades, y color de cabello distintos, pero los dos somos tangibles, existimos, esa es la diferencia principal entre una clase (concepto) y una instancia (realidad).

La clase es un tipo de dato creado por el desarrollador.

Ahora ¿Cómo transformamos todo esto en código PHP?:

Archivo: Persona.php

 Recomiendo que cada clase se escriba en un archivo con su nombre, es posible crear varias clases en un solo archivo PHP.

<?php

class Persona {//Inicio de la Clase

    //Atributos
    private $nombre;
    
    //Funciones generalmente Públicas
    public function getNombre(){//Puede ser cambiado por obtenerNombre()       
        return $this->nombre;
    }

    public function setNombre($nombre){//Puede ser cambiado por insertarNombre()       
        $this->nombre=$nombre;        
    }

    private function pensar($pensamiento){
        echo $pensamiento;
    }

}//Fin de la Clase

?>

Observemos que tanto los atributos como las funciones están dentro de la clase, eso se llama encapsulamiento.

Las funciones get y set son utilizadas siempre para obtener e insertar los valores de los atributos de la clase, generalmente cada atributo posee estas dos funciones asociadas.

Las funciones y atributos public son la información a la cual se puede acceder desde la instancia de la clase, (el patrón OO, exige que los atributos sean private, pero a nivel de programación se pueden hacer publicos) ejemplo, otra persona puede pedirte tu nombre, pero no puede pedirte tus pensamientos (es solo para ejemplificar), por ende las funciones y atributos private solo pueden ser accedidas dentro de la clase.

La palabra reservada $this-> se utiliza para llamar atributos y funciones de la misma clase, en este caso el nombre.

Mejorando el código:

<?php

class Persona {//Inicio de la Clase

    //Atributos
    private $nombre;
    
    //Funciones generalmente Públicas
    public function getNombre(){//Puede ser cambiado por obtenerNombre()
        $this->pensar('Entrego mi nombre<br/>');//Llamando a la función Privada
        return $this->nombre;
    }

    public function setNombre($nombre){//Puede ser cambiado por insertarNombre()
        $this->pensar('Cambio mi nombre<br/>');//Llamando a la función Privada
        $this->nombre=$nombre;        
    }

    private function pensar($pensamiento){
        echo $pensamiento;
    }

}//Fin de la Clase

?>

Así podemos ver el uso de la función privada.

Ahora:

Archivo: index .php

<?php

include 'Persona.php';
$objeto = new Persona();
$objeto->setNombre('Pedro');
echo 'Nombre '.$objeto->getNombre();

?>

Para poder darle vida a nuestro objeto primero incluimos el archivo donde se encuentra la clase, luego con la palabra reservada new instanciamos el objeto:

$objeto = new Persona();

Este sentencia crea un objeto Persona en la variable $objeto (esta variable puede tomar cualquier nombre).

y para finalizar usamos sus funciones públicas:

$objeto->setNombre('Pedro');
echo 'Nombre '.$objeto->getNombre();

el resultado seria:

Cambio mi nombre
Entrego mi nombre
Nombre Pedro

Recuerda hacer preguntas si tienes dudas en algo...

sauljp07

Publicado el 15 de Julio del 2010 por sauljp07

1856 visitas, 6 mensajes y 15 ediciones

Mensajes

kakaroto kakaroto el 15 de Julio del 2010: 0

Lo siento no pude contener mi emocion
I
I
V
aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa aaaaaaaaaaa

sauljp07 sauljp07 el 16 de Julio del 2010: 0

¬¬

Diego Escares Diego Escares el 16 de Julio del 2010: 0

Wow! lo escribiste tu verdad? déjame leerlo con más calma, mientras, verifica las imágenes en tu servidor que no se ven.
¡Gracias por compartir!

PD: Kakaroto, no entendí tu emoción :S

sauljp07 sauljp07 el 16 de Julio del 2010: 0

exacto yo tampoco entendi jajaja.
Y si voy a ver que pasa con la imagen....
Y si, yo lo escribi jajaja, pienso hacer la trilogia OO

Diego Escares Diego Escares el 20 de Julio del 2010: 0

Acabo de darme el tiempo para leer el artículo. Está bastante bien, simple y bien explicado. Te felicito, ahora voy por el segundo.
Una acotación: en el primer ejemplo no es necesario mostrar:

private function pensar($pensamiento){
echo "$pensamiento";
}

Pues está de sobra. En este ejemplo no se usa, en cambio en el segundo sí.
Saludos.

Diego Escares Diego Escares el 20 de Julio del 2010: 0

Le quité las comillas a
echo "$pensamiento";

Estaban de sobra, queda así:
echo $pensamiento;

sauljp07 sauljp07 el 20 de Julio del 2010: 0

Si dale, por cierto estaba por decirte que los leyeras para que los corrijas....

¡Amigo! te demorarás 10 segundos en crear tu cuenta.

Disfrutarás de todos los beneficios de DocumentoWeb.

Twitter Twitter Facebook Facebook Feed RSS Feed RSS

www.DocumentoWeb.com Licencia Creative Commons