Programación Orientada A Objetos en PHP
Programación Orientada A Objetos en PHP
Estructura de contenidos
Mapa conceptual............................................................................2
Introducción..................................................................................3
1. Definiendo las Clases..................................................................4
1.1. Estructura general de una clase.................................................5
1.2. Los Atributos...........................................................................6
1.3. Los Constructores....................................................................7
1.4. Los Métodos............................................................................8
1.5. La Encapsulación.....................................................................9
1.6. Modificadores de Acceso.........................................................11
2. Representación de las Relaciones entre Clases.............................. 12
2.1. Relación de Dependencia........................................................12
2.2. Relación de Agregación...........................................................13
2.3. Relación de Composición.........................................................14
3. Los Objetos..............................................................................14
3.1. Ejemplo de construcción de objetos.......................................... 15
3.2. Herencia...............................................................................16
3.3. Ejecución de Métodos.............................................................19
4. Ejercicio de ejemplo completo....................................................19
Recursos bibliográficos...................................................................30
Glosario......................................................................................31
2
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Introducción
3
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
class NombreClase
{
Las clases abstractas son aquellas que no necesitan ser instanciadas, pero
si pueden ser heredadas. Se definen anteponiendo la palabra abstract.
<¿php
?>
4
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
PHP incorpora clases finales que no pueden ser heredadas por otra. Se
definen anteponiendo la palabra reservada final.
<¿php
?>
1 <¿php
2
3 class NombreClase
4 {
5
6 //Definición de Atributos
7
8 //Definición Constructor
9
10 //Definición de destructor (opcional)
11
12 //Definición de Métodos
13
14 }
15 ?>
16
5
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
1 <¿php
2 class Persona
3 {
4 //Definición de Atributos
5 private $nombre;
6
7 //Constructor
8 public function Persona($nombre)
9 {
10 $this->nombre=$nombre;
11 }
12
13 //Definición de Métodos
14 public function getNombre()
15 {
16 return $this->nombre;
17 }
18 public function setNombre($value)
19 {
20 $this->nombre=$value;
21 }
22
23 public function leer($libro)
24 {
25 //aquí va el código del método
26 }
27 }
28 ?>
6
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Lo más conveniente es que los atributos sean privados para que solo los
métodos de la clase puedan modificarlos.
Definición:
//Definición de Atributos
private $identificación;
private $nombre;
private $fechanacimiento;
Definición:
//Constructor
public function __construct($nombre)
{
$this->nombre=$nombre;
}
7
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
//Constructor
public function Persona($nombre)
{
$this->nombre=$nombre;
}
Los métodos son como las funciones en los lenguajes estructurados, pero
están definidos dentro de una clase y operan sobre los atributos de dicha
clase.
Los métodos de una Clase son los que nos permiten definir las
funcionalidades o responsabilidades de la clase. Para ello debemos
preguntarnos que puede hacer la clase.
8
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
//Definición de Métodos
public function getNombre()
{
return $this->nombre;
}
return $variable;
El segundo Método recibe un parámetro y este parámetro es asignado al
atributo nombre.
$this->nombre=$value;
1.5 Encapsulación
9
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
1 <¿php
2 class Persona
3 {
4 //Definición de Atributos
5 private $identificación;
6 private $nombre; Encapsulación
7 private $fechanacimiento;
8
9 //Constructor
10 public function Persona($nombre)
11 {
12 $this->nombre=$nombre;
13 }
14
15 //Definición de Métodos
16 public function getNombre()
17 {
18 return $this->nombre;
19 }
20 public function setNombre($value)
21 {
22 $this->nombre=$value;
23 }
24
25 public function getIdentificación()
26 { Métodos
27 return $this->identificación;
28 }
29 public function setidentificación($value)
30 {
31 $this->nombre=$value;
32 }
33
34 public function getFechaNacimiento()
35 {
36 return $this->fechaNacimiento;
37 }
38 public function setFechaNacimiento($value)
39 {
40 $this->fechaNacimiento=$value;
41 }
42 }
43 ?>
10
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Ejemplos:
public $atributo;
Ejemplos:
//Definición de Atributos
private $identificación;
private $nombre;
private $fechanacimiento;
//Constructor
private function operacion($valor1)
{
return $valor*2;
}
Ejemplos:
//Definición de Atributos
protected $identificación;
protected $nombre;
11
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Es una relación de uso entre dos entidades, una de las clases usa a la
otra.
Motor
Carro
- cilindraje
+ mostrarMotor(Motor):void
+ getCilindraje() : var
+ Motor(var) : void
1 <¿php
2 require_once ('Motor.php');
3
4 class Carro
5 {
6
7 function mostrarMotor(Motor $objetoMotor)
8 {
9 echo $objetoMotor->getCilindraje();
10 }
11
12 }
13 ?>
14
12
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Es una relación de asociación donde una de las clases forma parte del
todo correspondiente a la otra clase.
Curso Aprendices
- aprendices: array
+ mostrarMotor(Motor):void
1 <?php
2 require_once ('Aprendices.php');
3 class Curso
4 {
5 //definiendo un arreglo donde se van a guardar los aprendices
6 private $aprendices = array();
7
8 function agregarAprendices(Aprendices $aprendiz)
9 {
10 //se agrega al arreglo $aprendices el objeto aprendiz
11 $this->aprendices[] = $aprendiz;
12 }
13 }
14
15 $objCurso = new Curso();
16 $objCurso->agregarAprendices(new Aprendices());
17 $objCurso->agregarAprendices(new Aprendices());
18 $objCurso->agregarAprendices(new Aprendices());
19 $objCurso->agregarAprendices(new Aprendices());
20 $objCurso->agregarAprendices(new Aprendices());
21 /*Como ejemplo en el curso anterior solo se agregaron
22 5 aprendices */
23 ?>
13
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Por ejemplo:
Empresa Empleado
3 Los objetos
14
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
El ejemplo planteado permite crear una página php que instancia dos
objetos de la clase persona y muestra el nombre de cada uno de ellos.
1 <¿php
2 //incluimos el archivo donde esta el código de la clase Persona
3 include “Persona.php”;
4
5 //Instanciamos el primer Objeto
6 $objPersona=new Persona(“Pedro Picapiedra”);//instanciamos
7
8 /* Para poder mostrar en pantalla el nombre de la persona debemos utilizar el
9 método gerNombre(), ya que el atributo $nombre es privado.*/
10
11
12 //Ahora Instanciamos otra vez la clase persona
13 $objPersona=new Persona(“Vilma”);
14 echo “<br> Nombre del segundo obeto Persona : ”. $objPersona->getNombre();
15 ?>
15
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
echo “<br> Esta línea obtiene el nombre de la persona mediante el
Nombre del Primer
obeto Persona : método getNombre() de la clase persona y lo imprime en
$objPersona=new Persona(”Pedro Picapiedra”); //instanciamos
//Definición de Métodos
public function getNombre()
{
return $this->nombre;
}
localhost
localhost/virtualidad/
3.2 Herencia:
16
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Ejemplo:
Como ejercicio vamos a crear una clase Estudiante que hereda de la Clase
persona.
//Definición de Atributos
protected $nombre;
1 <¿php
2 include “Persona.php”; //la incluimos para poder acceder a ella
3 class Estudiante extends Persona
4 {
5 //Atributo curso: Que curso estudia el Estudiante.
6 private $curso;
7
8 //Método que obtiene el curso que estudia el estudiante.
9 public function getCurso()
10 {
11 return $this->curso;
12 }
13
14 //Método que permite cambiar el curso del estudiante.
15 public function setCurso($value)
16 {
17 $this->curso=$value;
18 }
19
20 //Constructor Clase Estudiante
21 public function Estudiante($nombre, $curso)
22 {
23 /* como iniciamos el atributo nombre que lo hereda de la
24 clase Persona para ello el atributo nombre debe ser declarado
25 como protected.*/
26 $this->nombre=$nombre;
27 $this->curso=$curso;
28 }
29 }
30 ?>
31
17
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
<?php
//incluimos el archivo donde está el código de la clase Persona
include “Estudiante.php”;
//Instanciamos para crear el primer objeto tipo Estudiante
Estudiante($nombre, $curso)
$objEstudiante=new Estudiante(
1 <html>
<meta http-equiv="Contect-Type" contect="text/html; charset=utf-8">
2 <?php
3
4 //incluimos el archivo donde está el código de la clase Persona
5 include "Estudiante.php";
//Instanciamos para crear el primer objeto tipo Estudiante
6
7 $objEstudiante=new Estudiante("César Cuéllar", "DASI");
8
//creamos otro objeto de tipo Estudiante
9 $objEstudiante=new Estudiante("Marcela Médez", "Multimedia");
10
11 echo “ESTUDIANTES INSCRITOS<BR>”;
12
/*Vamos ahora a imprimir en pantalla los Datos de los Estudiantes
13 accedemos al método getNombre() que lo hereda de la clase persona*/
14
15 echo “<br> Nombre del Estudiante : ”. $objEstudiante->getNombre();
16 /*Ahora vamos a imprimir en pantalla el Curso, para ello
17 accedemos al método getCurso() propio de la clase Estudiante.*/
18 echo “<br> Curso que se encuentra realizando el Estudiante : ”. $objEstudiante->getNombre();
19
echo “<br> Nombre del Estudiante : ”. $objEstudiante2->getNombre();
20 echo “<br> Curso que se encuentra realizando el Estudiante : ”. $objEstudiante2->getNombre();
21
22 ?>
18
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Resultado de la Implementación
localhost
localhost/virtualidad/crearEstudiante.php
ESTUDIANTES INSCRITOS
$objEstudiante->
getCurso() Estudiante Estudiante.php
getNombre() Persona Persona.php
Métodos leer($libro) Persona Persona.php
setCurso($value) Estudiante Estudiante.php
setNombre($value) Persona Persona.php
Nos muestra los métodos públicos propios de la clase o nos muestra los
métodos heredados de alguna clase que sean declarados como protected.
Enunciado
19
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
Diagrama de Clases
# cilindraje: string
# identificacion: int
# nombre: string
# salario: float
« property get »
+ setcargo(var) : void
+ setidentificacion(var) : void
+ seinombre(var) : void
+ setsalario(var) : void
Contratista Planta
20
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
1 <¿php
2 /**
3 * @author César Cuéllar
4 * @version 1.0
5 * @created 20-oct-2013 07:47:27 a.m.
6 */
7 class Empleado
8 {
9 protected $cargo;
10 protected $identificacion;
11 protected $nombre;
12 protected $salario;
13
14 //Constructor
15 /**
16 * @param cargo, @param salario, @param nombre, @param
17 identificacion
18 */
19 public function Empleado($identificacion,$nombre,$cargo)
20 {
21 $this->identificacion=$identificacion;
22 $this->nombre=$nombre;
23 $this->cargo=$cargo;
24 }
25
26 protected function getCargo()
27 {
28 return $this->cargo;
29 }
30
31 protected function getIdentificacion()
32 {
33 return $this->identificacion;
34 }
35
36 protected function getNombre()
37 {
38 return $this->nombre;
39 }
40
41 protected function getSalario()
42 {
43 return $this->salario;
21 44 }
45 FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
46 /** @param newVal */
47 protected function setCargo($newVal)
34 }
35
36 protected function getNombre()
Programación Orientada a Objetos en PHP
37 {
38 return $this->nombre;
39 }
40
41 protected function getSalario()
42 {
43 return $this->salario;
44 }
45
46 /** @param newVal */
47 protected function setCargo($newVal)
48 {
49 $this->cargo = $newVal;
50 }
51
52 /** @param newVal */
53 protected function setIdentificacion($newVal)
54 {
55 $this->identificacion = $newVal;
56 }
57
58 /** @param newVal */
59 protected function setNombre($newVal)
60 {
61 $this->nombre = $newVal;
62 }
63
64 /** @param newVal */
65 protected function setSalario($newVal)
66 {
67 $this->salario = $newVal;
68 }
69 }
70 ?>
71
22
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
1 <¿php
2 /**
3 * @author César Cuéllar
4 * @version 1.0
5 * @created 20-oct-2013 07:47:29 a.m.
6 */
7 class Contratista extends Empleado
8 {
9 private $totalHoras;
10 private $valorHora;
11
12 //Constructor
13 public function
14 Contratista($identificacion,$nombre,$cargo)
15 {
16 //ejecutamos el connstructor de la clase Padre Empleado
17 parent::__construct($identificacion,$nombre,$cargo);
18 }
19
20 /** @param totalHoras, @param valorHora */
21 public function calcularSalario($valorHora, $totalHoras)
22 {
23 $this->salario= $valorHora*$totalHoras;
24 }
25
26 public function getTotalHoras()
27 {
28 return $this->totalHoras;
29 }
30
31 public function getValorHora()
32 {
33 return $this->valorHora;
34 }
35
36 public function getCargo()
37 {
38 return $this->cargo;
39 }
40
41 public function getIdentificacion()
42 {
43 return $this->identificacion;
23 44 }
45 public function getNombre()
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
46 {
47 return $this->nombre;
34 }
35
36 public function getCargo()
Programación Orientada a Objetos en PHP
37 {
38 return $this->cargo;
39 }
40
41 public function getIdentificacion()
42 {
43 return $this->identificacion;
44 }
45 public function getNombre()
46 {
47 return $this->nombre;
48 }
49
50 public function getSalario()
51 {
52 return $this->salario;
53 }
54
55 /** @param newVal */
56 public function setTotalHoras($newVal)
57 {
58 $this->totalHoras = $newVal;
59 }
60
61 /** @param newVal */
62 public function setValorHora($newVal)
63 {
64 $this->valorHora = $newVal;
65 }
66 }
67 ?>
68
24
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
1 <¿php
2 /**
3 * @author César Cuéllar
4 * @version 1.0
5 * @created 20-oct-2013 07:47:30 a.m.
6 */
7 class Planta extends Empleado
8 {
9 private $deducciones;
10 private $sueldoBasico;
11 private $valorExtras;
12
13 //Constructor
14 public function Planta($identificacion,$nombre,$cargo)
15 {
16 //ejecutamos el constructor de la clase Padre Empleado
17 parent::__construct($identificacion,$nombre,$cargo);
18 }
19 public function calcularSalario()
20 {
21 $this->salario=$this->sueldoBasico + $this->valorExtras -
22 $this->deducciones;
23 }
24
25 public function getDeducciones()
26 {
27 return $this->deducciones;
28 }
29
30 public function getSueldoBasico()
31 {
32 return $this->sueldoBasico;
33 }
34
35 public function getValorExtras()
36 {
37 return $this->valorExtras;
38 }
39
40 public function getCargo()
41 {
42 return $this->cargo;
43 }
25 44
45 public function getIdentificacion()
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
46 {
47 return $this->identificacion;
34
35 public function getValorExtras()
36 { Programación Orientada a Objetos en PHP
37 return $this->valorExtras;
38 }
39
40 public function getCargo()
41 {
42 return $this->cargo;
43 }
44
45 public function getIdentificacion()
46 {
47 return $this->identificacion;
48 }
49
50 public function getNombre()
51 {
52 return $this->nombre;
53 }
54
55 public function getSalario()
56 {
57 return $this->salario;
58 }
59
60 /** @param newVal */
61 public function setDeducciones($newVal)
62 {
63 $this->deducciones = $newVal;
64 }
65
66 /** @param newVal */
67 public function setSueldoBasico($newVal)
68 {
69 $this->sueldoBasico = $newVal;
70 }
71
72 /** @param newVal */
73 public function setValorExtras($newVal)
74 {
75 $this->valorExtras = $newVal;
76 }
77
78 }
79 ?>
80
26
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
27
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
1 <¿php
2 include ('Empleado.php');
3 include "Contratista.php";
4
5 //Datos de Entrada Empleado Contratista
6
7 echo "Calcular Salario Empleado Contratista ";
8 echo "<br>";
9 $tipoEmpleado = "Contratista";
10 $identificacion = "123";
11 $nombre = "Angie Cepeda";
12 $cargo = "Secretaria";
13 $totalHorasTrabajadas = 160;
14
15 //Creamos el objeto
16 $objContratista = new Contratista($identificacion,$nombre,$cargo);
17
18 //modificamos atributos del empleado de Contrato
19 $objContratista->setvalorHora(4000);
20 $objContratista->setTotalHoras($totalHorasTrabajadas);
21
22 //imprimimos datos de entrada
23 echo "<br>id Empleado: " . $objContratista->getIdentificacion();
24 echo "<br>Nombree Empleado: " . $objContratista->getNombre();
25 echo "<br>Cargo Empleado: " . $objContratista->getCargo();
26 echo "<br>Valor de la Hora: $" . $objContratista->getValorHora();
27 echo "<br>Total Horas Trabajas en el Mes: " . $objContratista->getTotalHoras();
28
29 echo "<br> <br> RESULTADOS <BR><BR>";
30
31 //calculam os el salario del empleado de Contrato
32 $objContratista->calcularSalario(4000,$totalHorasTrabajadas);
33
34 //Mostramos resultados
35 echo "<br>id Empleado: " . $objContratista->getIdentificacion();
36 echo "<br>Nombree Empleado: " . $objContratista->getNombre();
37 echo "<br>Cargo Empleado: " . $objContratista->getCargo();
38 echo "<br>Salario Neto a recibir en el Mes: " . $objContratista->getSalario();
39
40 ?>
41
42
28
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
localhost
localhost/salario/salarioPlanta.php
id Empleado: 456
Nombre Empleado: Faustino Asprilla
Cargo Empleado: Gerente
Valor de la Hora: $4500000
Valor Extras: $345000
Total Deducciones: $1098000
RESULTADOS
id Empleado: 456
Nombre Empleado: Faustino Asprilla
Cargo Empleado: Gerente
Salario Neto a Recibir: $3747000
localhost/salario/salariocontratista.php
id Empleado: 123
Nombre Empleado: Angie Cepeda
Cargo Empleado: Secretaria
Valor de la Hora: $4000
Total Horas Trabajadas en el Mes: 160
RESULTADOS
id Empleado: 123
Nombre Empleado: Angie Cepeda
Cargo Empleado: Secretaria
Salario Neto a recibir en el Mes: 640000
29
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
RECURSOS BIBLIOGRÁFICOS
Cobo, Angel. Gomez Patricia, Perez Daniel, Rocha Rocio. PHP y MySQL:
Tecnología para el desarrollo de aplicaciones web.
30
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
GLOSARIO
31
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Programación Orientada a Objetos en PHP
PROGRAMACIÓN ORIENTADA A
OBJETO DE APRENDIZAJE
OBJETOS EN PHP
R
El logo de PHP® es una marca registrada, una subsidiaria de Sun
Microsystems y esta a su vez de Oracle Corporation.
Registered trademark
32
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje