Funciones VS Clases (PHP)

LR

Creo que el titulo del post lo dice todo..

Que veis mejor? Estructurar una web y solo usar funciones? O unir dichas funciones en clases?

Es una duda que he tenido rondando por la cabeza desde que empece a ver la POO.

Fyn4r

Lo de "unir funciones en clases" no lo entiendo.

En todo caso, dependiendo de que quieras hacer te vendrá mejor una cosa u otra.

BLZKZ

las funciones y las clases no se pueden comparar, porque su funcionalidad y finalidad son totalmente distintas asi que es un tanto absurdo el hilo :S

Hasta que no cambies la manera de pensar con POO viniendo de estructurada, no encontraras diferencias, solo te queda seguir estudiando oo xD

LR

Sinceramente, no me he metido en la POO, solo he visto asi un poco por encima como funciona con ejemplos sencillos para saber el funcionamiento.

Y en esos ejemplos, la verdad es que no veia ninguna diferencia entre usar varias funciones o usar una clase :S

Alguno podeis esbozarme asi a grandes rasgos las principales diferencias entre una forma de programacion y la otra?

Thx

erdanblo

http://www.google.es/search?source=ig&hl=es&rlz=&=&q=programacion+estructurada+vs+programacion+orientada+a+objetos&aq=2&aqi=g10&aql=&oq=programacion+estructurada+&gs_rfai=

BLZKZ

#4 la mayor ventaja de la poo es que puedes "delegar" (para mi), ademas de la facilidad en la reutilización de código y el encapsulamiento.
Ejemplo (pseudocodigo chustero)

clase clase3 {

público:
constructora;
destructora;
// metodos de la clase

mostrar() {
   atributo1->mostrar();
   atributo2->mostrar();
}

privado:
clase1 objeto1;
clase2 objeto2;

};

suponiendo que en clase1 y clase2 tienes el método mostrar, al hacer mostrar de un objeto de la clase3, estas delegando en los metodos de las otras clases.

Es un ejemplo tonto xD, y por simplificar con poo automatizas, puedes reutilizar codigo muy facilmente (con herencia) y puedes hacer tads muy majos utilizando lo que ya he dicho que simplifican su programación, ademas de que favorece la encapsulación de código.

NeB1

#6 pues para mí la mayor ventaja es poder encapsular funciones y variables en un solo objeto xD sinos tendrías que hacer muchas funciones y decir 'para usarlas teneis que declarar estas variables, que además tienen que ser de este tipo...'

BLZKZ

#7 claro que es una gran ventaja xD, pero para mi la herencia y el poder hacer con los atributos (lo que tu dices de las variables) lo que comento en #6 es la magia. Claro está que los metodos mostrar no son los más practicos para "delegar" pero es el ejemplo mas fácil de ver. Lo que le falta a php (y a java) es la herencia multiple, eso ya es la leche en vinagre xD

dagavi

Teniendo en cuenta que dudas de que es mejor, es obvio que has trabajado poco o nada con POO y al principio, al menos a mi también me sale, sale esa duda.

Ya no es tanto la duda, si no la "utilidad" puesto que al principio da la impresión que solo es un cambio de sintaxis: Lo que antes lo hacías con "push(pila, elemento)" (siendo "pila" un struct de toda la vida), se puede hacer "más bonito" con "pila.push(elemento)", dándote el mismo resultado.

Sin embargo con el paso del tiempo ya te vas haciendo a utilizarlo, haciendo que realmente "el sistema sea un conjunto de objetos que van interaccionando entre si" y aprovechando su potencial con cosas como la herencia y el polimorfismo (también dependerá del proyecto que se use o no).

BLZKZ

#9 el tema es que si solo ha programado en php no hay structs xD asi que ni eso jeje

LR

como bien dice #10, solo he programado en php xD.

Hasta ahora no he tenido necesidad real de meterme con la POO, asi que solo vi un poco como usar las clases y poco mas. Supongo que en otros lenguajes si tendran un peso importante dentro de la aplicacion, pero ahora mismo, no le veo una gran utilidad en php, ya que todo lo puedo hacer con programacion estructurada.

De ahi la pregunta del post

D

solo por la herencia y la reutilizacion de codigo, ya merecen la pena las clases

BLZKZ

#11 realmente hacer aplicaciones web con poo en php bajo mi corta experiencia es muy recomendable para proyectos gordos, el codigo queda limpio, es reutilizable y es quizas mas escueto.

Yo ahora mismo estoy empezando a hacer cosas con clases en php (ya pondre dudas por el foro xD) puesto que estoy experimentando, haciendo un cms para consumo personal :P en plan sistema de noticias y foro chustero y me es de bastante ayuda xD

Por cierto alguien sabe ua guía o algo asi donde te hagan recomendaciones a la hora de estructurar la programacion de un blog o similares¿?

LR

#13 precisamente ese es el problema, que no he tenido que hacer nada gordo xD

La unica experiencia que tengo en php es la de haber estado haciendo las practicas de empresa programando todo el dia, y como es logico, sin hacer grandes cosas, ya que eran eso, practicas.

Ademas de eso, lo unico que tengo es el proyecto integrado, que me ha servido mas que nada para tener algo de base en php, ya que como es sabido por todos, en CFGM no te dan apenas nada xD.

Mi intencion era precisamente hacer lo que tu estas haciendo, intentar hacerme mi propio cms para ir ganando soltura y demas, aunque no se si sera viable o no xD

NeB1

#13 estamos haciendo lo mismo xD

PiradoIV

Es muy muy muy recomendable que empecéis a acostumbraros a crear clases de objetos y reutilizarlas; es comodísimo, te vas a ahorrar montón de tiempo a nada que te haga alguna clase que ya tengas hecha, vas a localizar errores más rápido.

Además, es mejor saber a hacer algo antes de que te toque hacerlo, que aprender una vez te llegue ese proyecto gordo, si no... vas a sufrir =)

LR

Eso es lo que estoy intentando, el problema es el no verle una utilidad "real" a las clases, pero bueno, sera cuestion de ir usandolas y viendo poco a poco su utilidad.

El problema es que ahora mismo estoy haciendo "proyectos" pequeños, y creo que estoy perdiendo mas tiempo entre aprender a usar las clases y demas que en hacerlo todo tal y como lo hacia antes con funciones a pelo.

BLZKZ

#17 aprender algo no es rápido, además que cambiar la filosofía para programar no es fácil. Piensas que no es útil porque sigues programando como si fuera estructurada xD

Como me decían, o cambias el chip o nunca entenderás por qué programar así, y nunca terminaras de hacerlo bien

NeB1

#17 lo importante es que tienes voluntad de aprenderlo pese a que no entiendes su utilidad, lo cual es muy importante!

Cuando te habitues a usar clases, y veas que la cantidad de código que reutilizas es enorme aparte de muchas otras ventajas, volverás a ver códigos tuyos puramente estructurados y basados en programación funcional y dirás "COMO COÑO PODÍA HACER ESTA MIERDA".

true story

GamA

Exactamente, la programación estructurada estaba bien hace 30 años (porque no había otra) y aunque la POO cueste entenderla al principio es mejor utilizarla normalmente.

De todas formas hay que decir que en PHP la POO no es tan potente como en Java o C++, ya que los objetos son persistentes siempre, en PHP tienes la dificultad de que no existe una conexión continua y existen decenas, centenares o miles de usuarios a la vez. Si sigues sin ver la POO te aconsejaría echarle un vistazo a Java, que para empezar es bastante más sencillo que C++ y quizás así entiendas el uso de la POO cuando manejes arrays de objetos con herencias, etcétera, en función de lo que introduzcas por teclado. En PHP ya te digo que quizás no es el mejor lenguaje para aprender POO debido a que la conexión se abre, se crean los objetos y muere, es distinto.

Usuarios habituales

  • NeB1
  • BLZKZ
  • LR
  • PiradoIV
  • dagavi
  • erdanblo
  • Fyn4r