Tema 02 - POO Con PHP
Tema 02 - POO Con PHP
Qu es POO?
La programacin orientada a objetos
es una metodologa de
programacin avanzada y
bastante extendida, en la que los
sistemas se modelan creando clases,
que son un conjunto de datos y
funcionalidades.
Las clases son definiciones, a partir
de las que se crean objetos.
Los objetos son ejemplares de una
clase determinada y como tal,
disponen de los datos y
funcionalidades definidos en la clase.
Caractersticas POO
Abstraccin
Encapsulamiento
Polimorfismo
Herencia
Creacin de un objeto
<?php
$per1 = new Persona();
echo $per1->nombre;
$per1->inicializar('Juan');
$per1->imprimir();
$per2 = new Persona();
$per2->inicializar('Ana');
$per2->imprimir();
Ninguno
Juan
Ana
Declaracin de un constructor
<?php
class Persona {
public $nombre;
public function __construct($nom) {
$this->nombre=$nom;
}
public function imprimir() {
echo $this->nombre; echo '<br>';
}
}
Jaime
<?php
public function escribir($param) {
echo $param;
}
public function metodo(){
$this->escribir('hola mundo');
}
Herencia
Superclase o clase Padre:
Clase de la que desciende o deriva una clase.
Subclase:
Clase descendiente de otra, tendr todos los atributos y
mtodos de su Superclase' o 'clase Padre.
class nombreClase extends clasePadre {
}
Herencia de clases
<?php
class Operacion {
public $valor1 = 20;
public $valor2 = 10;
public function suma(){
echo 'Resultado: '.($this->valor1+$this->valor2);
}
}
class Resolver extends Operacion{
public function resta() {
echo 'Resultado: '.($this->valor1-$this->valor2);
}
}
20
10
Resultado: 30
Resultado: 10
20
Fatal error: Cannot
access protected property
Resolver::$valor
Resultado: 30
Fatal error: Call to
protected method
Operacion::sumar()
Sobreescritura de mtodos
Una subclase puede crear un mtodo con el
mismo nombre que el mtodo de la clase padre.
Cuando creamos un objeto de la subclase, el
mtodo que se llamar es el de dicha subclase.
Sobreescribiendo un mtodo
<?php
class Operacion {
public function operar(){
echo 'Desde el padre';
}
}
class Resolver extends Operacion{
public function operar(){
echo 'Desde el hijo';
parent::operar();
}
}
$oper = new Resolver();
$oper->operar();
Desde el hijo
Desde el padre
Clase abstracta
<?php
abstract class Operacion {
protected $valor1;
protected $valor2;
protected $resultado;
}
class Suma extends Operacion{
public function operar(){
$this->resultado=$this->valor1+$this->valor2;
}
}
Mtodos abstractos
Al definir un mtodo abstracto en una superclase, obligatoriamente
debemos crear el mismo mtodo en la subclase.
Un mtodo abstracto se declara en una clase pero no se implementa.
<?php
abstract class Operacion {
public abstract function operar();
}
class Resta extends Operacion{
public function operar() {
echo Restando';
}
}
<?php
class Imagen {
private $imagen;
public function __destruct() {
imageDestroy($this->imagen);
}
echo 'Largo:'.Util::largo('hola');
?>