Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Duda 1: sobre POO

Estas en el tema de Duda 1: sobre POO en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos como les va? Estoy feliz por una parte por que por fin llegue a pasar lo que consideraba un gran obstaculo hacia ...
  #1 (permalink)  
Antiguo 26/01/2005, 19:58
 
Fecha de Ingreso: abril-2003
Mensajes: 26
Antigüedad: 21 años, 8 meses
Puntos: 0
Duda 1: sobre POO

Hola a todos como les va?
Estoy feliz por una parte por que por fin llegue a pasar lo que consideraba un gran obstaculo hacia PHP con POO, y al fin ya entiendo de forma incipiente como funciona la POO.
Y por otra, un poco desorientado por que son mis priemeros pasos con esta tecnica de programacion. Es por eso que recurro a este foro, que me parece uno de los mas serios y de los que mejor entiende y ayuda a los usuarios, para que me digan su opinion acerca de la primer clase que he escrito, en ella he creado una clase llamada amigos (Class amigos)con un metodo para ingresarles un nombre y edad. Y luego le extendi una clase hija (Class apodo) con otro metodo para agregarle un dato mas a los ingresados en la clase amigos.
Luego de haber creado estas clases e ingresado primero a un solo amigo en la clase madre.
Despues utilizado la clase hija para agregarle a mis amigos un dato mas (no se si es valido decir "propiedad"?), y he aprovechado la Herencia para ademas ingresar nuevos datos.
Mi duda es:

- Esta bien haber usado un bucle for para ingresar los datos (se dice propiedades?), o esta mal que haya metido dentro de un bucle esas instrucciones que implican clases?


Aca les pongo el codigo para que entiendan mejor:
Nota me he valido de ponerle a mi funcion el nombre de la clase para que asi este funcione como constructor, ya que estoy practicando con PHP 4.3.


<?php
//clase base "amigos"
class amigos{
var $amigo;
var $edad;
function amigos($amigo, $edad){
$this -> amigo=$amigo;
$this -> edad=$edad;
}
function mues_nom(){
return $this->amigo;
}

function mues_eda(){
return $this->edad;
}
}

//Eztension de la clase base para añadir un apodo
//clase extendida "apodo"
class apodo extends amigos{

var $apodo;
function apodo($apodo){
$this->apodo=$apodo;
}
function mues_apo(){
return $this->apodo;
}
}
//instanciando solo para la clase "amigos"
$amigo=new amigos("Sebastian", 27);
echo "mi primer amigo es: ". $amigo->mues_nom()."<br>y su edad es: ". $amigo->mues_eda()."<hr>";

//array para ingresar datos
$amis= array ("Gerson","Juanjo","Ruben","Rene");
$edas= array (24,23,25,19);
$apds= array ("balroc","pajarito","robincha","chaterman");

//ingresando y mostrando datos de ambas clases
if(count($amis) === count($edas) && count($amis) === count($apds))
{
$i=count($amis);
for($x=0;$x<$i;$x++){
$amigo=new apodo($apds[$x]);

$amigo->amigos($amis[$x], $edas[$x]);
echo "<p>Nombre: ".$amigo->mues_nom()."<br>";
echo "Edad: ".$amigo->mues_eda()."<br>";
echo "Apodo: ".$amigo->mues_apo()."</p>";
}
}

else{
echo "No , algo esta mal";
exit();
}
?>

Desde ya muchas gracias y espero no haber incomodado a alguien con esta duda.
__________________
.:hEN
DevHen
Exitos a todos.
  #2 (permalink)  
Antiguo 27/01/2005, 11:20
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 21 años, 2 meses
Puntos: 1
bueno. te recomiendo leas algun tutorial sobre POO. Un apodo, es una propiedad de un amigo, no tiene por que ser una clase aparte. Una clase determina algo asi como un tipo de algo. Por ejemplo:

Tenemos una clase que se llama fruta

class fruta {}

que tiene propiedades y metodos caracteristicos de TODAS las frutas
var $color;
var $sabor;
function comer() {
//funcion no implementada, se va a implementar en una clase hija
//ya que cada fruta se come de forma distinta, sin embargo es bueno saber que debe existir un //metodo para comerla
}

ahora bien, podemos extender la clase diciendo que queremos una clase platano

class platano extends fruta {}

que tiene propiedades y metodos especificos para esa fruta
//ahora si implementamos el metodo comer para esta fruta
function comer() {
pelar();
morder();
tirar_cascara();
}
var $color = 'amarillo';

es un ejemplo al aire, pero mas o menos ilustra lo que debes hacer, es decir, la clase apodo que hiciste no tiene razon de ser, apodo es solo una propiedad mas. Si quieres extender tu clase amigo tal vez una buena razon seria

class excelente_amigo extends amigo {
}

por que un excelente amigo tiene las mismas propiedades y formas de tratarlo (metodos) que un amigo, y aparte tiene propiedades especificas y metodos especificos para los excelentes amigos.

saludos
  #3 (permalink)  
Antiguo 27/01/2005, 11:46
hen
 
Fecha de Ingreso: diciembre-2003
Ubicación: Buenos Aires
Mensajes: 63
Antigüedad: 21 años, 1 mes
Puntos: 1
Voy entendiendo mas o menos muchas gracias.
__________________
.:hEN
DevHen
EXITOS
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:47.