Anda di halaman 1dari 14

PHP5 Orientado a objetos

27

PHP5 Orientado a objetos

Al finalizar el captulo, el alumno podr: Utiliza el concepto de objeto en la representacin de los datos. Utiliza los mtodos constructores y destructores para le ejecucin automtica de cdigo. Utiliza el control de acceso a los elementos definidos en una clase. Implementa las caractersticas de herencia entre clases. Emplea clases y mtodos abstractos. Utiliza interfaces para el manejo de objetos.

Temas: 1. 2. 3. 4. 5. 6. 7. Clases. Instanciar objetos. Constructores y destructores. Herencia. Control de acceso a la clase. Clases y mtodos abstractos. Interfaces.

CIBERTEC

PHP5 Orientado a objetos

28

I.

Captulo N 2: PHP5 Orientado a objetos

CIBERTEC

PHP5 Orientado a objetos

29

1. Clases

1.1. Introduccin
PHP 5 presenta un nuevo y ms completo modelo de Objetos. El manejo de PHP de objetos ha sido reescrito por completo, permitiendo un mejor desempeo y ms caractersticas.

1.2. Programacin orientada a objetos POO


La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un paradigma de programacin que usa objetos y sus interacciones, para disear aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de programacin que soportan la orientacin a objetos.

CIBERTEC

PHP5 Orientado a objetos

30

1.3.

Conceptos fundamentales

Concepto clase

Descripcin Contiene las definiciones de las propiedades y comportamiento de un tipo de objeto concreto. Es la instancia es una entidad que proporciona de un conjunto de propiedades y de comportamiento o funcionalidad los mismos que consecuentemente reaccionan a eventos. Son datos especficos asociados a un objeto (o a una clase de objetos). Algoritmo asociado a un objeto (o a una clase de objetos). Es la facilidad mediante la cual la clase hereda en ella cada uno de las propiedades y mtodos del padre. Significa que las clases pueden tener diferentes comportamientos con respecto a la misma operacin

objeto

propiedad mtodo herencia Polimorfismo

1.4.

Estructura de una clase

La definicin bsica de una clase presenta este aspecto: class nombreclass { public $propiedad1; public $propiedad2; function metodo1() { // cdigo del metodo } function metodo2() { //cdigo del metodo } } // fin de la clase

CIBERTEC

PHP5 Orientado a objetos

31

1.5.

Palabras reservadas
Descripcin Define una clase. Extiende las propiedades y mtodos de una clase. Todos miembros son por defecto del tipo public. Se usa para definir miembros privados que son visibles solo desde el interior de la clase en que han sido definidos Solo se pueden acceder a ellos desde las clases derivadas de aquella. Se utiliza para ejecutar un mtodo o hacer referencia a las propiedades del objeto padre. Impide la redefinicin de mtodos en clases derivadas. Si la propia clase se define como final, entonces no se podr heredar de ella. Seudovariable usada para hacer referencia a la clase desde dentro de ella misma.

Modificador class extends public private protected parent:: final

$this

CIBERTEC

PHP5 Orientado a objetos

32

2. Instanciar objetos

2.1.

Instanciar objetos

Tras declarar una clase, tenemos que crear un objeto, esta tarea tambin se conoce como instanciar una clase. Para crear un objeto a partir de una clase, se utiliza la palabra new. $variable = new nombre_de_clase();

2.2.

Acceso a los elementos de un objeto

Para acceder a los elementos de un objeto se usa el operador -> $afiliado = new persona($dni); echo $afiliado->apellidos; echo $afiliado->nombres; $afiliado->grabar();

CIBERTEC

PHP5 Orientado a objetos

33

3. Constructores y destructores

3.1.

Mtodo constructor

Este mtodo existe desde PHP5 y se utiliza para implementar un mtodo que se ejecutar por defecto al momento de instanciar el objeto. El constructor de una clase siempre se define como __construct(). class persona { function __construct() { } }
Nota: Los constructores padres no son llamados implcitamente si la clase hijo define un constructor. Para poder ejecutar el constructor de la clase padre, se debe hacer una llamada a parent::__construct() dentro del constructor de la clase hijo.

3.2.

Mtodo destructor

Este mtodo destruye el objeto instanciado, se ejecuta cuando todas las referencias a un objeto en particular sean removidas, cuando es explcitamente destruido o en cualquier otra circunstancia de finalizacin. class persona { function __destruct() { } }
Nota: El destructor es llamado durante la finalizacin del script, de tal manera que los headers ya han sido enviados.

CIBERTEC

PHP5 Orientado a objetos

34

4. Herencia

4.1.

Definicin

La herencia es una de las claves de la POO. Permite extender unas clases de otras. Lo cual implica: Utilizar mtodos y propiedades de las clases padre. Aadir nuevos mtodos. Aadir nuevas propiedades. Sobrescribir mtodos y propiedades de las clases padre.

La herencia junto con las interfaces permite el polimorfismo de las clases.

4.2.

Implementacin
<? class A { public $propiedad1; public function metodo1() { } public function metodo2() { } } // fin de la clase A class B extends A // clase B hereda de la clase A { public function metodo3() { }

CIBERTEC

PHP5 Orientado a objetos

35

} // fin de la clase B $objA = new A(); $objB = new B(); $objA->metodo1(); $objB->metodo2(); //el objB hereda el metodo 2 de la clase A $objA->metodo3() ; //aqu se produce un ?>

4.3.

Reemplazos

Podemos hacerlo para asignar a una propiedad un valor diferente para la misma propiedad de su clase padre, tambin se puede usar para indicar una funcionalidad diferente del mismo mtodo en la clase hija.

4.4.

Evitar la herencia y reemplazos

Al utilizar el operador final por delante de la declaracin de un mtodo, este no se podr reemplazar en ninguna clase hija. Si se antepone a la declaracin de una clase, se evitara que se creen subclases de una clase.

4.5.

Constantes de clases

PHP presenta el concepto de constante de clase, que se puede utilizar sin necesidad de crear una instancia de una clase, como se muestra a continuacin: <? class Math{ const pi = 3.14159; } echo valor de pi =. Match::pi ; ?>

CIBERTEC

PHP5 Orientado a objetos

36

5. Control de acceso a la clase

5.1.

Modificador public

Es el nivel de acceso ms permisivo, sirve para indicar que el mtodo o atributo de la clase es accesible para visualizarlo y editarlo desde cualquier punto del script.

5.2.

Modificador private

Es el nivel de acceso ms restrictivo, sirve para indicar que ese mtodo o atributo solo se va poder acceder desde el propio objeto, nunca desde afuera.

5.3.

Modificar protected

Es el nivel de acceso medio, sirve para que el mtodo o atributo sea pblico dentro del cdigo de la propia clase y de cualquier clase que herede de esta. Los atributos y mtodos marcados como protected no son accesibles desde el exterior.

CIBERTEC

PHP5 Orientado a objetos

37

6. Clases y mtodos abstractas

6.1.

Definicin de clases abstractas

Una clase abstracta es la que tiene mtodos abstractos. Los mtodos abstractos son los que estn declarados en una clase, pero no se ha definido en la clase el cdigo de esos mtodos. Cuando se hereda de una clase abstracta, todos los mtodos definidos como abstract en la definicin de la clase padre deben ser redefinidos en la clase hija; adicionalmente, estos mtodos deben ser definidos con la misma visibilidad (o con una menos restrictiva). Por ejemplo, si el mtodo abstracto est definido como protected, la implementacin de la funcin puede ser redefinida como protected o public, pero nunca como private. class MiClaseAbstracta { public function metodoFoo(){ // Implementacin del mtodo } abstract public function metodoBar(); }

CIBERTEC

PHP5 Orientado a objetos

38

7. Interfaces

7.1.

Definicin

Las interfaces de objetos permiten crear cdigo con el cual especificar qu mtodos deben ser implementados por una clase, sin tener que definir cmo estos mtodos son manipulados. Las interfaces son definidas utilizando la palabra clave interface, de la misma forma que con clases estndar, pero sin mtodos que tengan su contenido definido. Todos los mtodos declarados en una interfaz deben ser public, ya que sta es la naturaleza de una interfaz. interface iTemplate { public function setVariable($name, $var); public function getHtml($template); }

7.2.

Implementacin
<? class BadTemplate implements iTemplate { private $vars = array(); public function setVariable($name, $var) { $this->vars[$name] = $var; } } ?>
CIBERTEC

PHP5 Orientado a objetos

39

7.3.

Interfaces extensibles

Es posible generar herencia de las interfaces al igual que se hace con las clases, pero hay que tener cuidado ya que al implementar no podemos reemplazar los mtodos ya definidos. <? interface a { public function foo(); } interface b extends a { public function baz(Baz $baz); } class c implements b { public function foo() { } public function baz(Baz $baz) { } }

7.4. 7.4
Interface A

Herencia mltiple de interfaces


Interface B

Mtodo m1

Mtodo m2
Interface C extends A,B Mtodo m3

class d implements C

public function m1() public function m2() public function m3()

CIBERTEC

PHP5 Orientado a objetos

40

7.5.

Interface con constants

Para definir constantes se usa el operador const, el cual no podr redefinirse en la implementacin de la clase. <? interface a { const b = 'Interface constant'; } echo a::b; // Sin embargo esto no funcionar ya que no est permitido // sobrescribir constantes class b implements a { const b = 'Class constant'; } ?>

CIBERTEC

Anda mungkin juga menyukai