Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/09/2005, 17:21
HerSAn
 
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.