Diferencia entre revisiones de «Plantilla:PHP/SintasixPHPOOP»
De WikiEducator
Línea 153: | Línea 153: | ||
*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 | *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. | *En OOP es una tendencia hacer todos los atributos privados y acceder a ellos por los métodos setter and getter. | ||
+ | |||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
Línea 192: | Línea 193: | ||
?> | ?> | ||
</source> | </source> | ||
+ | {{Tip| A un elemento '''''private''''' de una clase, tampoco podrá acceder desde clases que deriven de ésta }} | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
;protected | ;protected | ||
*Este tipo de visibilidad implica que los elementos así especificados solo son accesible por la propia clase y por las clases derivadas | *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 | + | *Para ello hay que ver la herencia que veremos más adelante dónde propondremos un ejemplo |
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
Línea 230: | Línea 232: | ||
<!--1 --> | <!--1 --> | ||
<div class="slide"> | <div class="slide"> | ||
+ | |||
+ | |||
+ | <div class="slide"> | ||
+ | |||
+ | === Declarando obejetos: Operador '''''new'''''=== | ||
+ | *Permite crear instancias de un objeto en memoria. | ||
+ | *Una clase describe lo común de unos determinados objetos, la estructura o composición. | ||
+ | *Las clases en principio no se usan durante la ejecución, salvo si queremos acceder a '''métodos o propiedades estáticas''' como veremos un poco más adelante | ||
+ | *Lo que se usa en los programas son los '''''objetos'''''. | ||
+ | *Para ello debemos ''instanciar'' objetos de las clases | ||
+ | *Esto se hace con el operador '''new''' | ||
+ | *Una vez '''instanciado''' ya tenemos la referencia del objeto y lo podemos utilizar | ||
+ | *hay que pensar que en memoria tenemos '''toda''' la estructura del la clase por cada objeto | ||
+ | [[Archivo:Objetos4.png]] | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ====$this==== | ||
+ | *Accediendo a los atributos de un objeto: seudovariable $this | ||
+ | *$this es una seudovariable que referencia 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; esto dentro de la clase en la que está siendo utilizado | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ;Ejemplo | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | class MyClase | ||
+ | { | ||
+ | function ser_estar() | ||
+ | { | ||
+ | if (isset($this)) { | ||
+ | echo '$this Ahora soy por que estoy'; | ||
+ | } else { | ||
+ | echo "\$this ni es ni está.\n"; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | *Podemos probar este código de la siguiente manera en un programa principal | ||
+ | <source lang=php> | ||
+ | .... | ||
+ | require "MyClass.php"; | ||
+ | $a = new MyClass(); | ||
+ | $a->ser_estar(); //Invocamos al método de un objeto | ||
+ | |||
+ | MyClass::ser_estar(); //Invocamos al método de manera forzada, sin que exista un objeto concreto | ||
+ | |||
+ | |||
+ | </source> | ||
+ | |||
+ | |||
===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 270: | Línea 323: | ||
<div class="slide"> | <div class="slide"> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
Línea 333: | Línea 381: | ||
http://php.net/manual/es/language.oop5.magic.php | http://php.net/manual/es/language.oop5.magic.php | ||
</div> | </div> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<div class="slide"> | <div class="slide"> | ||
{{Actividad| | {{Actividad| | ||
Línea 485: | Línea 495: | ||
?> | ?> | ||
</source> | </source> | ||
+ | |||
+ | {{Ejemplo| | ||
+ | Creamos la clase factura | ||
+ | *Constantes IVA | ||
+ | *Atributos Importe Base, fecha, impuestos, Importe bruto, estado (pagada o pendiente) | ||
+ | *Métodos: imprime }} | ||
===Sobrecarga=== | ===Sobrecarga=== | ||
Línea 959: | Línea 975: | ||
Las clases que contengan métodos abstractos no se pueden instanciar en memoria. | Las clases que contengan métodos abstractos no se pueden instanciar en memoria. | ||
===métodos estáticos=== | ===métodos estáticos=== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||