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

Jerarquia de clases

Estas en el tema de Jerarquia de clases en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola. Llevo un tiempo programando unas clases y como todo empezo por aprender, pues ya han llegado a un punto donde tengo que tomar unas ...
  #1 (permalink)  
Antiguo 09/02/2008, 04:51
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 20 años, 5 meses
Puntos: 2
Pregunta Jerarquia de clases

Hola.

Llevo un tiempo programando unas clases y como todo empezo por aprender, pues ya han llegado a un punto donde tengo que tomar unas reglas para que no sea un caos.

El caso es que tengo la siguiente jerarquía :
- Clase SYSTEM (envia emails, genera claves y poco mas)
- Clase HTML hereda de SYSTEM (para escribir paginas HTML)
- Clase MYSQL hereda de HTML (para todo el tema de MySQL)
- Clase BROWSER hereda de MYSQL ( es un browser de mantenimiento de tablas)

El tema es que con el siguiente codigo :
Código PHP:
<?php
session_start
();
include(
"inc/seguridad.inc.php");

    
// incluimos la clase base y creamos el objeto
include('clases/jcrMtBrowser.php');

// Iniciamos el Objeto
$oPage = new jcrMtBrowser();
$oPage->Conectar();

// .... agunas cosillas que he quitado

$oPage->Inicializa();

// quitamos la ayuda
$oPage->setOpcionAyuda(false);

// solo pueder clonar el super-admin
if ($_SESSION['nNivel'] < 9) { $oPage->setOpcionClonar(false); }


// -----------------------------------------------------------------------------------------------------------------
//
// INICIO HTML    
//
// -----------------------------------------------------------------------------------------------------------------

$oPage->HtmlIni(1,false);
    
// HEAD
$oPage->HEAD($_SESSION['EMPRESA'].' - Intranet');
$oPage->CSS('templates/default/css/intranet.css');
$oPage->JS('js/stmenu.js');
$oPage->endHEAD();
    
//BODY
$oPage->BODY();
$oPage->TABLE('principal','width="100%" height="100%"  border="0" align="center" cellpadding="0" cellspacing="0"');
$oPage->TR();
$oPage->TD('valign="top"');
    
    
// cabecera
    
include("inc/cabecera.inc.php");

$oPage->TR();
$oPage->TD('valign="top" height="100%"');
        
    
// cuerpo
    
$oPage->TABLE('cuerpo','width="100%"  border="0" align="center" cellpadding="0" cellspacing="0"');
    
$oPage->TR();
    
$oPage->TD('valign="top" align="center"');
    
        
$oPage->Ejecutar('sys_tablas_mt.php?tabla='.$LocalTablaID,$LocalTablaID); 

    
$oPage->endTABLE();
        
$oPage->TR();
$oPage->TD('valign="bottom"');
        
    
// pie
    
include("inc/pie.inc.php");
        
// fin de la tabla principal
$oPage->endTABLE();

// fin del html
$oPage->endBODY();
    
//mostramos la pagina
$oPage->Show();
?>
Con este codigo tengo un mantenimiento completo, con inserciones, edicion, borrados controlados por clave, filtros, etc.

Una captura:


Mi pregunta, ¿Es correcto lo que hago, o debo crear una clase que use instancias de las otras ?

No se si me he explicado bien.
Espero opiniones

Un saludo.
  #2 (permalink)  
Antiguo 09/02/2008, 11:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Jerarquia de clases

No es lo mejor heredar todas las clases de una base, siempre busca que tus clases sean lo mas autonomas posible, y solo hereda las clases que realmente tengas que heredar.

Saludos.
  #3 (permalink)  
Antiguo 10/02/2008, 06:10
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Re: Jerarquia de clases

El error que estás cometiendo es hacer herencia por el simple reuso de código, cuando la herencia es algo más que eso. Por regla debe haber una relación de parentesco entre las clases... por ejemplo, aunque parezca que te sirve, una clase Perro no puede heredar de una clase Persona.

Busca sobre "el principio de liskov" para ver si te aclara un poco más el panorama.

Otra sugerencia, usa estándares de codificación, no inventes los tuyos. Busca en Zend.com que tienen una presentación que describen cual usan ellos internamente.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #4 (permalink)  
Antiguo 10/02/2008, 13:55
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Jerarquia de clases

Gracias a los 2 por vuestros consejos.
A GatorV, tengo que "matarlo" , ya que lei su blog y el cerebro me empezo a estallar diciendo "que haces prehistorico", asi que de entrada veia MUCHOS inconvenientes en las 3 capas (mas aun con mi sistema que me hago una intranet en una mañana), pero luego pensado lo vi del todo claro, los problemas y soluciones que he adoptado no son nada elegantes/eficientes ya que llegado el punto en el que intentar "crecer" en prestaciones me suponia un suplicio.
Asi que tire a hojear la documentacion de los frameworks que hay en la seccion del foro y como soy muy burrro y me gusta hacerlo todo yo solito, me he decido (despues de varias horas) por el Zend Framework, ya que me permite hacer las cosas a mi manera.

A enriqueplace, darle la razon al 100%, mi sistema esta creado como prueba y ha ido creciendo a base de ratos que se me ocurria ponerle tal o cual cosa y claro es pura pereza de empezar de 0, asi que sacrifique todo por la reutilizacion del codigo. Sobre la codificacion, pues yo empeze con DBase III, despues Clipper, CA Visual Objects, Delphi, ASP y por ultimo PHP, asi que suelo llamar a las funciones en español y usar la "notacion hungara" en las variables (es que soy muy viejo..jejeje).

Despues de lo visto hoy, pues esta claro, a estudiar el Zend Frameworks y a cojer mi entorno UML ( Un Monton de hojas y un Lapiz ) y rediseñar como es debido mis clases.

Como pregunta, usais Diccionario de Datos en los proyectos? osea, tener la informacion de la base de datos en tablas y luego usarlas en las clases? Es que necesito MAS informacion, estoy sediento de ella

Un saludo y gracias de nuevo
  #5 (permalink)  
Antiguo 11/02/2008, 08:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Jerarquia de clases

A que te refieres con ¿Diccionario de Datos?, no es necesario en todos tus proyectos usar una base de datos, bien puedes usar algún otro medio persistente.

Saludos.
  #6 (permalink)  
Antiguo 11/02/2008, 14:02
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Jerarquia de clases

GatorV, tienes toda la razon, pero claro he estado tirando de mi metodologia de los tiempos Clipper, he visto que con http://framework.zend.com/manual/en/...pters.xml.html no es necesario guardar la logica de mis clases de la base de datos en ella, sino usando ficheros externos.
Me estoy planteando crear un blog donde ir poniendo mis avances para que la gente como yo tenga un sitio donde encontrar y compartir ideas, ya me pasare por el tuyo para darte "caña" con mis preguntas.
Un saludo.
  #7 (permalink)  
Antiguo 11/02/2008, 15:34
Avatar de firewind  
Fecha de Ingreso: noviembre-2003
Ubicación: Cabra-Córdoba-Andalucia-España
Mensajes: 62
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Jerarquia de clases

Para enriqueplace , en tu blog http://phpsenior.blogspot.com/2007/1...ncipio-de.html con el ejemplo del becario me has aclarado alguna dudillas que tenia en la estructura del nuevo sistema que estoy desarrollando. Gracias
Un saludo.
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 00:25.