PHP POO

Page 1

UNIVERSIDAD TECNOLÓGICA DEL VALLE DE TOLUCA Integrantes: 

González Reyes Irving

Rodríguez Pérez Samantha

Tic 91


Objetivo Presentar de manera breve las definiciones de algunos elemento de PHP Orientado a objetos, y asĂ­ mismo mostrar algunos ejemplos referentes a cada elemento presentado.


1.- Elementos que conforman una clase: Atributos: Características que aplican al objeto solo en el caso en que él sea visible en pantalla por el usuario; Entonces sus atributos son el aspecto que refleja, tanto en color, tamaño, posición, si está o no habilitado.

Métodos: Son aquellas funciones que permite efectuar el objeto y que nos rinden algún tipo de servicio durante el transcurso del programa. Determinan a su vez como va a responder el objeto cuando recibe un mensaje.


Ejemplo: <?php class cliente{ //Atributos public $nombre; public $ap; public $am; public $fechaNac; //MĂŠtodos public function salario(){ echo "El pago al cliente es: $10,000"; } } ?>


2.- Referencia this Hace referencia a un atributo de la clase, se usa $this para hacer referencia al objeto (instancia) actual. Dentro de un mĂŠtodo, la variable $this hace referencia al objeto sobre el que invocamos El mĂŠtodo. <?php class promedio{ public $num1; public $num2; public $num3; public $res; public function promediar(){ $this->res = ($this->num1+$this->num2+$this->num3)/3; } ?>

}


3.- Formas para el paso de argumentos a un método Un parámetro influye en el comportamiento o el resultado de la ejecución de la función, procedimiento o subrutina (de ahora en más sólo procedimiento) que lo recibe. Son muy utilizados en la programación.  Los parámetros se pasan por valor .  Paso de parámetros por referencia .  Parámetros por defecto .


 Los parámetros se pasan por valor: Es una manera típica de pasar parámetros en funciones, quiere decir que el cambio de un dato de un parámetro no actualiza el dato de la variable que se pasó a la función.

 Paso de parámetros por referencia: El cambio del valor de un parámetro dentro de una función sí afecta al valor de la variable original. Podemos pasar los parámetros por referencia si, en la declaración de la función, colocamos un "&" antes del parámetro.

 Parámetros por defecto: Los valores por defecto sirven para que los parámetros contengan un dato predefinido, con el que se inicializarán si no se le pasa ningún valor en la llamada de la función. Los valores por defecto se definen asignando un dato al parámetro al declararlo en la función.


<?php class operaciones{ public $n1; public $n2; public $result; //Asignación de valores através de Atributos public function suma(){ $this->resutl = $this->n1 + $this->n2; } //Asignación de valores por medio de parámetros public function resta($n3,$n4){ $res2 = $n3 - $n4; return $res2; } //Asignación de valores por parámetros y resultado por atributo public function multiplicacion($a,$b){ $this->result = $a * $b; } } ?>


4.- Devolver un valor desde un método

Los valores son devueltos usando la sentencia opcional return. Se puede devolver cualquier tipo, incluidos arrays y objetos. Esto causa que la función finalice su ejecución inmediatamente y pase el control de nuevo a la línea desde la que fue llamada.

<?php class numero{ public $a; public $b; public function numMayor($numero1,$numero2){ if($numero1 > $numero2){ echo"El número mayor es: ".$numero1; return true; }else{ echo"El número mayor es: ".$numero2; return false; } } } ?>


5.- Constructor <?php

Los constructores son funciones, o métodos, que se encargan de realizar las tareas de inicialización de los objetos al ser instanciados. El constructor se define dentro de la propia clase, como si fuera otro método. El único detalle es que el constructor debe tener el mismo nombre que la clase.

class estiloTabla{ public $borderTb; public $borderTh; public $infoTh1; public $infoTh2; public function __construct($borderTb,$borderTh,$infoTh1,$infoTh2){ $this->borderTb=$borderTb; $this->borderTh=$borderTh; $this->infoTh1=$infoTh1; $this->infoTh2=$infoTh2; } public function graficarTb(){ echo '<table style="border:'.$this->borderTb.';">'; echo '<tr>'; echo '<th style="border:'.$this->borderTh.';">'; echo $this->infoTh1; echo '</th>'; echo '<th style="border:'.$this->borderTh.';">'; echo $this->infoTh2; echo '</th>'; echo '</tr>'; echo '</table>'; } } ?>


6.- Herencia Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipo especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Cuando un objeto hereda de mĂĄs de una clase se dice que hay herencia mĂşltiple. El ejemplo se muestra junto con el ejemplo de polimorfismo


7.- POLIMORFISMO El polimorfismo, se refiere a la posibilidad de acceder a un variado rango de funciones distintas a través del mismo interfaz. O sea, que, en la práctica, un mismo identificador puede tener distintas formas (distintos cuerpos de función, distintos comportamientos) dependiendo, en general, del contexto en el que se halle inserto. El polimorfismo se puede establecer mediante la sobrecarga, sobre-escritura y la ligadura dinámica.


Ejemplo Clase coche

Clase motocicleta

Clase movimiento

<?php

<?php class coche{

class motocicleta{

<?php class movimiento{

public function avanza(){

public function avanza(){ }

}

public function para(){

public function para(){ }

$obj->avanza();

} public function girar_derecha(){

public function girar_derecha(){ }

}

} ?>

public function mover_adelante($obj){

} ?>

} } ?>



10.- Diferencia entre public, private y protected. Private

Public

Protected

Una clase NO PUEDE ser prívate, al menos que sea anidada.

La clase puede ser usada por cualquier programa de Java sin restricción.

Para los métodos y variables pueden ser solo usados dentro de la clase que los define.

Solo aplica para métodos y variables. Indica que estos componentes esta disponibles para las subclases de la clase (se usa para clases que están en diferentes paquetes)

Sólo se puede acceder desde dentro de la clase.

Se puede acceder desde fuera de la clase.

Se puede acceder desde dentro de la clase y desde clases herederas



Clase abstracta

< ?php

abstract class AbstractClass{ // El método abstracto sólo necesita definir los parámetros requeridos abstract protected function prefixName($name); } class ConcreteClass extends AbstractClass{ // La clase derivada puede definir parámetros opcionales que no estén en la estructura del prototipo

Este Tipo de Clases nos permiten crear “método generales”, que recrean un comportamiento común, pero sin especificar cómo lo hacen.

public function prefixName($name, $separator = "."){ if ($name == "Pacman") { $prefix = "Mr"; } elseif ($name == "Pacwoman") { $prefix = "Mrs"; } else { $prefix = ""; } return "{$prefix}{$separator} {$name}"; } } ?>


<? php include 'cliente.php'; echo "<h3>Ejemplo de clase</h3>"; $obj01=new cliente(); $obj01->salario(); echo"<hr>"; include 'promedio.php'; echo "<h3>Ejemplo de referencia THIS</h3>"; $obj02=new promedio(); $obj02->num1 = 8; $obj02->num2 = 8; $obj02->num3 = 9; $obj02->promediar(); echo"El promedio es: ".$obj02->res; echo"<hr>"; include 'operaciones.php'; echo "<h3>F ormas para el paso de argumentos en un método</h3>"; $obj03=new operaciones(); //Asignación de valores através de Atributos $obj03->n1 = 15; $obj03->n2 = 14; $obj03->suma(); echo"El resultado de la suma es: ".$obj03->resutl; //Asignación de valores por medio de parámetros echo"<br>El resultado de la resta es: ".$obj03->resta(14,8); //Asignación de valores por parámetros y resultado por atributo $obj03->multiplicacion(6,7); echo"<br>El resultado de la multiplicación es: ".$obj03->result;

echo"<hr>";

include 'numero.php';

echo "<h3>Devolver un valor desde un método</h3>"; $obj04=new numero(); $obj04->numMayor(45,8);

echo"<hr>";

include 'estiloTabla.php';

echo "<h3>El Constructor</h3>"; $obj05 = new estiloTabla('2px dashed black ','1px solid red','Texto01','Texto02'); $obj05->graficarTb();

echo"<hr>";

include 'figurasGeometricas.php';

echo "<h3>La Herencia</h3>"; //Perimetro Trapecio $obj06=new trapecio(); echo"Trapecio<br>   El perimetro del trapecio es: ".$obj06->calcularPerimetro(30,20,15,15); $obj07=new circulo(); $obj07->pi = 3.1416; echo"<br>Círculo<br>   El perimetro del círculo es: ".$obj07->calcularPerimetro(45); $obj08=new cuadrado(); echo"<br>Cuadrado<br>   El perimetro del cuadrado es: ".$obj08->calcularPerimetro(10,4);

echo"<hr>";

include 'Polimorfismo/coche.php'; include 'Polimorfismo/motocicleta.php'; include 'Polimorfismo/movimiento.php';

echo "<h3>El Polimorfismo</h3>"; $obj_coche = new coche(); $obj_motocicleta = new motocicleta(); $obj_movimiento = new movimiento(); //Con esta sentencia el coche avanzaría hacia adelante $obj_movimiento->mover_ adelante($obj_coche); echo"El coche avanzo hacia adelante"; //Con esta sentencia la motocicleta avanzaría hacia adelante $obj_movimiento->mover_ adelante($obj_motocicleta); echo"<br>La motocicleta avanz o hacia adelante";

echo"<hr>";

include 'AbstractClass.php';

echo "<h3>Clase Abstracta</h3>"; $class = new ConcreteClass; echo $class->prefixName("Pacman"), "<br>"; echo $class->prefixName("Pacwoman"), "<br>"; ?>


Definición de interfaz

Las interfaces, tal como las clases abstractas. no se pueden instanciar. Sus métodos deben ser re-escritos por la clase que implemente.


public function encender(){

if ($this->estado == "apagado"){ if ($this->bateria > 0){ if ($this->gasolina > 0){

<?php

$this->estado = "encendido";

interface encendible{

$this->bateria --; echo "<br><b>Enciendo...</b> estoy encendido!";

public function encender(); public function apagar();

}else{ echo "<br>No tengo gasolina"; } }else{

}

echo "<br>No tengo baterĂ­a";

class bombilla implements encendible{ public function encender(){ echo "<br>La luz esta encendida..."; } public function apagar(){ echo "<br>La luz esta apagada...";

} }else{ echo "<br>Ya estaba encendido"; } } public function apagar(){ if ($this->estado == "encendido"){ $this->estado = "apagado"; echo "<br><b>Apago...</b> estoy apagado!"; }else{ echo "<br>Ya estaba apagado"; }

} } class coche implements encendible{ private $gasolina; private $bateria; private $estado = "apagado"; function __construct(){ $this->gasolina = 0; $this->bateria = 10; }

} public function cargar_gasolina($litros){ $this->gasolina += $litros; echo "<br>Cargados $litros litros"; } } function enciende_algo(encendible $algo){ $algo->encender(); } echo "<h3>Definicion de interfaz</h3>"; $mibombilla = new bombilla(); $micoche = new coche(); enciende_algo($mibombilla); enciende_algo($micoche); ?>


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.