Diferencia entre revisiones de «Usuario:ManuelRomero/php/opp/introduccion»
De WikiEducator
< Usuario:ManuelRomero | php
(→Repaso básico de la programación orientada a objetos) |
|||
(19 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
{{TEP}} | {{TEP}} | ||
{{:Usuario:ManuelRomero/php/opp/nav}} | {{:Usuario:ManuelRomero/php/opp/nav}} | ||
− | + | ||
<!--__NOEDITSECTION__--> | <!--__NOEDITSECTION__--> | ||
Línea 13: | Línea 13: | ||
[[Imagen:DWES_TituloTema6.png|center]] | [[Imagen:DWES_TituloTema6.png|center]] | ||
|} | |} | ||
− | ==Programación orientada a objetos== | + | __NOTOC__ |
+ | {{#widget:Slides}} | ||
+ | <!--{{:Usuario:ManuelRomero/php/arrays/nav}}--> | ||
+ | <div class="slides layout-regular template-default"> | ||
+ | <div class="slide"> | ||
+ | <!--1 --> | ||
+ | |||
+ | ===Programación orientada a objetos=== | ||
*En programación el paradigma imperativo está basado en funciones y datos, | *En programación el paradigma imperativo está basado en funciones y datos, | ||
*El paradigma orientado a objetos está basado en Objetos. | *El paradigma orientado a objetos está basado en Objetos. | ||
Línea 19: | Línea 26: | ||
*Podemos hablar de ''universo de discurso'' como el sistema que queremos automatizar por software | *Podemos hablar de ''universo de discurso'' como el sistema que queremos automatizar por software | ||
*Un Objeto es una entidad (concreta o abstracta) que presenta una actividad en un entorno concreto, en un determinado universo de discurso. | *Un Objeto es una entidad (concreta o abstracta) que presenta una actividad en un entorno concreto, en un determinado universo de discurso. | ||
− | {{Definicion| '''Objeto''' Cada | + | <br/> |
+ | </div> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
+ | {{Definicion| '''Objeto''' Cada elemento activo''' que identificamos dentro de un determinado univeso de discurso}} | ||
+ | </div> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
{{Ejemplo| | {{Ejemplo| | ||
;En un banco hay cuentas bancarias (objeto) | ;En un banco hay cuentas bancarias (objeto) | ||
Línea 25: | Línea 39: | ||
:Las cuentas se pueden dar de alta, de baja, hacer extracciones e ingresos y transferencias... '''''metodos''''' | :Las cuentas se pueden dar de alta, de baja, hacer extracciones e ingresos y transferencias... '''''metodos''''' | ||
}} | }} | ||
+ | </div> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
*Puede parecer una forma más complicada de programar, pero es una manera de dividir la naturaleza del problema que estamos estudiando en unidades independinetes que pueden interactúan entre ellas. | *Puede parecer una forma más complicada de programar, pero es una manera de dividir la naturaleza del problema que estamos estudiando en unidades independinetes que pueden interactúan entre ellas. | ||
*Cada una de ellas va a tener una identidad propia asignando valores a sus atributos | *Cada una de ellas va a tener una identidad propia asignando valores a sus atributos | ||
*Cada una de ellas va a tener un comportamiento concreto que va a ser lo que sabe hacer para que los demás o el programa principal lo utilice | *Cada una de ellas va a tener un comportamiento concreto que va a ser lo que sabe hacer para que los demás o el programa principal lo utilice | ||
+ | <!--1 --> | ||
+ | </div> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
===Elementos en la programación orientada a objetos=== | ===Elementos en la programación orientada a objetos=== | ||
*De lo dicho anteriormente deducimos que tenemos dos elementos: | *De lo dicho anteriormente deducimos que tenemos dos elementos: | ||
Línea 34: | Línea 55: | ||
*Una clase es la estructura de un tipo concreto de objetos. | *Una clase es la estructura de un tipo concreto de objetos. | ||
*Los objetos son elementos concretos en mi sistema. | *Los objetos son elementos concretos en mi sistema. | ||
+ | </div> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
+ | ;Elementos de la POO | ||
*La estructura común (datos y comportamiento) de los objetos sirven especificar su composición | *La estructura común (datos y comportamiento) de los objetos sirven especificar su composición | ||
*Esta composición queda descrita y especificada en la clase. | *Esta composición queda descrita y especificada en la clase. | ||
Línea 39: | Línea 64: | ||
'''''Atributos''''' ==> Son las características o datos de un objeto | '''''Atributos''''' ==> Son las características o datos de un objeto | ||
Su valor nos da el estado de un objeto en un momento dado | Su valor nos da el estado de un objeto en un momento dado | ||
+ | </div> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
+ | ;Elementos de la POO | ||
'''''Comportamiento'''''==> permiten modificar el estado de un objetos | '''''Comportamiento'''''==> permiten modificar el estado de un objetos | ||
Permiten saber como es el estado de un objeto | Permiten saber como es el estado de un objeto | ||
Línea 45: | Línea 74: | ||
También lo son acciones internas para facilitar las cosas al objeto | También lo son acciones internas para facilitar las cosas al objeto | ||
− | [[Archivo:clase.png]] | + | [[Archivo:clase.png|300px]] |
− | + | </div> | |
− | ==OPP En php== | + | <!--1 --> |
+ | <div class="slide"> | ||
+ | ===OPP En php=== | ||
*PHP no se diseñó como lenguaje orientado a objetos, por lo que muchas de las carácterísticas de este paradigma se ha ido incorporando en las últimas versiones, especialemnte a partir de la versión 5.3. | *PHP no se diseñó como lenguaje orientado a objetos, por lo que muchas de las carácterísticas de este paradigma se ha ido incorporando en las últimas versiones, especialemnte a partir de la versión 5.3. | ||
*PHP Almacena el valor de un objeto como una referencia (dirección de memoria), no guarda el valor. | *PHP Almacena el valor de un objeto como una referencia (dirección de memoria), no guarda el valor. | ||
*Esto implica que si queremos pasar un objeto a través de la red, debemos serializarlo, para que viaje también el valor del mismo. Veremos este concepto más adelante. | *Esto implica que si queremos pasar un objeto a través de la red, debemos serializarlo, para que viaje también el valor del mismo. Veremos este concepto más adelante. | ||
− | + | </div> | |
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
+ | ;Los elementos de una clase en php se identifican como | ||
#propiedades: son los atributos o carácterísticas de la clase. | #propiedades: son los atributos o carácterísticas de la clase. | ||
#métodos: representas el comportamiento de la misma. | #métodos: representas el comportamiento de la misma. | ||
+ | </div> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
;Definir una clase en php | ;Definir una clase en php | ||
<source lang=php> | <source lang=php> | ||
Línea 63: | Línea 100: | ||
*'''''NombreClase''''' es un identificador válido con la siguiente expresión regular | *'''''NombreClase''''' es un identificador válido con la siguiente expresión regular | ||
^[a-zA-Z_][a-zA-Z0-9_]*$ | ^[a-zA-Z_][a-zA-Z0-9_]*$ | ||
+ | *El nombre de las clases se recomienda que empiece por mayúsculas | ||
+ | </div> | ||
+ | |||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
*'''''propiedades''''' son las variables o constantes definidas dentro de la clase. | *'''''propiedades''''' son las variables o constantes definidas dentro de la clase. | ||
*'''''métodos''''' son las funciones que definirán el comportamiento de la clase. | *'''''métodos''''' son las funciones que definirán el comportamiento de la clase. | ||
+ | {{Ejemplo| | ||
+ | Vamos a crear una clase llamada fecha | ||
+ | *Atributos de la clase (dia, mes, year) | ||
+ | *Metodos (obtener la fecha como una cadena de caracteres | ||
+ | }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ===Pilares básicos de la POO=== | ||
+ | {{Puntos clave| | ||
+ | ;Encapsulación | ||
+ | ;Herecia | ||
+ | ;Polimorfismo | ||
+ | ;Abstraccion | ||
+ | }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ===Encapsulación: Acceso a los componentes=== | ||
+ | *A la hora de definir tanto las propiedades como los métodos, especificaremos el nivel de acceso que se tiene a ese elemento | ||
+ | *Es una buena práctica de programación no dejar acceso directo a los atributos de una clase, sino acceder a ellos a través de los métodos | ||
+ | *LA encapsulación es uno de los pilares de la programación orientada a objetos y me permite o restringe la visibilidad de sus componentes | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ===visibilidad=== | ||
+ | *Visibilidad o alcance de las propiedades no constantes y los métodos de las clases | ||
+ | *Implementa el principio de encapsulación. | ||
+ | *Permite especificar el nivel de acceso que se tienen sobre los elementos | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ;Visibilidad | ||
+ | *Son tres los tipos de visibilidad que podemos especificar: | ||
+ | ;public : tipo de visibilidad asignada por defecto en caso de no especificar. | ||
+ | ;private | ||
+ | ;protected | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ;public | ||
+ | *Este tipo de visibilidad es asignada por defecto | ||
+ | *Los elementos públicos pueden ser accesibles en cualquier momento del programa. | ||
+ | *Recordemos que para acceder a un elemento debemos especificar el objeto o clase del que queremos el elemento | ||
+ | *Si el elemento es estático o constante usaremos el operador '''''::''''' llamado operador de especificación ámbito [[#::]] | ||
+ | *Si el elemento es no estático accedemos a través del operador '''''->''''' | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ;private | ||
+ | *Los elementos especificado con este modificador de acceso hace que su visibilidad se reduzca al interior de la clase, no pudiendo acceder a ellos desde fuera | ||
+ | *En OOP es una tendencia hacer todos los atributos privados y acceder a ellos por los métodos setter and getter. | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | class Usuario { | ||
+ | private $usuario; | ||
+ | private $password; | ||
+ | |||
+ | public function __construct($usuario) { | ||
+ | $this->password = 'passDefecto'; | ||
+ | $this->usuario = $usuario; | ||
+ | } | ||
+ | |||
+ | public function __destruct() { | ||
+ | echo 'Me voy......'; | ||
+ | } | ||
+ | public function getUsuario(){ | ||
+ | return $this->usuario; | ||
+ | } | ||
+ | public function getPass(){ | ||
+ | return $this->password; | ||
+ | |||
+ | } | ||
+ | public function setUsuario($user){ | ||
+ | this->usuario =$user; | ||
+ | } | ||
+ | public function setPass($pass){ | ||
+ | this->password =$pass; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | $usuario = new Usuario('manolo'); | ||
+ | //.... | ||
+ | $pass = $_POST['pass']; | ||
+ | //.... | ||
+ | $usuario->setPass($pass); | ||
+ | //... | ||
+ | ?> | ||
+ | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ;protected | ||
+ | *Este tipo de visibilidad implica que los elementos así especificados solo son accesible por la propia clase y por las clases derivadas | ||
+ | *Para ello hay que ver la herencia que veremos más adelante | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | class persona{ | ||
+ | protected $nombre; | ||
+ | protected $fNac; | ||
+ | //.... | ||
+ | } | ||
+ | //..... | ||
+ | class medico extends persona{ | ||
+ | private $numColegiado; | ||
+ | |||
+ | public function __construct($nombre, $fechaNacimiento, $colegiado) { | ||
+ | $this->nombre=$nombre; | ||
+ | $this->fNac=$fechaNacimiento; | ||
+ | $this->numColegiado=$colegiado; | ||
+ | |||
+ | } | ||
+ | public function visualiza(){ | ||
+ | echo "Medico $this->nombre"; | ||
+ | } | ||
+ | } | ||
+ | $medicoPueblo1= new medico("pedro", "1/1/1969","123456"); | ||
+ | $medicoPueblo1->visualiza(); | ||
+ | |||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
===Propiedades=== | ===Propiedades=== | ||
*Al igual que en el código estructurado los valores que almaceno en memoria, las propiedades de los objetos pueden ser. | *Al igual que en el código estructurado los valores que almaceno en memoria, las propiedades de los objetos pueden ser. | ||
Línea 75: | Línea 240: | ||
*A una constante hay que asignarle un valor no pudiendo asignar expresiones. | *A una constante hay que asignarle un valor no pudiendo asignar expresiones. | ||
*Todos los objetos de la misma clase comparte el valor de la constante. Por lo que se tomará como un valor estático. | *Todos los objetos de la misma clase comparte el valor de la constante. Por lo que se tomará como un valor estático. | ||
− | + | </div> | |
+ | |||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
+ | ;Accediendo al valor de una constante | ||
#Dentro de la clase: usaremos el operador [[#self|'''''self''''']] junto con el '''''[[#::|operador de resolución de ámbito ::''''']] | #Dentro de la clase: usaremos el operador [[#self|'''''self''''']] junto con el '''''[[#::|operador de resolución de ámbito ::''''']] | ||
#En el programa: identificando la clase, mediante el nombre de la clase, o bien la variable objeto de esa clase junto con el operador de resolución de ámbito '''''::''''', seguido del identificador de la constante. | #En el programa: identificando la clase, mediante el nombre de la clase, o bien la variable objeto de esa clase junto con el operador de resolución de ámbito '''''::''''', seguido del identificador de la constante. | ||
+ | *Vemos un ejemplo de su uso | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
Línea 97: | Línea 267: | ||
?> | ?> | ||
</source> | </source> | ||
+ | </div> | ||
+ | <!--1 --> | ||
+ | <div class="slide"> | ||
+ | |||
+ | {{Ejemplo| | ||
+ | Creamos la clase factura | ||
+ | *Constantes IVA | ||
+ | *Atributos Importe Base, fecha, impuestos, Importe bruto, estado (pagada o pendiente) | ||
+ | *Métodos: imprime }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
;Variables | ;Variables | ||
*Estas propiedades | *Estas propiedades | ||
*Las variables siguen la misma regla de construcción que vistas anteriormente. | *Las variables siguen la misma regla de construcción que vistas anteriormente. | ||
*Las propiedades de la clase al igual que los métodos pueden especificárseles una determinada [[#visibilidad]] o alcance, siendo el valor por defecto '''''public'''''. | *Las propiedades de la clase al igual que los métodos pueden especificárseles una determinada [[#visibilidad]] o alcance, siendo el valor por defecto '''''public'''''. | ||
− | *También puedes ser [[#static]] o estáticas, también conocidas como variables de la clase, si se | + | *También puedes ser [[#static]] o estáticas, también conocidas como variables de la clase, si se especifica con la palabra reservada '''''[[#static]]'''''. |
*Dado que php es de tipado dinámico, si dentro de un método de la clase quiero acceder a una propiedad de la misma he de indicarlo usando la seudovariable '''''[[#$this]]'''' | *Dado que php es de tipado dinámico, si dentro de un método de la clase quiero acceder a una propiedad de la misma he de indicarlo usando la seudovariable '''''[[#$this]]'''' | ||
*En este caso no podremos el '''''$''''' delante del nombre de la propiedad | *En este caso no podremos el '''''$''''' delante del nombre de la propiedad | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
class Propiedades{ | class Propiedades{ | ||
public $propiedad = "rojo"; | public $propiedad = "rojo"; | ||
− | function getPropiedad(){ | + | public function getPropiedad(){ |
echo "\$propiedad ahora es una variable local a método y no tiene valor: --$propiedad--<br/>"; | echo "\$propiedad ahora es una variable local a método y no tiene valor: --$propiedad--<br/>"; | ||
− | $propiedad=" | + | $propiedad="azul"; |
− | + | ||
echo "Ahora visualizo el valor de \$propiedad del método: --$propiedad--<br/>"; | echo "Ahora visualizo el valor de \$propiedad del método: --$propiedad--<br/>"; | ||
+ | echo "Ahora visualizo el valor de \$propiedad de la clase: --$this->propiedad--<br/>"; | ||
} | } | ||
} | } | ||
Línea 118: | Línea 302: | ||
$a = new Propiedades(); | $a = new Propiedades(); | ||
$a->getPropiedad(); | $a->getPropiedad(); | ||
− | ?></source> | + | ?> |
+ | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | |||
===Métodos=== | ===Métodos=== | ||
*Es la forma de especificar el comportamiento de la clase | *Es la forma de especificar el comportamiento de la clase | ||
Línea 124: | Línea 313: | ||
*Los métodos de detallan usando la palabra reservada '''''function''''' | *Los métodos de detallan usando la palabra reservada '''''function''''' | ||
*En php dentro de la programación orientada a objetos tenemos una serie o tipo de métodos que conviene conocer y que posteriormente estudiaremos | *En php dentro de la programación orientada a objetos tenemos una serie o tipo de métodos que conviene conocer y que posteriormente estudiaremos | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
;[[#métodos contructor y destructor]] | ;[[#métodos contructor y destructor]] | ||
*son el método __construct(..) y __destruct(..) | *son el método __construct(..) y __destruct(..) | ||
*Su implementación es libre para cada clase, | *Su implementación es libre para cada clase, | ||
*Su invocación es transparente para el programador y se realiza siempre respectivamente al crear el objeto, y cuando este es destruido | *Su invocación es transparente para el programador y se realiza siempre respectivamente al crear el objeto, y cuando este es destruido | ||
+ | *El nombre es __construct y __destruct respectivamente, si bien, la lista de argumentos que pueden recibir, así como las acciones que pueden realizar es libre de implementar. | ||
+ | *Estos métodos que se invocan automáticamente cuando ocurre algo, en php se conocen como métodos mágicos. | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
;[[#métodos mágicos]] | ;[[#métodos mágicos]] | ||
*Una serie de métodos cuyos nombres están reservados y se pueden usar con cualquier objeto de cualquier clase. | *Una serie de métodos cuyos nombres están reservados y se pueden usar con cualquier objeto de cualquier clase. | ||
+ | *Su nombre siempre empieza por __ | ||
*Un ejemplo son el __construct(...) y __destruct(...) | *Un ejemplo son el __construct(...) y __destruct(...) | ||
http://php.net/manual/es/language.oop5.magic.php | http://php.net/manual/es/language.oop5.magic.php | ||
− | + | </div> | |
− | + | <div class="slide"> | |
− | + | ||
− | + | ||
− | + | ||
− | < | + | |
− | class | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
===Instancias: Operador '''''new'''''=== | ===Instancias: Operador '''''new'''''=== | ||
*Una clase describe lo común de unos determinados objetos | *Una clase describe lo común de unos determinados objetos | ||
Línea 184: | Línea 350: | ||
{{Actividad| | {{Actividad| | ||
*Crea una clase llamada producto con los atributos código, nombre y precio}} | *Crea una clase llamada producto con los atributos código, nombre y precio}} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
;Accediendo a los atributos de un objeto: seudovariable $this | ;Accediendo a los atributos de un objeto: seudovariable $this | ||
*$this es una seudovariable que referenica al objeto del ámbito en el cual está usado | *$this es una seudovariable que referenica al objeto del ámbito en el cual está usado | ||
*Se utiliza dentro de la definición de la propia clase y hará referencia a un objeto concreto en un momento dado de la clase en la que está siendo utilizado | *Se utiliza dentro de la definición de la propia clase y hará referencia a un objeto concreto en un momento dado de la clase en la que está siendo utilizado | ||
− | + | </div> | |
+ | |||
+ | <div class="slide"> | ||
+ | ;Ejemplo | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
Línea 201: | Línea 372: | ||
} | } | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | </div> | |
− | + | <div class="slide"> | |
− | </ | + | {{Actividad| |
− | + | =Empleado= | |
− | < | + | Confeccionar una clase Empleado, definir como atributos su nombre y sueldo. |
− | + | Definir un método inicializar que lleguen como dato el nombre y sueldo. Plantear un segundo método que imprima el nombre y un mensaje si debe o no pagar impuestos (si el sueldo supera a 3000 paga impuestos) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang=php> | <source lang=php> | ||
+ | <html> | ||
+ | <head> | ||
+ | <title>Pruebas</title> | ||
+ | </head> | ||
+ | <body> | ||
<?php | <?php | ||
− | + | class Empleado { | |
− | + | private $nombre; | |
− | class | + | private $sueldo; |
− | + | ||
− | + | public function asigna($nom,$sue) | |
− | + | { | |
− | + | $this->nombre=$nom; | |
− | + | $this->sueldo=$sue; | |
− | + | } | |
− | + | public function pagaImpuestos() | |
− | + | { | |
− | + | echo $this->nombre; | |
− | + | echo '-'; | |
− | + | if ($this->sueldo>3000) | |
− | + | echo 'Debe pagar impuestos'; | |
− | + | else | |
− | + | echo 'No paga impuestos'; | |
− | + | echo '<br>'; | |
− | + | } | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
+ | $empleado1=new Empleado(); | ||
+ | $empleado1->inicializar('Luis',2500); | ||
+ | $empleado1->pagaImpuestos(); | ||
+ | $empleado1=new Empleado(); | ||
+ | $empleado1->inicializar('Carla',4300); | ||
+ | $empleado1->pagaImpuestos(); | ||
?> | ?> | ||
+ | </body> | ||
+ | </html> | ||
</source> | </source> | ||
− | <source lang=php> | + | ===Actividades=== |
+ | <br/> | ||
+ | {{Actividad| | ||
+ | Confeccionar una clase Menu. Permitir añadir la cantidad de opciones que necesitemos. Mostrar el menú en forma horizontal o vertical (según que método llamemos) | ||
+ | }} | ||
+ | <source lang = php> | ||
+ | <html> | ||
+ | <head> | ||
+ | <title>Pruebas</title> | ||
+ | </head> | ||
+ | <body> | ||
<?php | <?php | ||
− | + | class Menu { | |
− | + | private $enlaces=array(); | |
− | class | + | private $titulos=array(); |
− | + | public function cargarOpcion($en,$tit) | |
− | + | { | |
− | + | $this->enlaces[]=$en; | |
− | + | $this->titulos[]=$tit; | |
− | + | } | |
− | + | public function mostrarHorizontal() | |
− | + | { | |
− | + | for($f=0;$f<count($this->enlaces);$f++) | |
− | + | { | |
− | + | echo '<a href="'.$this->enlaces[$f].'">'.$this->titulos[$f].'</a>'; | |
+ | echo "-"; | ||
} | } | ||
− | + | } | |
− | + | public function mostrarVertical() | |
− | + | { | |
− | + | for($f=0;$f<count($this->enlaces);$f++) | |
− | + | { | |
− | + | echo '<a href="'.$this->enlaces[$f].'">'.$this->titulos[$f].'</a>'; | |
− | + | echo "<br>"; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
− | + | } | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
+ | $menu1=new Menu(); | ||
+ | $menu1->cargarOpcion('http://www.google.com','Google'); | ||
+ | $menu1->cargarOpcion('http://www.yahoo.com','Yhahoo'); | ||
+ | $menu1->cargarOpcion('http://www.msn.com','MSN'); | ||
+ | $menu1->mostrarVertical(); | ||
?> | ?> | ||
+ | </body> | ||
+ | </html> | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
{{Actividad| | {{Actividad| | ||
Construir una clase llamado racional que podamos inicializar con un string del tipo por ejemplo "8/5" | Construir una clase llamado racional que podamos inicializar con un string del tipo por ejemplo "8/5" | ||
− | + | }} | |
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
Línea 412: | Línea 491: | ||
</source> | </source> | ||
− | + | ||
;Sobrecarga | ;Sobrecarga | ||
Un concepto muy importante es la sobre carga. | Un concepto muy importante es la sobre carga. | ||
Línea 441: | Línea 520: | ||
{{Actividad|Vamos a simular la sobre carga de la clase racional | {{Actividad|Vamos a simular la sobre carga de la clase racional | ||
<source lang=php> | <source lang=php> | ||
+ | |||
<?php | <?php | ||
/** | /** | ||
Línea 550: | Línea 630: | ||
*Código implementado en clase | *Código implementado en clase | ||
+ | <!-- | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
Línea 679: | Línea 760: | ||
</source> | </source> | ||
− | === | + | ===Métodos mágicos=== |
*Corresponde a un conjunto de métodos que tiene ya una utilidad concreta | *Corresponde a un conjunto de métodos que tiene ya una utilidad concreta | ||
*Son nombres reservados y no se pueden utilizar para identificar otros elementos | *Son nombres reservados y no se pueden utilizar para identificar otros elementos | ||
Línea 857: | Línea 938: | ||
</source> | </source> | ||
− | |||
}} | }} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==::== | ==::== | ||
Línea 878: | Línea 951: | ||
# '''''parent''''' : si el elemento pertenece a la clase de la que heredo | # '''''parent''''' : si el elemento pertenece a la clase de la que heredo | ||
#'''''static''''' Al igual que self se puede usar la palabra reservada estatic, para acceder a un elemento estático de la clase. | #'''''static''''' Al igual que self se puede usar la palabra reservada estatic, para acceder a un elemento estático de la clase. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Línea 1008: | Línea 991: | ||
===pseudovariables '''''this'''''=== | ===pseudovariables '''''this'''''=== | ||
===operador '''''self''''' y '''''parent'''''=== | ===operador '''''self''''' y '''''parent'''''=== | ||
− | |||
Última revisión de 02:33 1 jul 2016
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
|