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 movimiento
Clase motocicleta
Clase coche <?php
<?php
class coche{
class motocicleta{
public function avanza(){
public function avanza(){
}
}
public function para(){
public function para(){
}
}
public function girar_derecha(){
public function girar_derecha(){
}
<?php
public function mover_adelante($obj){ $obj->avanza();
?>
}
}
?>
} ?>
class movimiento{
}
}
10.- Diferencia entre public, private y protected. Private
Public
Protected
Una clase NO PUEDE ser prívate, al La clase puede ser usada por cualquier Solo aplica para métodos y variables. Indica que menos que sea anidada. programa de Java sin restricción. estos componentes esta disponibles para las subclases de la clase (se usa para clases que están Para los métodos y variables pueden en diferentes paquetes) ser solo usados dentro de la clase que los define.
Sólo se puede acceder desde dentro Se puede acceder desde fuera de la clase. 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);
•
}
Este Tipo de Clases nos permiten crear “método generales”, que recrean un comportamiento común, pero sin especificar cómo lo hacen.
class ConcreteClass extends AbstractClass{ // La clase derivada puede definir parámetros opcionales que no estén en la estructura del prototipo public function prefixName($name, $separator = "."){ if ($name == "Pacman") { $prefix = "Mr"; } elseif ($name == "Pacwoman") { $prefix = "Mrs"; } else { $prefix = ""; } return "{$prefix}{$separator} {$name}"; } } ?>
<?ph
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>Formas para el paso de argumentos en un método</h3>"
$obj03=new operaciones(
//Asignación de valores através de Atributo
$obj03->n1 = 15
$obj03->n2 = 14
$obj03->suma(
echo"El resultado de la suma es: ".$obj03->resut
//Asignación de valores por medio de parámetro
echo"<br>El resultado de la resta es: ".$obj03->resta(14,8) //Asignación de valores por parámetros y resultado por atribut
$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 Trapeci
$obj06=new trapecio(
echo"Trapecio<br
&nbsp; El perimetro del trapecio es: ".$obj06->calcularPerimetro(30,20,15,15)
$obj07=new circulo(
$obj07->pi = 3.1416
echo"<br>Círculo<br &nbsp; El perimetro del círculo es: ".$obj07->calcularPerimetro(45
$obj08=new cuadrado(
echo"<br>Cuadrado<br
&nbsp; 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 adelant
$obj_movimiento->mover_adelante($obj_coche
echo"El coche avanzo hacia adelante"
//Con esta sentencia la motocicleta avanzaría hacia adelant
$obj_movimiento->mover_adelante($obj_motocicleta
echo"<br>La motocicleta avanzo 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.
<?php interface encendible{ public function encender(); public function apagar(); } class bombilla implements encendible{ public function encender(){ echo "<br>La luz esta encendida..."; } public function apagar(){ echo "<br>La luz esta apagada..."; }
}
class coche implements encendible{ private $gasolina; private $bateria; private $estado = "apagado"; function __construct(){ $this->gasolina = 0; $this->bateria = 10; }
public function encender(){ if ($this->estado == "apagado"){ if ($this->bateria > 0){ if ($this->gasolina > 0){ $this->estado = "encendido"; $this->bateria --; echo "<br><b>Enciendo...</b> estoy encendido!"; }else{ echo "<br>No tengo gasolina"; } }else{ echo "<br>No tengo baterĂa"; } }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"; } } 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); ?>