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

Clases <--> funciones

Estas en el tema de Clases <--> funciones en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Wenas ! Estoy empezando a usar las clases, y despues de bastante trabajo intentando comprenderlas, mis dudas son: ¿Que ventaja tienen las clases sobre programar ...
  #1 (permalink)  
Antiguo 21/08/2005, 16:32
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 10 meses
Puntos: 2
Clases <--> funciones

Wenas ! Estoy empezando a usar las clases, y despues de bastante trabajo intentando comprenderlas, mis dudas son:

¿Que ventaja tienen las clases sobre programar solamente con funciones y por qué usar clases?

¿Qué es lo práctico de las clases?

¿Se puede hacer lo mismo con solo funciones?


Tendre en cuenta vuestras opiniones, ya que me han dicho q si me meto con las clases, q las aprenda bien y me acostumbre a ellas, entonces si me van a ahorrar trabajo y a comprender mejor la programacion, prefiero meterle mas horas.


Muchas gracias y un saludo ;)


Ismael.
__________________
php user ;)
  #2 (permalink)  
Antiguo 21/08/2005, 16:49
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 1 mes
Puntos: 0
Primero que nada creo que esta pregunta deberia ser movida al sub-foro de PHP POO. A continuacion te respondo las preguntas tratando de explicarte loq ue yo etendi tambien me costo un poquitin darme cuenta, pero con lo que te voy a decir yo comence hace una semana y la verdad que de ahora en mas amo las clases jeeje. Te cuento:

¿Que ventaja tienen las clases sobre programar solamente con funciones y por qué usar clases?

Principalmente, la ventaja que tiene el programar con clases y no con funciones simplemente, es que las clases son conjunto de funciones, es decir lo que hace una clase es encapsular funciones, y asi de esa manera tener todo mejor ordenado del lado programador. Por ejemplo hacer una clase para conexion y consultas a bases de datos, hacer una clase para manejo de ficheros (upload-thumbnails-etc), estas dos clases, tendran x funciones segun tus necesidades y tu logica de programacion.
Otro concepto interesante es el de la Herencia y el Polimorfismo. Revisa las faq's del sub foro de POO. Ahi lei unos links interesantisimos que estan en español vas a entender mas de lleno lo que te estoy queriendo decir.

¿Qué es lo práctico de las clases?

El encapsulamiento de funciones y sus propiedades de herencia y polimorfismo.

¿Se puede hacer lo mismo con solo funciones?
Podes hacer todo con funciones, como digo arriba, las clases son encapsulamiento (agrupamiento) de funciones.

Espero haberte sido claro. Cualquier cosa revisa las faq's como te digo y pregunta si no fui claro con algo. Salu2.-
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #3 (permalink)  
Antiguo 22/08/2005, 11:01
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 10 meses
Puntos: 2
gracias por tu respuesta ;)
__________________
php user ;)
  #4 (permalink)  
Antiguo 22/08/2005, 21:53
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 1 mes
Puntos: 0
Espero te haya servido.
De nax :D
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #5 (permalink)  
Antiguo 28/08/2005, 09:44
 
Fecha de Ingreso: agosto-2005
Mensajes: 1
Antigüedad: 18 años, 8 meses
Puntos: 0
Cita:
Iniciado por Znet
¿Qué es lo práctico de las clases?

El encapsulamiento de funciones y sus propiedades de herencia y polimorfismo.
Disculpa la ignorancia Znet pero tengo entendido que con php no es posible trabajar con herencia y polimorfismo cuando se trabaja con clases, es medio limitado en ese sentido.
saludos
  #6 (permalink)  
Antiguo 28/08/2005, 09:48
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 10 meses
Puntos: 2
no es posible la herencia multiple, pero sí la herencia

salu2
__________________
php user ;)
  #7 (permalink)  
Antiguo 28/08/2005, 12:55
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 1 mes
Puntos: 0
http://www.programacionweb.net/artic...?num=158&pag=1

http://www.zonaphp.com/index.php?mod...&id=1&pagina=6

Salu2.-
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #8 (permalink)  
Antiguo 03/09/2005, 17:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 2
¿Que ventaja tienen las clases sobre programar solamente con funciones y por qué usar clases?

A un que a nivel de lenguajes una clase representa en realidad un archivo que encapsula variables y funciones, el concepto de clase y objeto va mas lejos de eso que comentaron en un mensaje anterior.
Pero no entrare en detalles, hay bastante lietratura al respecto en la red, bibliotecas y librerias.
Una clase representa una abstraccion de algo de la vida real, y en algunos libros siempre usan los ejemplo de manzanas, autos y demas por ser objetos tangibles y la idea de la clase es representar la abstraccion de todos los objetos que tienen las mismas propiedades, comportamiento y semantica semejante. con esta pequeña dificion la primera ventaja que tienes es que con clase (u objeto ) tiene un comportamiento y estado, que con solo funciones es un poco mas dificil de manejar. Como por ejemplo que pasaria si intentaras crear un modelo que impelmente los preocesos de una bodega? hay muchas cosas son objetos, tendrias montacargas, operadores, tarimas, racks, productos, si lo haces con funciones puede ser que algunas cosas sean mas complejas a la hora de llevar el modelo a la programacion, con los objetos tendrias una clase que puede representar a cada objeto de tu modelo, y los estados serian por ejemplo en el caso de un montcargas algo como , en anden, surtiendo, descargando etc.. Con objetos podrias generar instancias de cada cosas y cada objeto sabria que es y que comporatmiento debe de tener bajo ciertas condiciones, Algo que con funciones tal vez sea mas problematico hacer.
Posiblemente de toda la teoria el fundamento es lograr que la programacion mediante objetos sea lo mas cercana a la realidad.

¿Qué es lo práctico de las clases?

La organizacion de codigo, modelos y sistemas mas robustos, mas flexibles, puedes separar una aplicacion en objetos, paquetes, susbsystemas, y componentes por decir algo pero eso ya entra un poco en el campo de la arquitectura, decir que una parte de esos objetos y subsisteas pueden ser reutilizados de forma completa y parcial en mas de un proyecto con poco o ninguna cambio en el codigo, y esto es posible por la encapsulacion de datos, que te permite trabajar con un obejto sin saber nada de su implementacion, claro que algunas veces tienes que ver algo de codigo y probar para ver el comportamiento real del objeto en una aplicacion.
En resumen lo pracitco es que puedes reutilizar tus clases con lo cual ahorras tiempo ya que no tienes que hacer algo dos veces. Puedes separar tu aplicacion en objetos que tienen responsabilidades bien definidas y realizan una tarea bien definida y que mediante el uso de sus metodos o mensajes entre obejtos colaboran con otros para darte la funcionalidad que esperas en un sistema muy cercano a lo que pasa en el mundo real y con esto obetienes un veneficion que es reducir el acoplamiento en tus aplicaciones, con eso obtienes una mojor organizacion de tu codigo y bueno es menos doloroso hacer cambios.

¿Se puede hacer lo mismo con solo funciones?

Si, como todo en la vida hay mas de uan forma de hacer algo, la eleccion en la forma, es responsabilidad de cada quien.

Saludos.
  #9 (permalink)  
Antiguo 04/09/2005, 13:45
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 10 meses
Puntos: 2
Muchas gracias por tu respuesta y tu tiempo ;)

salu2,
__________________
php user ;)
  #10 (permalink)  
Antiguo 06/09/2005, 14:23
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Excelente explicación HerSAn.... muy de tu estilo.

Saludos
  #11 (permalink)  
Antiguo 12/09/2005, 20:45
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 2
mucha gracias jpinedo, un poco apresurada la respuesta, pero con tu comentario veo que pude explicarme bien.
__________________
Saludos!
Mty-NL..
  #12 (permalink)  
Antiguo 28/11/2005, 11:57
Avatar de El Menda  
Fecha de Ingreso: junio-2001
Ubicación: Jaén
Mensajes: 516
Antigüedad: 22 años, 10 meses
Puntos: 0
La POO como han dicho antes sirve simplemente para organizar bien tu código en bloques. No es lo mismo que tener todo desperdigado por ahi (funciones) que tener unas clases bien definidas, con sus constructores, destructores, etc. Esto será mucho mejor para el manejo de datos.
Otra ventaja es la de divide y vencerás. Si ves un problema grande como pequeños problemas independientes te será mucho más facil desarrollar tu web y poder reutilizar las mismas clases cuando las necesites.
Otra ventaja es que ante cualquier problema será mucho más facil localizar la clase y corregirla que tener que ir mirando funciones desperdigadas en varios programas.
Otra ventaja es la abstracción. La estructura de datos interna de la clase permanece oculta al programador que la va a usar, es decir, que tú creas tu clase, y una vez que la quieres usar a ti te da igual las variables y todo el código que haya dentro de esta. Tú solo sabes que la llamas pasando unos parámetros y que vas a obtener un cierto resultado. Se ocultan detalles innecesarios que sólo complicarían la vida al programador
__________________
"No hay mujer fea sino copa de menos"
  #13 (permalink)  
Antiguo 28/11/2005, 14:58
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 18 años, 10 meses
Puntos: 2
muchas gracias El Menda !
__________________
php user ;)
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 00:01.