elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:52  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  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 942 veces)
Alex_bro


Desconectado Desconectado

Mensajes: 1.228



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

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

JustHost.com Suck´s
Alojamiento que recomiendo: (Enlace de afiliado)
EFEX


Desconectado Desconectado

Mensajes: 327


"Dinero Facil"


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

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


GITHUB: github.com/empirefx
Alex_bro


Desconectado Desconectado

Mensajes: 1.228



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

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

JustHost.com Suck´s
Alojamiento que recomiendo: (Enlace de afiliado)
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



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

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

El As del Club Paris


Desconectado Desconectado

Mensajes: 1.816


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

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
<?php
class Categoria {
static private $categorias = array('Zapatos', 'Carteras', 'Sombreros');
private $value;
 
public function __construct(){
//Constructor
return true;
}
 
public function existe($str){
if( in_array($str, self::$categorias) ){
return true;
}else{
return false;
}
}
 
function set($str){
if( $this->existe($str) ){
$this->value = $str;
return true;
}
return false;
}
 
function get(){
return $this->value;
}
 
function __toString(){
return $this->value;
}
 
}
 
class Producto {
public $nombre;
private $categoria;
 
function __construct(){
//Constructor
$this->categoria = New Categoria();
return true;
}
 
function setCat($str){
return $this->categoria->set("Zapatos");
}
}
 
$producto = new Producto();
 
$producto->nombre = "Tennis Nike SGF21";
$producto->setCat('Zapatos');
 
print_r($producto);
?>

Saludos.

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

sudo suck --mycock -o force
Alex_bro


Desconectado Desconectado

Mensajes: 1.228



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

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

JustHost.com Suck´s
Alojamiento que recomiendo: (Enlace de afiliado)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines