Está en la página 1de 9

m

er as
co
eH w
o.
Control Semana 3
rs e
ou urc
Alvaro Figueroa

Programación Avanzada
o
aC s

Instituto IACC
vi y re

20 de Julio de 2020
ed d
ar stu
is
Th
sh

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
Desarrollo

Basándose en el diseño lógico realizado en el control de la semana 2, en el cual decía que:

Usted ha sido seleccionado para diseñar lógicamente (puede usar elementos gráficos como

formas) un sistema para el registro de estudiantes de colegios privados de la ciudad de

Santiago, este sistema debe manejar las personas dentro del proceso como son: estudiantes

con todos sus atributos ( nombre, apellido, rut, dirección) y apoderados también con sus

atributos ( nombre, apellido, rut, dirección), que año y asignaturas cursan cada uno de los

estudiantes, si realizan actividades extras, especificando cual actividad realizan.

m
Ahora bien, basándose en esa situación ejemplificar gráficamente:

er as
co
1. Clases abstractas, rasgos, clases anónimas y sobrecarga.

eH w
o.
2. Muestre como seria la iteración de objetos con los métodos mágicos y
rs e
ou urc
palabras clave final.

Recuerde que debe mostrar todo gráficamente y justificar su elaboración.


o
aC s
vi y re

1. Las clases Abstractas tienen unas particularidades que la diferencian con la clase normal,

como:
ed d
ar stu

- Al definir una clase abstracta, hay que anteponer en el nombre abstract. Ej:

abstract class clase_abstracta{


is

$saludo = “Hola Soy una clase abstracta”;


Th

echo $saludo;}
sh

- No se permite generar una instancia desde la clase abstracta, es decir, no se puede definir un

objeto directamente. Ej:

Lo que no se puede realizar:

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
$no_se_puede = new clase_abstracta();

- Se puede derivar clases y heredar clases abstractas.

En relación a las clases del trabajo de la semana anterior, se puede definir la clase personas como

abstracta, ya que es una abstracción de las clases hijas colegio, alumno y apoderado, si se

considera que alumno y apoderado son personas naturales y colegio es persona jurídica, no

m
vamos a querer que la clase personas sea instanciada, pero si que pueda heredar.

er as
co
eH w
o.
rs e
ou urc
o
aC s
vi y re
ed d
ar stu
is
Th
sh

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
2. Para comenzar, hay que tener presente que si se extiende una clase, la clase hija hereda los

métodos públicos y protegido, así, cuando se quiere que una clase hija contenga un rasgo

adicional que no se declara en la clase padre, se puede incluir con “TRIAT”.

Si tenemos la clase padre “personas”, la clase hija “alumno”, no heredó algunos métodos, por lo

que, para dar origen a estos métodos se puede incluir un rasgo “TRIAT”. Hay que destacar que

no se debe abusar de los rasgos, siendo muy precavido con su funcionalidad. Por ej.:

Si deseamos definir una nueva clase, pero, tiene un rasgo alumnos especiales, que no van

a clase, se puede hacer lo siguiente:

m
- Se declara el rasgo

er as
co
trait alumnoespecial {

eH w
o.
public $especial = 'Alumno da sólo examen'; public function speak() {
rs e
ou urc
echo $this->phrase;

}
o
aC s

}
vi y re

- La clase alumno_especial llama con “use” al rasgo alumnoespecial

class Alumno_especial extends personas { use alumnoespecial;


ed d
ar stu

public function __construct() {

$this->speak(); }
is

public function setPhrase($especial) { $this->especial = $especial;


Th

}}
sh

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
Una clase, que al crearla no lleva nombre, se le denomina “clase anónima” (no quiere decir que

no lo tenga), si no que, PHP le asignará uno internamente. Se utilizan cuando requerimos crear

un objeto rápido y único. Ej.:

new class("constructor argument") { public function __construct($param) {

var_dump($param); }

}; // string(20) "constructor argument"

m
Hay que destacar que no se puede tener acceso a las variables o funciones protegidas de este tipo

er as
co
de clase.

eH w
o.
rs e
ou urc
También están las “sobre cargas”, con las que se puede crear propiedades y métodos de forma

dinámica. Se debe definir como públicos. Ej.: de la sobre carga “__call” perteneciente a la clase
o
aC s

personas.
vi y re

Hay que entender que hay personas con 1 nombre y otras con 2 nombres. Por lo que se usa la

sobrecarga, donde, al momento de ingresar un nombre, usará una función y al ingresar el otro
ed d
ar stu

nombre, se realizará otra función.

<?php
is

//Definición de la clase persona


Th

class Personas

{
sh

//Propiedades de la clase

var $nombre1; var $nombre2;

function __call($metodo, $argumentos) {

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
if ($metodo = 'nombres') {

if (count($argumentos) == 1) {

$this->nombre1 = $argumentos[0]; }

if (count($argumentos) == 2)

$this->nombre1 = $argumentos[0]; $this->nombre2 = $argumentos[1]; }

}}

//métodos de la clase donde realizaremos el get y set de las propiedades

m
function get_nombre1() {

er as
co
return $this->nombre1; }

eH w
o.
function get_nombre2() {
rs e
ou urc
return $this->nombre2; }

}
o
aC s

//asignación de una persona con un nombre


vi y re

$persona1 = new Personas; $persona1->nombres('José');

//asignación de una persona con dos nombres $persona2 = new Personas;


ed d
ar stu

$persona2->nombres('José', 'Iván');

//mostrar la salida de los nombres de las personas


is

echo "Mostrando con sólo un nombre : ". $persona1->get_nombre1() . "</br>";


Th

echo "Mostrando con los dos nombres : " . $persona2->get_nombre1() . " ". $persona2-

>get_nombre2();
sh

?>

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
Así, cuando se ingresa uno o dos nombres con el argumento nombre, se ejecutoa la función de

sobrecarga usada para recoger y asignar los nombres correspondientes.

Para la sobrecarga, se utilizó un método mágico __call, , es lanzado al invocar un método

inaccesible en un contexto de objeto. El parámetro método corresponde al nombre del método, y

el parámetro argumentos a un array. Ej.:

“ function __call($metodo, $argumentos)”

m
Hay dos maneras de utilizar éste método:

er as
co
- Cuando una clase es heredada, no podemos generar un nuevo método con el mismo nombre del

eH w
o.
método heredado.
rs e
ou urc
- Si la clase define un método final, esta clase no puede ser heredable.
o
aC s

Con lo mencionado anteriormente y mejorado del trabajo anterior, el diagrama quedaría de la


vi y re

siguiente manera:
ed d
ar stu
is
Th
sh

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
Con los puntos anteriores podemos realizar un diagrama representativo:

Th
sh is
ar stu
ed d
vi y re
aC s
o

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
ou urc
rs e

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00
eH w
er as
o.
co
m
Bibliografía
IACC, (2020). Contenido semana 3, consultado el 6 de Julio del 2020, En: campus.iacc.cl
Bibliografía

IACC (2020). Programación Orientada a Objetos con PHP. Programación Avanzada I. Semana

3.

Sodocumentation, (2020), PHP. https://sodocumentation.net/

m
er as
co
eH w
o.
rs e
ou urc
o
aC s
vi y re
ed d
ar stu
is
Th
sh

This study source was downloaded by 100000823313695 from CourseHero.com on 06-20-2021 12:46:55 GMT -05:00

https://www.coursehero.com/file/76650940/470487558-Alvaro-Figueroa-COntrol3-docxdocx/
Powered by TCPDF (www.tcpdf.org)

También podría gustarte