Foros del Web » Programando para Internet » PHP »

PHP OO Dónde deben estar los métodos de administración de clases?

Estas en el tema de Dónde deben estar los métodos de administración de clases? en el foro de PHP en Foros del Web. Hola, mi pregunta es más de diseño que de una cuestión de programación. Al crear un sistema de información para una institución de Ajedrez usando ...
  #1 (permalink)  
Antiguo 10/02/2015, 21:02
 
Fecha de Ingreso: enero-2015
Mensajes: 6
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Dónde deben estar los métodos de administración de clases?

Hola, mi pregunta es más de diseño que de una cuestión de programación.
Al crear un sistema de información para una institución de Ajedrez usando PHP con POO tuve una gran duda de "conciencia" de no saber si estoy aplicando correctamente POO o no.
Voy al grano, si tengo las clases Persona, Torneo, Club, Jugador, y quiero hacer un formulario de registro de una nueva Persona, quién es el encargado de hacer la consulta de adición de ese campo en la BdD? porque como la persona aún no existe alguien tiene que registrarla en la BdD, en qué clase tiene que estar ese método?
Similarmente en qué clase tiene que estar el método que:
-Asigne una persona a un "Club" (por ejemplo)
-Listar torneos Próximos, Pasados, EnCurso
-Listar Clubes activos
-Eliminar de la BdD a un Torneo, Jugador, etc.
Estas tareas no parecen ser de una clase en particular, o no parece ser adecuado que una clase tenga poder sobre cosas que la administran a sí misma, y no la tengo bien clara, dónde deben ir estos métodos.
La forma en la que lo hice fué creando una clase muy especial llamada Methods, la cual hacía todas las tareas de este tipo.
Es eso correcto? hay una forma estándar de realizar esas tareas?
Espero sus respuestas, gracias.
  #2 (permalink)  
Antiguo 10/02/2015, 23:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Dónde deben estar los métodos de administración de clases?

Me parece buen enfoque, en otros paradigmas que implican datos relacionados existen dos componentes principales: servicios y entidades.

Una entidad, por definición no puede auto-existir, es decir, no puede crearse a si misma.

Es ahí donde los servicios son quienes realizan dicha tarea.

Aplicado a tu caso es conveniente crear tantos servicios como entidades vayas necesitando en común, un servicio "UserService" se encargaría únicamente de gestionar usuarios, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/02/2015, 10:30
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Dónde deben estar los métodos de administración de clases?

Una forma de dividir los métodos es entre métodos de instancia y de clase.
Los segundos son los que comúnmente se llaman métodos estáticos.
Cualquier operación que no parta de una instancia existente de una clase, pero que maneje instancias de esa clase, especialemente si debe acceder a variables miembro, tiene todas las papeletas de ser un método estático.
Supongamos que "crear un usuario" lo sacas fuera de la clase, y lo haces desde otra.
Esa otra clase va a tener que conocer el proceso de cómo construir un usuario, cosa que sólo deberia conocer Usuario.
De tu lista:

-Asigne una persona a un "Club" (por ejemplo)
Lo haces sobre una instancia concreta -- >metodo normal.Club tiene su metodo addMember.

-Listar <....>
Método estático.

-Eliminar de la BdD a un Torneo, Jugador, etc.
Lo haces sobre una instancia concreta ---> método normal.Torneo, jugador, etc, tiene su método destroy()
  #4 (permalink)  
Antiguo 11/02/2015, 11:04
 
Fecha de Ingreso: enero-2015
Mensajes: 6
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Dónde deben estar los métodos de administración de clases?

Gracias. De acuerdo a la arquitectura MVC dónde deben estar ubicadas las clases que tienen métodos de instancia? En la misma carpeta "model"?.
Y con "normal" te refieres a una clase?
  #5 (permalink)  
Antiguo 11/02/2015, 11:45
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Dónde deben estar los métodos de administración de clases?

Cita:
Iniciado por Josue_ Ver Mensaje
Gracias. De acuerdo a la arquitectura MVC dónde deben estar ubicadas las clases que tienen métodos de instancia? En la misma carpeta "model"?.
Y con "normal" te refieres a una clase?
Cualquier clase puede tener metodos de instancia y de clase.No es que sean clases distintas las que tienen unos u otros.
Sobre en qué carpeta están esas clases según "MVC"...Pues depende de la interpretación de MVC.IMHO, en el modelo
Con normal me referia a método no estático.Debería haber dicho método de instancia.
  #6 (permalink)  
Antiguo 11/02/2015, 12:57
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Dónde deben estar los métodos de administración de clases?

Cita:
Iniciado por Josue_ Ver Mensaje
Gracias. De acuerdo a la arquitectura MVC dónde deben estar ubicadas las clases que tienen métodos de instancia? En la misma carpeta "model"?.
Y con "normal" te refieres a una clase?
Tu puedes organizar tus archivos y directorios como quieras, el modelo no te sugiere, ni te limita en ese sentido.
Complementando las opiniones de pateketrueke y dashtrashen; te sugiero que investigues sobre estas perspectivas de diseño de software :
  • RDD (Responsibility Driven Design)
  • DDD (Domain Driven Design)
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: clases, diseño, metodos
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 13:12.