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

Cómo trabajar con POO

Estas en el tema de Cómo trabajar con POO en el foro de Frameworks y PHP orientado a objetos en Foros del Web. He leido bastante sobre Programación Orientada a Objetos (en PHP su mayoria), sobre conceptos como herencia, encapsulación, instancias, clases, etc., etc. etc.. y he visto ...
  #1 (permalink)  
Antiguo 17/06/2007, 10:13
 
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 17 años
Puntos: 0
Cómo trabajar con POO

He leido bastante sobre Programación Orientada a Objetos (en PHP su mayoria), sobre conceptos como herencia, encapsulación, instancias, clases, etc., etc. etc.. y he visto y manejado código para aplicar esos conceptos...

Bien, mi pregunta masomenos sería: ¿Cómo trabajar 100% con POO?. En varias lecturas han hecho la diferencia, y entiendo el que utilizar una (o varias) clase no es trabajar POO.... pero entonces, ¿qué lo es?.

Estoy por empezar un proyecto, arreglarlo mejor dicho, es un código que ya esta hecho pero que esta demasiado sucio, muy desorganizado, utilizando a la ves clases y funciones y código HTML embebido... y javascript dentro de este. Pretendo poner órden y trabajar con POO ¿qué tengo que considerar?, ¿qué tengo que evitar?, ¿hay algúnos estándares/consejos para trabajar con POO? Me refiero a que he leido de crear un archivo por clase con el mismo nombre de la clase, de no llamar a las propiedades de un objeto directamente sino por un método interno, de la organización de directorios... etc.

Sé que es un tema que da para mucho, pero he leido mucho y no me queda claro la metodología de trabajo... nadie mensiona cosas a considerar para la definición de un objeto, ¿qué tan "largo" puede ser?... no sé si me explico.
  #2 (permalink)  
Antiguo 17/06/2007, 14:07
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: Cómo trabajar con POO

Estas, creo, bastante mareado. Recomendaciones se te pueden dar todas aquellas que de seguro ya has leído. Una recomendación puede ser el concepto básico de encapsulación, este concepto lleva algunas premisas implícitas, como por ejemplo el no acceder directamente a una propiedad del objeto.

Para ser considerado 100% OO todo debería ser un objeto en el sistema y solo deben participar objeto, el hacer cosas como scripting y mezclar con esto el uso de algunos objetos no lo convierte en un desarrollo orientado a objetos.

Consideraciones para el desarrollo de objetos son simples, sigue las convenciones, no rompas el encapsulamiento intenta abstraer lo mayor posible.

Se que atento contra mi vida diciendo aquí lo siguiente, pero si todo es objetos debería considerarse un desarrollo orientado a objetos... después "vemos" y empezamos a aplicar conceptos como la programación en capas, patrones y demás cosas, pero no necesariamente para considerarse 100% OO debes si o si aplicar el concepto de capas y demás, estas son tecnicas de "refinamiento". Obviamente si debes y tienes que desarrollar los objetos de forma correcta, una cosa es un desarrollo orientado a objetos valido y otra muy diferente es un desarrollo orientado a objetos correcto. En la primera haces uso solamente de objetos y en la segunda haces lo mismo pero diseñas las cosas de forma "correcta" (es relativo a cada forma de ver las cosas y demás).
Te doy un ejemplo de desarrollo OO valido y correcto (no juzguen la lógica del ejemplo sino de la solución):

Problema a solucionar: Desarrollar un sistema que maneje estudiantes y profesores.

Desarrollo OO "valido":
- Solución: Desarrollar una clase Estudiante y otra Profesores.

Desarrollo OO "correcto":
- Solución: Desarrollar una clase Persona y las clases Estudiante, Profesores que hereden de Persona.

Se entiende la idea? En el "valido" se usan solo objetos, pero en la segunda se hace una correcta abstracción.

Saludos.

PD: No soy experto en POO ni mucho menos, todavía me falta muchisimo pero lo anterior es lo que entiendo. De todas formas todo lo que dije esta atado a graves fallas conceptuales mios y pido que me corrijan ante cualquier equivocación.
  #3 (permalink)  
Antiguo 18/06/2007, 06:08
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Re: Cómo trabajar con POO

Yo lo veo bien... creo que tus comentarios fueron muy centrados y objetivos
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #4 (permalink)  
Antiguo 18/06/2007, 22:12
 
Fecha de Ingreso: marzo-2006
Mensajes: 39
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: Cómo trabajar con POO

yo tambien soy nuevo y siempre ando buscando informacion y ayuda como esa, dariodario no entiendo que quieres decir con "no acceder a las propiedades de los objetos directamente"
get y set es acceder directamente a las propiedades? y uso variables privadas.
Si todo debe ser un Objeto, entonces funciones y subrutinas deben pertenecer a un objeto, aunque este solo sirva para tener una funcion?
disculpen si no me dejo entender bien, intentare mandar un ejemplo para que me ayuden =)
  #5 (permalink)  
Antiguo 19/06/2007, 09:43
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Re: Cómo trabajar con POO

hola zend:
si es todo bastante complicado de entender para los que nos iniciamos o venimos de la programacion estructurada, tratar de ver todo como objetos se nos complica un poco jajaja, bueno sobre tu consulta:
Cita:
dariodario no entiendo que quieres decir con "no acceder a las propiedades de los objetos directamente"
get y set es acceder directamente a las propiedades? y uso variables privadas.
para mi no, ya que si las declaras privadas estas haciendo un uso correcto de encapsulación que creo que es una de los pilares de la POO. Creo que el se refiere a eso, a usar los metodos get y set.

Cita:
Si todo debe ser un Objeto, entonces funciones y subrutinas deben pertenecer a un objeto, aunque este solo sirva para tener una funcion?
Exacto, va en realidad para mi todo debe ser un metodo de una clase que despues debe ser instacianda por un objeto. Y si aunque sea para tener una funcion que te imprima un "hola $usuario" deberias usarlo dentro del objeto.
Lo que logras con esto, es que si el metodo (funcion) pertenece a una clase padre podes usarla en todas las clases hijas, creo que asi funciona el polimorfismo tener un metodo que funcione en todas las clases sin depender de lo que devuelva. Si estoy muy errado corriganmen, por ahi se me mezclan algunas definiciones con las de java.

Y ya que estamos pregunto, php acepta herencia multiple o es como java que cada hijo tiene un solo padre?

salu2
  #6 (permalink)  
Antiguo 19/06/2007, 09:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Cómo trabajar con POO

PHP no acepta herencia multiple, cada hijo tiene un solo padre .

Y no es necesario instanciar cada clase para llamar a un metodo, para eso puedes tener metodos estaticos en cada clase, todo depende del disenio.

Saludos.
  #7 (permalink)  
Antiguo 19/06/2007, 23:33
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: Cómo trabajar con POO

Retomando el tema de como trabajar con POO...Aqui les dejo un link muy interesante, hacen una simulacion de ATM , con diagramas UML, etc etc.(En ingles = / ),
http://www.math-cs.gordon.edu/local/...11/ATMExample/
Yo apenas lo estoy desmenuzando.
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
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 17:27.