elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Sobre POO
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sobre POO  (Leído 2,288 veces)
Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Sobre POO
« en: 15 Agosto 2011, 22:28 pm »

Buenas,
Hace apenas dias que estoy mentiendome en esto de programar orientado a objetos con php, pues antes me parecia que era todo como una tonteria, y ahora me arrepiento de no haberlo intentado antes.

El caso es que ahora mismo tengo una clase Productos en la que tengo funciones para añadir,modificar... productos pero tambien para añadir,modificar... categorias. Esto se debe a que por ejemplo, al añadir un producto necesito la funcion que comprueba si existe la categoria a la cual se le asocia.

Creo que lo optimo seria separar 2 clases, una para productos y otra para categorias, pero no se como hacerlo si tengo esas dependencias.

Se supone que deberia hacerlo asi? para mantener la encapsulacion de la clase? o deberia crear una instancia hacia la clase Categorias cuando necesite funciones de ésta en la clase Productos?

Gracias :)


En línea

EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: Sobre POO
« Respuesta #1 en: 15 Agosto 2011, 23:12 pm »

Si podrias poner un resumen del codigo, mejor, solo para no dejar nada de lado, podrias aplicar lo que se le llama Herencia, te dejo un enlace:

Herencia
http://www.phpya.com.ar/poo/temarios/descripcion.php?cod=45&punto=11&inicio=0

Fijate si es lo que necesitas, puede que me equivoque.


En línea

Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: Sobre POO
« Respuesta #2 en: 15 Agosto 2011, 23:21 pm »

Gracias por tu respuesta EFEX :)

No entiendo mucho, pero creo que la herencia no es la solución, porque la clase Categorias también requiere de funciones de la clase Productos, por ejemplo, al borrar una categoria debe comprobar si existen productos asignados a ella...

La verdad es que estoy hecho un lio... no se si es mejor practica tener una sola clase en un archivo con muchas lineas de codigo, o crear instancias a una clase dentro de otra... no se, no lo veo muy limpio esto ultimo jeje.

Un saludo, y gracias de nuevo.
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Sobre POO
« Respuesta #3 en: 16 Agosto 2011, 16:17 pm »

Te recomiendo que pienses como haras todo antes de programar. Así no tendrás lió ni nada por el estilo.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Sobre POO
« Respuesta #4 en: 16 Agosto 2011, 16:35 pm »

La base del paradigma POO es una 'modelacion' mas precisa o cercana al mundo real. Por lo tanto La clase Productos deberia poseer una propiedad (variable miembro) que sea un objeto de la clase categoria.

Código
  1. <?php
  2. class Categoria {
  3. static private $categorias = array('Zapatos', 'Carteras', 'Sombreros');
  4. private $value;
  5.  
  6. public function __construct(){
  7. //Constructor
  8. return true;
  9. }
  10.  
  11. public function existe($str){
  12. if( in_array($str, self::$categorias) ){
  13. return true;
  14. }else{
  15. return false;
  16. }
  17. }
  18.  
  19. function set($str){
  20. if( $this->existe($str) ){
  21. $this->value = $str;
  22. return true;
  23. }
  24. return false;
  25. }
  26.  
  27. function get(){
  28. return $this->value;
  29. }
  30.  
  31. function __toString(){
  32. return $this->value;
  33. }
  34.  
  35. }
  36.  
  37. class Producto {
  38. public $nombre;
  39. private $categoria;
  40.  
  41. function __construct(){
  42. //Constructor
  43. $this->categoria = New Categoria();
  44. return true;
  45. }
  46.  
  47. function setCat($str){
  48. return $this->categoria->set("Zapatos");
  49. }
  50. }
  51.  
  52. $producto = new Producto();
  53.  
  54. $producto->nombre = "Tennis Nike SGF21";
  55. $producto->setCat('Zapatos');
  56.  
  57. print_r($producto);
  58. ?>

Saludos.

PD: Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
« Última modificación: 16 Agosto 2011, 16:37 pm por [u]nsigned » En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: Sobre POO
« Respuesta #5 en: 18 Agosto 2011, 05:18 am »

Gracias a todos por las respuestas.

nsigned, ese era el planteamiento al que me referia cuando decia lo de crear una instancia dentro de Productos hacia Categorias, agradezco con total sinceridad el trabajo que has hecho posteando todo el codigo... vamos que te lo has currado jejeje.

Solo tengo una duda. Si en algun momento necesitara una funcion de la clase Producto en la clase Categoria e instanciara Producto en una propiedad de Categoria, se crearia un bucle infinito no? que imagino que se solucionaria usando el patron SigleTon... vamos aunque seguramente este caso que planteo no será ni logico conforme a los principios que comentas sobre POO... solo lo pense por una funcion que comprueba si hay productos dentro de una categoria antes de borrarla, pero creo que esa funcion es propia de la clase Categoria y no de Producto.

Un saludo, y de nuevo muchas gracias por la dedicación.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tengo varias dudas sobre DVD a formato FLV, y otras cosas sobre FLV
Multimedia
SaintGermain 0 2,256 Último mensaje 30 Mayo 2005, 21:47 pm
por SaintGermain
ayuda sobre el tutorial de subtitulos sobre avi « 1 2 »
Multimedia
txakra 15 5,372 Último mensaje 2 Octubre 2005, 15:06 pm
por Songoku
Dudas sobre la vpn sobre Windows Server 2003
Redes
Riudo 5 5,635 Último mensaje 24 Mayo 2011, 05:36 am
por Riudo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines