Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2014, 16:06
NelsonJPG
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 10 meses
Puntos: 0
Necesito Consejo de POO (Inventario)

Hola saludos y feliz dia para todos los que se tomaron un poquito de su tiempo para leer este post... Quiero saber como manejarian la siguiente operacion

Tengo una clase Padre Pieza y una serie de clases hijas como Procesador, Chipset y RAM lo que quiero saber es como ustedes consideran la compatibilidad de piezas entre Chipset y Procesador? en mi caso en la clase padre hice una relacion involutiva(Clase que se llama dentro de si en un metodo) para manejar este tipo de compatibilidad de piezas ya que una tarjeta madre puede soportar diferentes procesadores

la pregunta del millon es: ¿Como lo estoy manejando es factible o es redundante?
me gustaria conocer su percepcion

sin mas que decir me despido y adjunto el codigo
Código PHP:
Ver original
  1. //-------------------- CLASE PIEZA
  2. class Pieza{
  3.     public $nombre;
  4.     public $modelo;
  5.     protected $_pieza_compatible = array();
  6.    
  7.     protected function Agregar_P($n,$m){
  8.         $this->nombre = $n;
  9.         $this->modelo = $m;
  10.     }
  11.    
  12.     public function __toString(){
  13.         return $this->nombre.' '.$this->modelo;
  14.     }  
  15.    
  16.     protected function Agregar_Pieza_Compatible(Pieza $piezaC){
  17.         $this->_pieza_compatible[] = $piezaC;
  18.     }
  19. }
  20.  
  21. //-------------------- CLASE TARJETA MADRE
  22. class Chipset extends Pieza{
  23.     public function Agregar($a,$b){
  24.         parent::Agregar_P($a,$b);
  25.     }
  26.     public function compatibilidad(Pieza $p){
  27.         parent::Agregar_Pieza_Compatible($p);
  28.     }
  29. }
  30.  
  31. //-------------------- CLASE PROCESADOR
  32. class Procesador extends Pieza{
  33.     public function Agregar($a,$b){
  34.         parent::Agregar_P($a,$b);
  35.     }  
  36. }
  37.  
  38. //-------------------- CLASE RAM
  39. class RAM extends Pieza{
  40.     public function Agregar($a,$b){
  41.         parent::Agregar_P($a,$b);
  42.     }  
  43. }
  44.  
  45. //-------------------- CLASE PC
  46. class PC{
  47.     private $_procesador;
  48.     private $_TarjeMadre;
  49.     private $_MemoriaRAM = array();
  50.        
  51.         public function Agg_Chip(Chipset $tm){
  52.             $this->_TarjeMadre = $tm;
  53.         }
  54.         public function Agg_RAM(RAM $memoria){
  55.             $this->_MemoriaRAM[] = $memoria;
  56.         }
  57.         public function Agg_Pro(Procesador $procss){
  58.             $this->_procesador = $procss;
  59.         }
  60. }
  61.  
  62. $TM = new Chipset;// Tarjeta Madre
  63. $procesador = new Procesador;// Procesador
  64. $procesador2 = new Procesador;// Procesador
  65. $M = new RAM;// Memoria RAM
  66.  
  67.  
  68. $TM->Agregar('Chipset Intel® X99','ABC-123');// Agregamos una Nueva Tarjeta Madre
  69. $procesador->Agregar('Intel® Core™ i7','LGA2011-v3 Socket');// Agregamos un Procesador
  70. $procesador2->Agregar('Intel® Core™ i7','LGA2050-v4 Socket');// Agregamos un Procesador
  71. $M->Agregar('Kingston ARQ','TF-950');// Agregamos Nueva Memoria RAM
  72.  
  73. // Le Agregamos las piezas que son compatibles con la tarjeta Madre INTEL C600
  74. $TM->compatibilidad($procesador);
  75. $TM->compatibilidad($procesador2);
  76. $TM->compatibilidad($M);
  77.  
  78. // Construimos el PC
  79. $PC = new  PC;
  80. $PC->Agg_Chip($TM);
  81. $PC->Agg_Pro($procesador);
  82. $PC->Agg_RAM($M);
  83.  
  84.  
  85. var_dump($TM);
  86. echo "<hr>";
  87. var_dump($PC);

PD = la clase PC es para construir la Computadora segun las partes que posee