Foro sobre Java SE > Entendiendo la programación orientada a objetos
Hola, bueno la verdad que no conozco VFP, pero intentare a ver si puedo ayudarte a aclarar un poco las ideas en cuanto a java, y las clases. Bueno, por lo poco que leí sobre VFP, parece ser un lenguaje mixto, lo que permite tanto trabajar de una forma procedural(como tu haces, creas funciones, importas y realizas llamadas a ellas)
o
POO(orientado a objetos) donde defines tus clases y creas objetos a través de ellas(supongo que esta parte de VFP no la trabajaste mucho).
A diferencia de esto anterior, java es un lenguaje totalmente(no cierto del todo) orientado a objetos. Es mas si leíste algo de teoría, siempre suelen empezar con una frase parecida a... "En java todo es un objeto" o algo así.
Como consecuencia de esta frase, en java, siempre tendrás que trabajar con objetos, y bueno los objetos se crean a través de lo que podríamos llamar un molde(Clase). El porque esto es así... Bueno eso supongo que fue una decisión de los creadores, la verdad que no se ahora mismo las razones, pero así fue.
Que ventajas tiene trabajar con objetos en lugar de un lenguaje "procedural", bueno una de las ventajas es la abstracción, los creadores supongo que buscaban una forma de modelar la realidad... y que es mejor para modelar la realidad que un objeto. Nosotros como seres humanos vivimos rodeados de objetos por todas partes(una persona, un coche, una casa, un cable eléctrico, una comunicación,...) y por otro lado cada objeto, tiene unas características(atributos) y y son capaces de realizar una serie de acciones(métodos). Entonces los creadores de java cuando comenzaron supongo que se fijarían en que esta forma de representar los elementos era la mas optima y por esto, supongo que crearon java POO.
-Bueno, pues como comente, una de las ventajas de ser POO es el nivel de abstracción que requiere el programador para modelar la realidad que requiera o le soliciten.
-Por otro lado, pienso que la POO es mucho mas ordenada que la programación procedural, ya que si necesitas modificar algun rasgo de un objeto, solo tendrías que ir a su clase y realizar las modificaciones pertinentes, mientras que el lenguaje procedural debes acordarte en que archivo guardaste tal función o lo que sea para modificarlo.
-Otra de las cosas de la POO es que cada clase es un molde para crear objetos, así por ejemplo, si en tu aplicación necesitas trabajar con objetos de tipo persona, tu crearías la clase persona y después a través de ella, pues puedes crear 1, 2, 30000000000 de objetos, cada uno de esos objetos que crearas tendría por ejemplo su nombre, su apellido,.... Y ademas cada uno de esas personas podría realizar una serie de acciones, como andar, correr, ... Así que resumiendo, al crear una clase creas una plantilla, y después con esa plantilla creas objetos(todos los que quieras(dependiendo de la programación impuesta)).
-Otra ventaja es la herencia, igual que las personas heredamos cosas unas de otras, las clases pueden heredar unas de otras. Así imaginemos de nuevo, que estamos realizando una aplicación en la que por lo que sea tenemos que tratar con Personas que son policías, y personas que son bomberos, si usamos la lógica, tanto el policía, como el bombero son personas . Con lo cual en nuestra aplicación, podríamos crear la clase Persona, y aparte crearíamos la clase Policia y la clase Bombero, ambas heredarían de la clase persona, y en la clase bombero y policía solo tendríamos que poner las características concretas del policía y el bombero. Ahorrandonos tener que escribir las propiedades comunes dos veces.
Y bueno hay muchas mas razones que con el tiempo iras viendo, quizás ahora te cueste pero te recomiendo seguir, estudiar algo de teoría sobre POO, y practicar, mucho practicar.
Por otro lado, todo lo que he comentado aquí es mi opinión en cuanto al tema de la historia de porque POO en java, por si alguien ve algo que no es así o lo que sea me corrija y así aprendamos todos ;)
Y nada solo son algunas de las ventajas, como te comento, lee algo de teoría sobre POO y podrás ver mas. Bueno un saludo.
Es normal que te pase eso cuando vienes de progración estructurada y pasa a programacion orienda a objetos(POO). Todo te parece más complicado y dice para hacer lo mismo que hacía antes tengo que hacer varios archivos y crear instancias de ellos y llamarlos.
Pues esa es la clave piensa para un programa muy pequeño puedes tener razón pero para programas grandes la POO es mucho mejor porque se permite aplicar herencia, patrones de diseño que te permiten hacer el código de una manera coherente y elegante.
Un programador debe de pensar en su código a futuro, cunado yo termine este código se usará en producción un tiempo y en un futuro necesitará modificaciones y mejoras. Puede que la persona que lo haga no seas tú, ya que tu estarás en otros proyectos o habrás abandonado la compañía para ir a un sitio mejor.
En este caso para POO es mucho más intuitiva organizando todo en pequeñas clases con sentido, clase persona, la clase cuenta, la clase logicaNegocio (que usa las dos anteriores) en el fondo objectos Java.
Te pongo ejemplo básico para que lo entiendas, pero tendrás que ir buscando tutoriales tu mismo.
http://www.adrformacion.com/cursos/java/leccion1/tutorial4.html#4_0
Si quieres ser buen programador este es el camino.
Buenas tardes.
Estoy estudiando Java y ya sé hacer varias cosillas, pero hay algo que no entiendo muy bien.
Yo vengo de programar en FoxPro y en este lenguaje puedes guardar en un archivo varios procedimientos y funciones que una vez importado en tu programa puedes utilizar. Esto mismo hace Java pero creando clases, y lo veo más complejo ya que para acceder a una función, por ejemplo, Suma(), tienes que crear un objeto y luego hacer la llamada a no ser que la crees Static y la llames directamente con el nombre de la clase sin tener que instanciarla antes.
Yo veo más fácil y cómodo el importar uno o varios archivos y luego llamar a las funciones solo por su nombre sin tener que instanciar en cada clase o anteponer el nombre de la clase.
Por eso pido a gente experta en Java, que hay de bueno en esto de utilizar clases, ya que de la otra forma también puedes tocar una función y no tocar nada más, etc...
No entiendo muy bien esto de utilizar clases para todo, por eso pido ayuda y de esta forma creo que podré sacar mayor provecho a Java.
Un saludo.