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

Duda modelando usando POO

Estas en el tema de Duda modelando usando POO en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, antes de hacer el código en PHP, tengo un modelo UML y me ha surgido una duda de concepto... Tengo el siguiente modelo UML: ...
  #1 (permalink)  
Antiguo 23/07/2013, 12:48
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 11 meses
Puntos: 3
Duda modelando usando POO

Hola, antes de hacer el código en PHP, tengo un modelo UML y me ha surgido una duda de concepto...

Tengo el siguiente modelo UML:


La duda es, en el modelo represento que un Problema tiene EstadoProblema ( * ------- 1), hasta aquí bien. Y esto es heredado por los hijos (Problema1, Problema2, ... ProblemaN)

Pero cada uno de estos problemas tendrá unos posibles valores de estados, no comparten los mismos (es decir Problema1 podrá tener un estado con valor = "estado1" o "estado2", Problema2 con valor = "estado5" o "estado6" ...)

EstadoProblema representa cada uno de estos estados (estadoN)

¿Cómo se modelaría esa situación? ¿Valdría tal y como está y sería en BD donde tengo la restricción de qué estado se usa para un problema determinado?

¿Me he explicado bien?

Muchas gracias.

Un saludo.
  #2 (permalink)  
Antiguo 23/07/2013, 17:41
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Duda modelando usando POO

Pues no hay "problema"

..... pues eso se maneja a nivel de instancias (objetos) asi que cada instancia tiene su propio "estado interno"

Código PHP:
Ver original
  1. <?php
  2.  
  3. Class Problema
  4.  
  5. {
  6.     // defino los estados explitamente como constantes:
  7.     const deleted=-1;
  8.     const pending= 0;
  9.     const soluto = 1;
  10.     const paused = 2;
  11.  
  12.     private $estado = self::pending;
  13.     private $nombre = null;
  14.  
  15.     public function __construct ($nombre_problema){  
  16.         $this->nombre = $nombre_problema;
  17.     // ....
  18.     return $this;
  19.     }
  20.  
  21.     public function setEstado($estado)
  22.     {
  23.         $this->estado=$estado;
  24.         return $this;
  25.     }
  26.  
  27.     public function getEstado()
  28.     {
  29.         return $this->estado;
  30.     }
  31.     // otros metodos
  32. }
  33.  
  34. $p1 = (new Problema('casarme'))->setEstado(-1);
  35. $p2 = (new Problema('mantener hipoteca'))->setEstado(2);
  36.  
  37. echo "Estado de Problema #1 : {$p1->getEstado()} <br/>";
  38. echo "Estado de Problema #2 : {$p2->getEstado()}";


Te aconsejo que en el setter de estado agregues un chequeo de que se encuentre entre los estados posibles, en este caso en el rango de -1 a 2 y sino cumple generes una InvalidArgumentException

Otra cosa: si tu extienderas la clase Problema... para sus hijos es la misma cosa... (aclaro porque no se tu que entiendes)
__________________
Salu2!

Última edición por Italico76; 23/07/2013 a las 22:49
  #3 (permalink)  
Antiguo 24/07/2013, 05:24
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: Duda modelando usando POO

Problema sí hay... o eso creo.

Yo quiero especificar en el UML lo que debe ir en código. Por ejemplo, si yo no fuera a programar eso. El que coja el UML debe saber qué posibles estados debe tener cada tipo de problema.

Gracias por tu respuesta!
  #4 (permalink)  
Antiguo 24/07/2013, 06:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Duda modelando usando POO

Se llaman DIAGRAMAS DE ESTADO o "UML STATE DIAGRAMs"

Código UML:
Ver original
  1. [DELETED]    <-----  [PENDING] --->  [SOLVED] --- > [ARCHIVED]

En ese ejemplito... tu estado inicial es "PENDING" (o pendiente) ... luego se puede borrar o resolver ... y un problema resuelto se puede archivar

O sea... no solo son los estados posibles los que muestras sino:

- Estados posibles (pending, deleted, solved, archived)
- Estado inicial (pending), posibles estados finales (deleted, archived)
- Flujo

No se... yo lo veo facil.... los he usado sin problemas y me han ayudado mucho
__________________
Salu2!

Última edición por Italico76; 24/07/2013 a las 06:08
  #5 (permalink)  
Antiguo 24/07/2013, 06:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Duda modelando usando POO

Talves enumerations es lo que estas buscando http://publib.boulder.ibm.com/infoce...s%2Fcenum.html
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 24/07/2013, 06:14
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Duda modelando usando POO

Cita:
Iniciado por masterpuppet Ver Mensaje
Talves enumerations es lo que estas buscando http://publib.boulder.ibm.com/infoce...s%2Fcenum.html
La diferencia es que un Enumerativo es un diagrama de clases, y por tanto carece de caracter dinamico: no tiene ni estado inicial ni final y tampoco definen un "flujo" es lo estatico vs dinamico pero por lo que vuelvo y re-leo son algo completamente diferente: definen tipos de datos

Código ESTADOS:
Ver original
  1. [DELETED](x)    <-----  [PENDING](.) --->  [SOLVED] --- > [ARCHIVED](x)

vs.

Código NUEVO TIPO DE DATO:
Ver original
  1. [<<Enumeration>> / deleted, pending, solved, archived ]


Luego.. como se supone se usa en conjuncion con otras clases en un diagrama UML mas grande ? se usa como una nota o que ? realmente despues de haber leido un par de libros de referencia de UML ... JAMAS habia leido de este tipo de diagrama
__________________
Salu2!

Última edición por Italico76; 24/07/2013 a las 07:00
  #7 (permalink)  
Antiguo 24/07/2013, 08:30
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: Duda modelando usando POO

Hola,

sobre los diagramas de estados, sé a qué te refieres, pero sigue habiendo la misma indefinición si en vez de estados, Problema estuviera relacionado con una entidad Color, pero cada uno de los problemas puede estar relacionados a Colores diferentes.

Los enumerados no es una solución en este caso pues los estados/colores deben ser administrables. Como decía Italico76 con una enumeración restringes los valores por código, sin posibilidad de añadir, modificar, eliminar dinámicamente.

Gracias por las respuestas.

Un saludo.
  #8 (permalink)  
Antiguo 24/07/2013, 11:24
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Duda modelando usando POO

El tema ya volvió diria de base de datos.... o sea... de persistir tus objetos...

Tu pregunta original era especificamente sobre "estados" que es tratado en particular en UML por ser algo recurrente y justamente los "estados" son algo que se define muy bien al diseñar el sistema.. se pueden "enumerar" como te dicen arriba justamente por eso: no van a aparecer o desaparecer asi de facil


Tu puedes modelar relaciones de uno a uno, uno a muchos, muchos a muchos, recursivas y demas.. con UML... no veo le problema ahi ...
__________________
Salu2!

Última edición por Italico76; 24/07/2013 a las 12:55
  #9 (permalink)  
Antiguo 24/07/2013, 14:35
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: Duda modelando usando POO

La pregunta original en efecto era sobre "estados" pero lo que quería representar era cómo modelar que las especializaciones tengan diferentes valores de una entidad con la que está relacionada el padre (ya sean estados, colores, etc).

Tenía la duda si en efecto eso ya sería una cuestión de BD, es decir, yo tendría la relación a nivel de la generalización, la cual heredan sus "hijos" y la restricción de qué posibles valores vaya a tener cada uno de estos, se modelaría en BD?????

Aunque pienso que debería ser información ajena a la BD.

Gracias por la respuesta.

Un saludo
  #10 (permalink)  
Antiguo 24/07/2013, 22:17
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Duda modelando usando POO

Cita:
Iniciado por wigglyUtrera Ver Mensaje
Hola, antes de hacer el código en PHP, tengo un modelo UML y me ha surgido una duda de concepto...

Tengo el siguiente modelo UML:



¿Cómo se modelaría esa situación? ¿Valdría tal y como está y sería en BD donde tengo la restricción de qué estado se usa para un problema determinado?
Viendo tu diagrama de clases y leyendo el hilo completo, lo que quieres explicar es que necesitas representar un objeto que depende de su estado interno, en otras palabras lo que necesitas es un objeto que cambie su comportamiento cuando cambie su estado. Asi como tienes el diagrama no es suficiente para que alguien mas sepa que va hacer con el. Necesitas agregarle notas y documentarlo para saber que hace y agregarle sus respectivos diagramas de secuencia y colaboración y en este caso en particular el diagrama de estados que representa tu modelo.
Si lo que comente antes es lo que necesitas, ya no tienes que hacerlo dos veces ya se le ocurrio a alguien mas en particular tu caso se le conoce como State Pattern y puedes ver su diagrama de clases y explicacion en el siguiente enlace: http://www.dofactory.com/Patterns/PatternState.aspx

Las clases concretas implementan la interface State la solicitudes de cambio en el estado se solicitan a través del contexto
Usando el ejemplo de Italico76 podemos implementar el patron.
Código PHP:
Ver original
  1. <?php
  2.         //interface
  3.             interface IProblemState{
  4.            
  5.                 public function assigned();
  6.                 public function pending();
  7.                 public function resolved();
  8.            
  9.             }
  10.         //Contexto
  11.             class Problem{
  12.            
  13.                 private $assigned;
  14.                 private $pending;
  15.                 private $resolved;
  16.                 private $state;
  17.                
  18.                 public function __construct(){
  19.                
  20.                     $this->assigned = new ProblemAssignedState($this);
  21.                     $this->pending = new ProblemPendingState($this);
  22.                     $this->resolved = new ProblemResolvedState($this);
  23.                     $this->state = $this->assigned;
  24.                 }
  25.                
  26.                 public function setState(IProblemState $state){
  27.                
  28.                     $this->state = $state;
  29.                
  30.                 }
  31.                
  32.                 public function getState(){
  33.                
  34.                     return $this->state;
  35.                
  36.                 }
  37.                
  38.                 public function assigned(){
  39.                
  40.                     $this->state->assigned();
  41.                
  42.                 }
  43.                
  44.                 public function pending(){
  45.                
  46.                     $this->state->pending();
  47.                
  48.                 }
  49.                
  50.                 public function resolved(){
  51.                
  52.                     $this->state->resolved();
  53.                
  54.                 }
  55.                
  56.                 public function getAssigned(){
  57.                
  58.                     return $this->assigned;
  59.                
  60.                 }
  61.                
  62.                 public function getPending(){
  63.                
  64.                     return $this->pending;
  65.                
  66.                 }
  67.                
  68.                 public function getResolved(){
  69.                
  70.                     return $this->resolved;
  71.                
  72.                 }
  73.                
  74.             }
  75.            
  76.             //Clases concretas
  77.  
  78.             class ProblemAssignedState implements IProblemState{
  79.            
  80.                 private $problem;
  81.                
  82.                 public function __construct(Problem $problem){
  83.                
  84.                     $this->problem = $problem;
  85.                
  86.                 }
  87.                
  88.                 public function assigned(){
  89.                     echo 'Problema asignado!!! <br>';
  90.                
  91.                 }
  92.                
  93.                 public function pending(){
  94.                    
  95.                     echo 'Estado del problema: Pendiente <br>';
  96.                     $this->problem->setState($this->problem->getPending());
  97.                 }
  98.                
  99.                 public function resolved(){
  100.                
  101.                     echo 'Este problema todavia no esta pendiente <br>';
  102.                
  103.                 }
  104.            
  105.             }
  106.            
  107.             class ProblemPendingState implements IProblemState{
  108.            
  109.                 private $problem;
  110.                
  111.                 public function __construct(Problem $problem){
  112.                
  113.                     $this->problem = $problem;
  114.                
  115.                 }
  116.                
  117.                 public function assigned(){
  118.                     echo 'Estado del problema pendiente <br>';
  119.                
  120.                 }
  121.                
  122.                 public function pending(){
  123.                    
  124.                     echo 'Problema Pendiente!!! <br>';
  125.                    
  126.                
  127.                 }
  128.                
  129.                 public function resolved(){
  130.                
  131.                     echo 'Estado del problema resuelto <br>';
  132.                     $this->problem->setState($this->problem->getResolved());
  133.                 }
  134.            
  135.             }
  136.            
  137.             class ProblemResolvedState implements IProblemState{
  138.            
  139.                 private $problem;
  140.                
  141.                 public function __construct(Problem $problem){
  142.                
  143.                     $this->problem = $problem;
  144.                
  145.                 }
  146.                
  147.                 public function assigned(){
  148.                     echo 'Estado del problema resuelto <br>';
  149.                
  150.                 }
  151.                
  152.                 public function pending(){
  153.                    
  154.                     echo 'Estado del problema resuelto <br>';
  155.                
  156.                 }
  157.                
  158.                 public function resolved(){
  159.                
  160.                     echo 'Problema resuelto!!! <br>';
  161.                     //$this->problem->setState($problem->getResolved());
  162.                
  163.                 }
  164.            
  165.             }
  166.            
  167.             $problem = new Problem();
  168.             $problem->assigned();
  169.             $problem->resolved();
  170.             $problem->pending();
  171.             $problem->assigned();
  172.             $problem->resolved();
  173.             $problem->resolved();
  174.        
  175.         ?>
Espero haber aclarado tu duda.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #11 (permalink)  
Antiguo 24/07/2013, 23:56
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Duda modelando usando POO

@hhs: +1,

Ceo has interpretado muy bien el problema
__________________
Salu2!
  #12 (permalink)  
Antiguo 25/07/2013, 12:31
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: Duda modelando usando POO

Hola, gracias por la respuesta @hhs, me ha aportado mucho.

La verdad es que el ejemplo original no fue acertado para lo que en realidad quería representar. Un ejemplo más concreto sería:



Tenemos las mismas entidades, pero cada Problema1, Problema2, ProblemaN tiene asociado un (y sólo un) TipoProblema cuyos valores pueden ser diferentes para cada uno de los Problemas

Por ejemplo,
Problema1 puede ser de tipo (pero sólo uno):
* Problema1.1
* Problema1.2
Problema2 puede ser de tipo (pero sólo uno):
* Problema2.1
* Problema2.2
* Problema2.3
...

No quiero especializar en estos casos porque estos tipos de problema son cientos por cada Problema, por lo que es inviable representarlo en el modelo y no aportar mucho cada tipo individualmente.

No sé si con este ejemplo queda más claro.

Muchas gracias.

Un saludo.
  #13 (permalink)  
Antiguo 26/07/2013, 00:16
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Duda modelando usando POO

Ok entonces tu problema es de estructura, eso lo puedes representar mejor semanicamente mediante agregación o composición.
Para la vista de diseño puedes echar un vistazo a los siguientes patrones de diseño:
http://www.oodesign.com/iterator-pattern.html (iterator)
http://www.oodesign.com/composite-pattern.html (composite)
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #14 (permalink)  
Antiguo 26/07/2013, 00:46
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: Duda modelando usando POO

No entiendo muy bien a qué te refieres.

Para usar agregación/composición debo tener identificados los posibles tipos de problemas (Problema1.1, Problema1.2, Problema2.1, etc.) y como comenté no es viable representar cada uno de los tipos de problemas.

¿no es así?

Sigo sin ver el uso de esos patrones que me comentas (los conozco)

Gracias.

Un saludo.
  #15 (permalink)  
Antiguo 26/07/2013, 08:04
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Duda modelando usando POO

Cita:
Iniciado por wigglyUtrera Ver Mensaje
No entiendo muy bien a qué te refieres.

Para usar agregación/composición debo tener identificados los posibles tipos de problemas (Problema1.1, Problema1.2, Problema2.1, etc.) y como comenté no es viable representar cada uno de los tipos de problemas.

¿no es así?
Ve leyendo de aqui y sigo recomendando "PHP objects, patterns and practice" que es un excelente libro

Seguramente HHS puede ampliarte un poco mas la bibliografia
__________________
Salu2!
  #16 (permalink)  
Antiguo 26/07/2013, 11:10
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: Duda modelando usando POO

@Italico76 El concepto de agregación/composición la entiendo.

La entidad TipoProblema es una entidad con información básico del tipo de problema (nombre, descripción) (pero estos tipos son diferentes para cada problema1..N)

No entiendo por qué incides en la agregación.

La duda original viene en la restricción de valores de una determinada entidad (aplicable también a atributos)

Tomo nota del libro, gracias!!

Un saludo.
  #17 (permalink)  
Antiguo 26/07/2013, 19:48
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Duda modelando usando POO

Cita:
Iniciado por wigglyUtrera Ver Mensaje
@Italico76 El concepto de agregación/composición la entiendo.

La entidad TipoProblema es una entidad con información básico del tipo de problema (nombre, descripción) (pero estos tipos son diferentes para cada problema1..N)
Estas completamente seguro que son tipos de datos distintos ? si creas una clase abstracta (o mejor aun una interfaz ITipoProblema) todos los TipoProblema que hereden o implementen seran del mismo tipo
__________________
Salu2!
  #18 (permalink)  
Antiguo 28/07/2013, 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, 8 meses
Puntos: 270
Respuesta: Duda modelando usando POO

Si la relación entre TipoProblema y Problema es 1 a 1, lo primero a preguntarse es qué diferencia a TipoProblema de Problema.
Código PHP:
Ver original
  1. La entidad TipoProblema es una entidad con información básico del tipo de problema (nombre, descripción) (pero estos tipos son diferentes para cada problema1..N)
Qué frase describe mejor lo que estás modelando?:
- La entidad Problema tiene una entidad TipoProblema que contiene información básica del tipo de problema (nombre,descripcion)
o
- La entidad Problema tiene un nombre, descripción, y un tipo.

Cuando se gestiona un "tipodealgo", estamos hablando de "algo" que tiene un valor acotado por un cierto conjunto.En cualquier caso, un "tipodealgo" *no* es una entidad aparte.Lo normal es que defina la naturaleza de una clase.Puesto de otra forma:Si hicieras un árbol de clases de animales, no harías una clase "Animal", que "tiene" un tipo "Mamífero" o "Insecto".El animal *es* un Mamífero o un Insecto.

El asunto ahora es cómo modelar esa serie de valores acotados:
- Si el comportamiento de una clase depende casi absolutamente de su "tipo", la clase base no es más que un interfaz, y las clases derivadas implícitamente definen el tipo de problema que son.La información de tipo está en la clase.Así tendrias un interfaz "Problema", y un "ProblemaTipo1","ProblemaTipo2","ProblemaTipo3 ", etc.No es necesaria una variable miembro "tipo".La acotación de los posibles valores se hace a través de la existencia o no de clases para dichos tipos.

- Si el comportamiento de la clase depende de su tipo sólo en parte, la información de tipo, en vez de estar en la clase, puede ser simplemente una variable miembro.Pero la acotación de los posibles valores, ya queda en manos del código.En lenguajes que soporten tipos de datos ENUM , es muy sencillo crear este "set" de valores.En PHP, un array puede valer.En este caso, y ya que el comportamiento de la clase depende de su tipo sólo hasta un cierto punto, la clase base puede ser tanto una clase concreta como abstracta.

- Una mezcla de los dos anteriores casos, sobre todo si existen "familias" de tipos.En este caso, existen clases derivadas que especializan la clase base (añadiendo tipos implicitos por clase), que dan valores a la variable miembro "tipo".Pero este tipo ya no es global.Es particular a esta clase derivada, por lo que lo que la lista de tipos es una lista de tuplas (clase,tipo-local).

Pero, en general, las clases con nombre "Tipodealgo" a mi no me gustan nada.Es simplemente mover el problema de la clase que lo tiene, a otra clase, sin aportar mucho a la resolución del problema, y eliminando contenido semántico de la clase que lo debe tener."Tipo de algo" suena a "tipo de dato".Y esa información es, precisamente, lo que da una clase.Qué "tipo de dato" es una cierta instancia.

En resumen.Yo no veo "TipoProblema" como una clase aparte.Veo la clase "Problema".Posiblemente, varias subclases, que definen tipos de forma implícita (por clase).
Por ejemplo, ProblemaEnSistema , ProblemaEnDatos,ProblemaHumano.Cada uno de ellos, tiene varias variales miembro propias, que no existen en Problema.Pero, a la vez, cada una de ellas tiene sus propios subtipos.Por lo tanto, los tipos de problemas es una lista de tuplas ("ProblemaEnSistema","1"),("ProblemaEnSistema","2" )......("ProblemaEnDatos","1").
  #19 (permalink)  
Antiguo 31/07/2013, 15:07
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: Duda modelando usando POO

Gracias por tu reflexión @dashtrash.

La idea es modelar "subtipos" de un problema determinado, ya que cada Problema (Problema1, ..., ProblemaN) va a tener gran número de "subtipos" y que varía con frecuencia, como tipificación y no veo que tengan que estar como subclase (debido a su volumen y su variabilidad)

Un saludo.
  #20 (permalink)  
Antiguo 01/08/2013, 11:57
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, 8 meses
Puntos: 270
Respuesta: Duda modelando usando POO

Pues, lo que te digo en el post...Si hay demasiados subtipos, el restringir los posibles subtipos lo tienes que hacer por valores de variables miembro.El valor de la variable "tipo" es uno de un conjunto dado (ENUM,constantes,array).
Y en cuanto hables de valores, ya no estás hablando de arquitectura de clases.
Estás hablando de 1 variable miembro, y un chequeo que tendrás que hacer sobre su valor.OOP no gestiona valores de variables miembro.

Donde suele venir el problema, es cuando según el valor de esa variable tipo, existe información adicional.Por ejemplo, que haya "Problemas" de un servidor, y la información extra sea la ip del servidor, fecha, etc.O "Problema" de una base de datos, y la información extra sea la query que lo ha provocado, etc.

En ese caso, hay 3 opciones: o la clase base "Problema" tiene variables miembro "genericas" donde meter esa informacion extra, o tienes x subclases de Problema, según el tipo de información extra de esos problemas (es decir, clase base Problema, clase derivada ProblemaServidor, del cual puede haber muchos subtipos, pero todos tienen la misma informacion extra), o, finalmente, crear clases "InformacionProblema"

Etiquetas: php, poo, usando
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 03:34.