PHP Exercicios POO
Sumario
Definición de clases. Creación de obxectos e acceso a variables e métodos
- Un programador novato (PN) decide introducirse no mundo da POO e intenta implantar
unha solución informática para a xestión dos vehículos da Empresa de Transporte na que traballa. Decide utilizar como linguaxe de programación PHP.
- O problema que se lle expón é o seguinte: necesita almacenar información sobre os
distintos vehículos de que dispón a Empresa. Entre esta información está o ano de compra do vehículo, a súa matrícula, a súa marca.
- O PN decide implantar nunha clase, a información necesaria.
- Na páxina que vai amosar os datos (chamarémoslle Principal, o PN vai crear os catro vehículos de que dispón a Empresa neste momento, e vailles a asignar uns valores:
Exercicio: implantar a solución
Solución:
- Arquivo: Vehiculos.class.php
1 <?php 2 3 class Vehiculos{ 4 public $matricula; 5 public $marca; 6 public $ano; 7 8 }
- Arquivo: IncluirClases.inc.php
1 <?php 2 function cargadorClases($class) { 3 require $class . '.class.php'; 4 } 5 6 spl_autoload_register('cargadorClases');
- Arquivo: Principal.php
1 <?php 2 include 'IncluirClases.inc.php'; 3 ?> 4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 5 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 6 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"> 7 <head> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 9 <title>Exemplos de uso de clases</title> 10 </head> 11 <body> 12 <?php 13 $veh1 = new Vehiculos(); 14 $veh2 = new Vehiculos(); 15 $veh3 = new Vehiculos(); 16 $veh4 = new Vehiculos(); 17 18 $veh1->marca = "Peugot"; 19 $veh1->matricula = "C-1234-BZ"; 20 $veh1->ano = 1999; 21 22 $veh2->marca = "Fiat"; 23 $veh2->matricula = "C-4325-AZ"; 24 $veh2->ano = 1998; 25 26 $veh3->marca = "Opel"; 27 $veh3->matricula = "C-2342-AF"; 28 $veh3->ano = 1996; 29 30 $veh4->marca = "Ford"; 31 $veh4->matricula = "C-4322-CF"; 32 $veh4->ano = 2000; 33 ?> 34 </body> 35 36 </html>
- Comproba que non lle deu erros, pero queda coa dúbida se terá almacenados os
valores dunha forma correcta, polo que é necesario que imprima devanditos valores. Para imprimir os valores, necesita un procedemento (método) que os saque por pantalla. Así que decide crear dentro da clase Vehículo, un método que imprima devandita información. Podería facer un único método que imprima o ano, matrícula e marca á vez, pero decide crear tres métodos, un para cada tipo de información a imprimir, de nome impAno, impMatricula, impMarca, por se necesita mostrar a información de forma individualizada.
- Unha vez implantados, decide probalos, a ver se mostran a información correcta, Para
iso modifica a páxina Principal, facendo que cada obxecto Vehículo chame a cada un dos métodos.
Solución:
- Arquivo: Vehiculos.class.php
1 <?php 2 3 class Vehiculos { 4 public $matricula; 5 public $marca; 6 public $ano; 7 8 public function impMatricula() { 9 printf("<div>%s</div>",$this->matricula); 10 } 11 public function impMarca() { 12 printf("<div>%s</div>",$this->marca); 13 } 14 public function impAno() { 15 printf("<div>%s</div>",$this->ano); 16 } 17 18 }
- Arquivo: Principal.php
1 ........... 2 3 echo "<b>Datos veh1</b><br />"; 4 $veh1->impMatricula(); 5 $veh1->impMarca(); 6 $veh1->impAno(); 7 8 echo "<b>Datos veh2</b><br />"; 9 $veh2->impMatricula(); 10 $veh2->impMarca(); 11 $veh2->impAno(); 12 13 echo "<b>Datos veh3</b><br />"; 14 $veh3->impMatricula(); 15 $veh3->impMarca(); 16 $veh3->impAno(); 17 ...........
Nota: Soamente se amosa o código engadido á páxina Principal.
Herdanza
- O PN atópase bastante satisfeito do conseguido ata agora, pero isto só era unha pequena parte do que ten que facer. Digamos que a súa empresa adícase ao transporte de
diñeiro, concretamente dous dos seus vehículos que son furgonetas, e que cada vehículo pode transportar unha cantidade de diñeiro. Ademais cada furgoneta leva consigo un número de vixiantes xurados. Devandita información é necesario almacenala.
- Ante esta situación, o PN decide crear unha nova clase, Furgoneta, cos procedementos
da clase Vehículo e os novos atributos (cantidade de diñeiro e número de vixiantes xurados). Pero cando ía empezar a implantar devandita solución, aparece o Programador Experto, alguén que xa traballou en Xava moitos anos, e ao ver o que ía facer, explícalle que en Xava, ao ser unha Linguaxe de POO pódese realizar o que se chama Herdanza. É dicir, crear unha subclase que herde todo o que ten a superclase. Con esta gran vantaxe,
- o PN decide crear un subclase Furgoneta da superclase Vehículo. Dentro da nova clase
Furgoneta, implementa os novos atributos (cantidade de diñeiro e número de vixiantes xurados), xa que son atributos propios da clase Furgoneta, que non ten a clase Vehículo. Por outra banda, como o PN quererá mostrar a información destes dous novos atributos, tamén crea, dentro da propia clase Furgoneta, dous métodos, para mostrar devanditos atributos de nome impDiñeiro, impXurados.
- Para probar esta nova clase, vai ter que modificar a súa páxina Principal, xa que tiña
implantados catro obxectos da clase Vehiculos, pero agora sabe que dúas deses vehículos son Furgonetas, polo que terá que cambiar o seu código, e se antes tiña catro vehículos da forma:
Outra
Outra
-- Ángel D. Fernández González -- (2016).