0% encontró este documento útil (0 votos)
189 vistas30 páginas

Tema 02 - POO Con PHP

La programación orientada a objetos es una metodología de programación avanzada que modela sistemas creando clases que contienen datos y funcionalidades. Las clases definen objetos que son ejemplares de la clase. Las características de la POO incluyen abstracción, encapsulamiento, polimorfismo y herencia. PHP soporta POO mediante la creación de clases, objetos, métodos y atributos.

Cargado por

syphon18
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
189 vistas30 páginas

Tema 02 - POO Con PHP

La programación orientada a objetos es una metodología de programación avanzada que modela sistemas creando clases que contienen datos y funcionalidades. Las clases definen objetos que son ejemplares de la clase. Las características de la POO incluyen abstracción, encapsulamiento, polimorfismo y herencia. PHP soporta POO mediante la creación de clases, objetos, métodos y atributos.

Cargado por

syphon18
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 30

POO con PHP

Por: Jhonathan Hernndez Plaza

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

Sintaxis de una Clase


<?php
class [Nombre de la Clase] {
[atributos]
[mtodos]
}

Declaracin de una Clase


<?php
class Persona {
public $nombre = 'Ninguno';
public function inicializar($nom) {
$this->nombre = $nom;
}
public function imprimir() {
echo '<br>'.$this->nombre;
}
}

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

Mtodos constructor de una clase


Es el primer mtodo en ejecutarse.
No retorna datos.
Sintaxis:
public function __construct([parmetros]) {
[algoritmo]
}

Declaracin de un constructor
<?php
class Persona {
public $nombre;
public function __construct($nom) {
$this->nombre=$nom;
}
public function imprimir() {
echo $this->nombre; echo '<br>';
}
}

Creacin de un objeto con constructor


<?php
$per1 = new Persona('Jaime');
$per1->imprimir();

Jaime

Llamada de mtodos dentro una clase


Utilizamos la sintaxis: $this->[nombre del mtodo]

<?php
public function escribir($param) {
echo $param;
}
public function metodo(){
$this->escribir('hola mundo');
}

Modificadores de acceso a atributos


public y private
<?php
class Tabla {
public $cantFilas;
private $cantColumnas;
}
Un atributo al ser privado, no lo podemos
modificar fuera de la clase.

Acceso a atributos public y private


<?php
$tabla1 = new Tabla();
$tabla1->cantFilas = 10;
Fatal error: Cannot
access private property
Tabla::$ cantColumnas

$tabla2 = new Tabla();


$tabla2->cantColumnas = 20;

Modificadores de acceso a mtodos


public y private
<?php
class Tabla {
private$cantFilas;
private $cantColumnas;
private function crearTabla(){
$this->cantFilas = 10;
$this->cantColumnas = 5;
echo 'Tabla con '.$this->cantFilas.' filas y '.$this->cantColumnas.'
columnas.';
}
public function datosTabla(){
$this->crearTabla();
}
}
Un mtodo privado solo puede ser llamado desde otro mtodo de la clase. No
podemos llamar a un mtodo privados desde donde definimos un
objeto.

Acceso a mtodos public y private


<?php
$tabla1 = new Tabla();
$tabla1->datosTabla();
Tabla con 10 filas y 5
columnas.

$tabla2 = new Tabla();


$tabla2->crearTabla();

Fatal error: Call to


private method
Tabla::crearTabla()

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);
}
}

Acceso a mtodos y atributos


heredados
<?php
$oper= new Resolver();
echo $ oper->valor1;
echo $ oper->valor2;
$oper->suma();
$oper->resta();

20
10
Resultado: 30
Resultado: 10

Modificadores de acceso a atributos


protected
<?php
class Operacion {
protected $valor = 20;
}
class Resolver extends Operacion{
public function getValor() {
return $this->valor;
}
}
Un atributo protected puede ser accedido por
la clase, por todas sus subclases pero no por los
objetos que definimos de dichas clases.

Acceso a atributos protected


<?php
$oper1 = new Resolver();
echo $oper1->getValor();
$oper2 = new Resolver();
echo $oper2->valor;

20
Fatal error: Cannot
access protected property
Resolver::$valor

Modificadores de acceso a mtodos


protected
<?php
class Operacion {
protected $valor1 = 10;
protected $valor2 = 20;
protected function sumar(){
echo 'Resultado: '.($this->valor1+$this->valor2);
}
}
class Resolver extends Operacion{
public function operar() {
$this->sumar();
}
}
Un mtodo protected puede ser accedido por la clase, por todas sus
subclases pero no por los objetos que definimos de dichas clases.

Acceso a mtodos protected


<?php
$oper1 = new Resolver();
echo $oper1->operar();
$oper2 = new Resolver();
echo $oper2->sumar();

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

Clases abstractas y concretas


Se producir un error si queremos definir un objeto
de dicha clase
Las clases concretas son todas aquellas que no le
antecedemos el modificador abstract.
Solo podemos definir objetos de las clases concretas.
Sintaxis:
abstract class [nombre de clase] {
[atributos]
[metodos]
}

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';
}
}

Clases y metodo final


Si una clase tiene declarado el modificador final,
dicha clase no se puede heredar.
Si un mtodo tiene declarado el modificador final,
ninguna subclase puede sobreescribirlo.
<?php
final class Suma extends Operacion{
public final function imprimir () {
.
}
}

Mtodo destructor de una clase


(__destruct)
No retorna datos.
Es el ltimo mtodo en ejecutarse.

<?php
class Imagen {
private $imagen;
public function __destruct() {
imageDestroy($this->imagen);
}

Mtodos estticos de una clase (static)


<?php
class Util {

public static function largo($cad) {


return strlen($cad);
}

echo 'Largo:'.Util::largo('hola');

?>

Un mtodo esttico no puede acceder a los


atributos de una instancia y se puede llamar sin
tener que crear un objeto de dicha clase.

También podría gustarte