Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Jerarquia de clases (http://www.forosdelweb.com/f68/jerarquia-clases-555655/)

firewind 09/02/2008 04:51

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:
http://sxxl.es/imagen.png

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.

GatorV 09/02/2008 11:06

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.

enriqueplace 10/02/2008 06:10

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.

firewind 10/02/2008 13:55

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

GatorV 11/02/2008 08:57

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.

firewind 11/02/2008 14:02

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.

firewind 11/02/2008 15:34

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.


La zona horaria es GMT -6. Ahora son las 00:21.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.