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

Duda de como saber que clases poner

Estas en el tema de Duda de como saber que clases poner en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola, voy iniciando con esto de la poo en php y hay algo en lo que tengo duda, eh buscado y no encuentro alguna respuesta ...
  #1 (permalink)  
Antiguo 12/03/2009, 03:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 16
Antigüedad: 15 años, 7 meses
Puntos: 1
Duda de como saber que clases poner

hola, voy iniciando con esto de la poo en php y hay algo en lo que tengo duda, eh buscado y no encuentro alguna respuesta sobre como hacerlo, mi duda es:
De que manera podria saber o darme una idea de que clases crear, por ejemplo, tengo si quisiera una pagina y quiero que tenga:
Sistema de usuarios
Sistema de noticias
Sistema de mensajes
etc.
crearia una clase por cada sistema, por que eh querido hacerlo asi pero se me hace muy complicado el llevar todo de usuario por ejemplo en una misma clase, por ejemplo en usuarios si quisiera obtener nombres de usuario, registrar un usuario, editar datos de un usuario, sacar algun otro dato de algun usuario, loguear un usuario, muchas veces se me complica esto y aveces como que confundo las clases con las funciones, es la duda de poo en php que tengo me eh leido varios manuales pero en ninguno viene alguna idea de como saber que clases vamos a crear :S
me ayudarian mucho si me dieran algun ejemplo de como es que se dan una idea de que clases crear
  #2 (permalink)  
Antiguo 12/03/2009, 08:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Duda de como saber que clases poner

No hay una formula exacta para saberlo, pero por eso es importante que hagas tu diseño UML de tus clases, así puedes ir viendo el mapa de cuantas clases vas a necesitar, en concreto no es por sistema, si no por objeto encapsulado.

Saludos.
  #3 (permalink)  
Antiguo 12/03/2009, 13:58
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Respuesta: Duda de como saber que clases poner

Objetos = Nombre. Metodos = Verbos. Coges la descripcion del problema, y todos los nombres con suficiente entidad son objetos. Los metodos de cada objeto sera los verbos que usas en la descripcion.

Objetos

Sistema de usuarios
Sistema de noticias
Sistema de mensajes

Metodos

Crear usuario
Crear noticia
Borrar mensaje

Esto es el punto de partida. Si tienes usuarios, quizas necesitas comprobar (verbo) permisos en una lista de acceso (nombre). O vas descubriendo nuevos objetos segun vas haciendo el diseño.
  #4 (permalink)  
Antiguo 12/03/2009, 14:06
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Duda de como saber que clases poner

Si te sirve de orientación para empezar intenta dividir el sistema en 'entidades', cada clase representará a una entidad.

Uno de los objetivos del paradigma de programación orientada a objetos es dividir el problema en objetos.

El siguiente ejemplo no representa una solución a tu problema es sólo explicativo, a partir de ahí tu debes diseñar el modelo que necesitas para tus necesidades.

Imagina que necesitas diseñar una aplicación en la que los usuarios pueden escribir muchos artículos.

1- Como primer paso debes diseñar el modelo de datos relacional que vas a utilizar. Este punto es muy importante ya que la bbdd es la que marca la lógica de negocio de tu aplicación y todo lo demas gira entorno a ella.

Como bien hemos dicho necesitamos que los usuarios puedan escribir muchos artículos así que obtenemos como modelo lo siguiente.

Código:
[USUARIOS]     1 --------------(escriben)------------- n    [ARTICULOS]
Que se lee así: Un usuario puede escribir muchos artículos.

2- Una vez que tenemos un modelo de datos que se adapta a nuestras necesidades podemos empezar a diseñar el diagrama UML que te proponian en el post anterior.

Como dijimos al principio en el paradigma de la POO se divide el sistema en objetos.

Según el modelo de datos tenemos dos entidades USUARIOS y ARTICULOS, así que podemos crear dos clases:

usuariosClass -> representará a los usuarios.

articulosClass -> representará a los artículos.


Dentro de cada clase debes definir los atributos de clase y métodos (acciones) que quires que realicen.

Por ejemplo:

[usuariosClass]

Propiedades o atributos:

- username
- password
- email
- etc....

Métodos:

- setUsername -> para establecer el nombre de usuario.
- getUsername -> para obtener el nombre de usuario.
- save -> Guardar usuario en la base de datos.
- delete -> Para eliminar el usuario de la base de datos.
- etc....

[articulosClass]

Propiedades o atributos:

- titulo
- tema
- texto
- fecha
- autor

Métodos:

- setTitulo -> Establece el titulo.
- getTitulo -> Obtiene el titulo.
- save -> Guarda en la bbdd.
- delete -> Elimina de la bbdd.

Espero que te sirva de orientación para comenzar tu proyecto.


Saludos!!!
  #5 (permalink)  
Antiguo 12/03/2009, 16:21
Avatar de salvaBCN  
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Duda de como saber que clases poner

Saludos compañeros,

- Respecto a como empezar, tal y como te comenta muy sensatamente Synkronice, me gustaría añadir un granito de arena.

Mi sugerencia es que te diseñes una clase base para tareas repetitivas y comunes del resto de las clases.
Me explico:
Todos los objetos de tus tres clases (usuarios, noticias y mensajes), tienen métodos comunes como son el crear un nuevo objeto, actualizar y/o borrar uno existente, mostrarlo en pantalla mediante tablas, formularios u otros objetos HTML.

Eso te llevaría a tener que implementar esos métodos en cada una de las clases para cada tipo de objeto.

En proyectos pequeños o medianos no representa mucho problema, pero en cuanto tu aplicaión crezca, el mantenimiento se volverá tedioso y farragoso.

El modo en el que acostumbro a trabajar, y a mi personalmente me funciona bien es:

Crearme una clase Base.
- En esta clase gestiono conexiones con el servidor de la base de datos, fechas, asignar nuevos ids de registros, validaciones, en definitiva todo lo que afecta a un objeto de una aplicación web.

- Seguidamente, creo una clase específica de cada objeto que va a heredar de la superclase Base.

- Con esto tan solo tienes que jugar con los maravillosos parámetros y te ahorras una buena cantidad de trabajo.

- Incluso me he creado mis própias librerias de tareas comunes y repetitivas para cualquier tipo de aplicación.

Un poco de resumen de todo esto sería lo siguiente:

Parte del código de BaseMiProyecto.php

Código PHP:
<?php

class BaseMiProyecto
{

   
// Definición de las variables miembro


    // El constructor
    
public function __construct()
    {

    }

   
// Métodos miembros de la clase
   
public function ConectaBD()
   {
         
$this->conexion mysqli("localhost","usuario","password","basededatos");
         
/* resto del código del método */


   
}

   
/// Aquí los n métodos que necesites


}


// Código de la clase usuario
Usuario.php

<?php
include 'BaseMiProyecto.php';
class 
Usuario extends BaseMiProyecto
{
        
/* Código de la clase */
}

// Código de la clase noticias
Noticia.php

<?php
include 'BaseMiProyecto.php';
class 
Noticia extends BaseMiProyecto
{
        
/* Código de la clase */
}

// Código de la clase mensajes
Mensaje.php

<?php
include 'BaseMiProyecto.php';
class 
Mensaje extends BaseMiProyecto
{
         
/* Código de la clase */

}
Esto intenta ser una humilde opinión de un modo de organizarte el trabajo en previsión de que la aplicaión pueda crecer, incluso, si los métodos de uso más frecuente los implementas en una sola clase de la que el resto de clases pueda heredar, te facilita el hecho de modificar el código, pues haciéndolo en una sola clase, repercute en el resto, recuerda que si un método común no se te ajusta del todo a alguna de las otras clases puedes recurrir a la técnica de la sobrecarga del método.

Bueno, no sé si me he explicado correctamente pero la intención es buena, suerte y ya me contarás.

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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:17.