Foros del Web » Programación para mayores de 30 ;) » Java »

[dudas]Conceptos de oop

Estas en el tema de [dudas]Conceptos de oop en el foro de Java en Foros del Web. Hola mi primer post espero no molestar mucho :P La verdad es que hace relativamente muy poco empece con java. empece con toda la parte ...
  #1 (permalink)  
Antiguo 28/06/2012, 09:29
 
Fecha de Ingreso: junio-2012
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 2
[dudas]Conceptos de oop

Hola mi primer post espero no molestar mucho :P

La verdad es que hace relativamente muy poco empece con java. empece con toda la parte de programacion estructurada y ahora recien entre al "mundo" de la programacion orientada a objetos.

tengo problema con 3 palabras, clases, metodos y javaBeans (o sea todo java XD) no me malinterpreten, no es que no haya leido, de hecho me paso por leer mucho de muchas fuentes, lo cual en mi caso fue contraproducente.

hasta ahora clases creo tener un concepto claro, lo voy a tener mas claro cuando vea la definicion de herencia para entender un poco mas la relacion entre 2 clases.

Los metodos los he usado, mucho, creo tenerlo claro.

Sin embargo en otro de los libros que estoy leyendo, metieron el concepto de javabeans, el cual me "confundio" a tal punto que no estoy seguro de entender las otras dos definiciones, a mi entender es una clase, con comportamientos similares a los de los metodos.

dicho esto, como introduccion me gustaria hacer 2 o 3 preguntas, no hace falta que se extiendan mucho, con que me den una idea por donde seguir estare mas que agradecido.

1. la definicion de JavaBeans habla de getters y setters, los metodos asignan o retornan un valor, hablan de lo mismo? setter es retornar y getter es asignar?

2. si son similares cual es la caracteristica mas importante que los hace diferente?
un javabean puede estar fuera de una clase y el metodo no?

3.si tienen un concepto mas "principiante" sobre estas 3 palabras, son bienvenidas, por lo menos para, cuando lea algun codigo, saber que es cada cosa.
por que quizas ni siquiera mi concepto de clase y metodo esten bien, recien estoy desayunandome la programacion orientada a objetos

uff escribi mucho, espero que tengan paciencia de leerlo y la amabilidad de responder, aunque sea una parte de esto, les estaria totalmente agradecido
  #2 (permalink)  
Antiguo 28/06/2012, 10:31
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: [dudas]Conceptos de oop

Buenas,

Creo que tienes un lio en la cabeza bastante importante.

Un javabean no es más que un objeto que se usa para encapsular otro objetos (esto se llama composición o agregación, dependiendo del tipo de dependencia entre los objetos).

La especificación de los JavaBean ha sido definida por Sun Microsystems y cumple una serie de convenciones. Puedes ver esto en la propia wikipedia: http://es.wikipedia.org/wiki/JavaBean

En definitiva, un JavaBean es un objeto (es una instancia de una clase) y se usa para crear componentes reutilizables.

Sobre los getters y setter, son exactamente lo que has dicho.

Espero no haberte confundido más y si tienes más dudas, aquí estamos.

Saludos.
  #3 (permalink)  
Antiguo 28/06/2012, 12:39
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: [dudas]Conceptos de oop

Una clase es como un plano para construir un auto.

Mira, una clase funciona como el plano de un objeto. En una clase declaras tus métodos, y tus variables de instancia (variables de la clase). Por ejemplo, podrías tener una clase empleado con las variables de instancia:

Código Java:
Ver original
  1. //Variables de instancia
  2.  
  3. public String nombre;
  4. public String apellido;
  5. public int edad;
  6. public double sueldoPorHora;
  7. public int horasTrabajadas;

Ahí tienes la información general de un empleado en específico, que ya vendría a ser un OBJETO, por ejemplo, tendrías el objeto empleado1 que sería Rosa Sanches de 33 años, etc etc y el objeto empleado2 que sería Luis Pérez de 27...

¿Sí me explico?

Al instanciar un objeto, es como si usaras un plano (la clase) y lo volvieras algo real. Pasas de tener un plano a tener un auto.

Un método es una parte de la clase-objeto que hace algo. Por ejemplo, podrías tener tu método calcularIngresoMensual() de la clase Empleado, que sería algo así:

Código Java:
Ver original
  1. public double calcularIngresoMensual()
  2. {
  3.    return (sueldoPorHoras * horasTrabajadas);
  4. }

Y bueno, llegando a los javaBeans, ahí aún no sabría decirte, aún no los manejo. Aún no te metas con ellos xP, te falta mucho.

Saludos, y espero que mi respuesta te haya servido.
  #4 (permalink)  
Antiguo 28/06/2012, 15:32
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 12 años, 10 meses
Puntos: 34
Respuesta: [dudas]Conceptos de oop

En java no existen los metodos/funciones "sueltos", todo metodo/funcion deve estar encapsulado dentro de una clase.
Las clases son representaciones de objetos/situaciones/acciones del mundo real por ejemplo puedes tener una clase: Auto o una clase: Gravedad.
Aunque la clase Auto puede cambiar segun su contexto, por ejemplo no vas a tener la misma representacion de Auto para un juego que para un autolavado.
En cuanto a la herencia es muy sencillo es una forma de simplificar el trabajo a la hora de trabajar con clases muy paresidas, por ejemplo un Auto y una Motocicleta tienen algo en comun y es que son Vehículos.
Entonces tendrias algo asi:
vehículo -> Auto
-> Motocicleta
de esta forma digamos que tienes un metodo lavar en una clase llamada AutoLavado:
Código:
public class AutoLavado {

    public void lavar(Vehículo vehículo){
        // cuerpo del metodo
    }
}
Si te fijas en el metodo no se hace referencia a un Auto o a una Motocicleta, se hace referencia a un Vehículo.
Por lo tanto tu puedes hacer esto:
Código:
AutoLavado autoLavado = new AutoLavado();

Auto auto = new Auto();
autoLavado.lavar(auto);

Motocicleta moto = new Motocicleta();
autoLavado.lavar(moto);
Los JavaBeans son simples Clases que siguen ciertas convenciones que puedes consultar en: http://es.wikipedia.org/wiki/JavaBean o en la documentacion de java.
  #5 (permalink)  
Antiguo 29/06/2012, 10:43
 
Fecha de Ingreso: junio-2012
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: [dudas]Conceptos de oop

Primero les agradezco muchísimo por la pronta respuesta, y la buena onda que han puesto, se agradece mucho.
Cita:
Iniciado por alexg88 Ver Mensaje
Un javabean no es más que un objeto que se usa para encapsular otro objetos (esto se llama composición o agregación, dependiendo del tipo de dependencia entre los objetos).
Lo de agregación y composición es lo que en la definición de este dice "setter" y "getter" no? creo entender, se pueden usar controles de accesos en la esctructura del javabean. O sea "public", "abstract" "private" y esas cosas.
Si digo que es una forma de manipular el acceso y el valor de estos objetos de forma un poco mas estructurada, estoy muy equivocado? :P
Cita:
Iniciado por reethok Ver Mensaje
Mira, una clase funciona como el plano de un objeto. En una clase declaras tus métodos, y tus variables de instancia (variables de la clase). Por ejemplo, podrías tener una clase empleado con las variables de instancia:
Te agradezco muchisimo, pensar que hay libros en los cuales 2 hojas son para explicar esto! A grandes rasgos, una clase contiene objetos, lo cual asumo que se refiere a un conjunto de variables, los metodos Trabajan sobre estos objetos para asignarle un comportamiento o representacion, es asi? creo que voy a seguir tu consejo sobre java beans. debo entender muchas cosas antes, acabo de ver que tambien habla de listeners. algo que por ahora mi cabeza no puede procesar.
Cita:
Iniciado por LuisChavezB Ver Mensaje
En java no existen los metodos/funciones "sueltos", todo metodo/funcion deve estar encapsulado dentro de una clase.
Muy bueno saberlo y gracias por responder, era la gran duda que tenia, ya que como la definicion de javabeans habla a grandes rasgos de que es una clase que...supuse que podia estar afuera de una clase. muchisimas gracias por la definicion de herencia, la voy a tener en cuenta, solo una duda, en tu codigo pusiste ("public class autolavado") deberia de haber un "extends"? o la herencia no necesariamente trata sobre la relacion de superclase y subclase.
  #6 (permalink)  
Antiguo 29/06/2012, 14:18
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 12 años, 10 meses
Puntos: 34
Respuesta: [dudas]Conceptos de oop

AutoLavado no hereda de ninguna clase las clases que heredan son:
Auto y Motocicleta que heredan de Vehículo
  #7 (permalink)  
Antiguo 29/06/2012, 15:20
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: [dudas]Conceptos de oop

Cita:
Te agradezco muchisimo, pensar que hay libros en los cuales 2 hojas son para explicar esto! A grandes rasgos, una clase contiene objetos, lo cual asumo que se refiere a un conjunto de variables, los metodos Trabajan sobre estos objetos para asignarle un comportamiento o representacion, es asi? creo que voy a seguir tu consejo sobre java beans. debo entender muchas cosas antes, acabo de ver que tambien habla de listeners. algo que por ahora mi cabeza no puede procesar.
No exactamente... una clase no contiene objetos. Una clase es un plano para construir un objeto, a partir de esa clase tu puedes crear infinidad de objetos.

Una pregunta, tú has usado Strings? (para explicarte con ello).

Saludos! :)

P.D. Sí, aún no te metas con listeners, eso se usa más que nada para crear interfaces gráficas, y antes de meterte en eso debes saber las bases.
  #8 (permalink)  
Antiguo 29/06/2012, 23:44
 
Fecha de Ingreso: junio-2012
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: [dudas]Conceptos de oop

Strings si vi.
El tema es que me meti de lleno (para empezar a aprender) a la parte de "programacion estructurada" de java, cuando empece a leer oop se abre una lista de conceptos y definiciones que no logre captar, mas que hasta ahora he hecho codigos largos y muchos, no tengo problema, pero todo lo hacia en una sola clase, los descomponia en metodos para poder tener el codigo mas claro y no perderme. hasta vi applets y las base de la parte grafica, pero como te digo, siempre en una clase con varios metodos.

ahora con el oop, gracias a ustedes,entendi que el metodo tiene la misma funcion que le daba anteriormente. pero con las clases es un tema, como crear otra clase lo tengo bien claro...lei todo sobre esto, se como poner controles de acceso y para que sirven, se que se pueden poner en otros archivos, incluso paquetes con el comando import. se casi todo, solo me falta una definicion que entienda jaja. para que sirve hacer otra clase.

supongamos que quiero hacer una...calculadora (suponete que sean los pasos exactos a seguir, es solo un ejemplo)

-creo variables para los numeros ingresados por el usuario
-creo variables el resultado
-creo otras variables para que el usuario ingrese la opcion.
-creo el menu -creo la """interfaz"""
-creo un metodo que segun la opcion que elija el usuario y los numeros ingresados haga el calculo correspondiente.
-muestro el resultado mediante otro metodo string, que devuelva "el resultado de la _____ es: _____

ponele que sea asi.
si quiero hacerlo en dos clases, con que "pasos" se podria hacer.?
cual es el nivel de interaccion que habria entre 2 clases haciendo esto?
  #9 (permalink)  
Antiguo 30/06/2012, 09:23
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: [dudas]Conceptos de oop

Buenas,

Creo que tienes cierta confusión en varios conceptos de la POO.

La agregación y la composición no tienen nada que ver con los getter y los setter directamente (aunque son usados para implementarla).

Te dejo un enlace donde explican varios conceptos de OOP: http://users.dcc.uchile.cl/~psalinas/uml/modelo.html

Pero lo mejor es que te cojas un libro donde te expliquen todos los conceptos de orientación a objetos antes de ponerte a programar en serio con Java.

Saludos.
  #10 (permalink)  
Antiguo 01/07/2012, 22:03
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años, 6 meses
Puntos: 69
Respuesta: [dudas]Conceptos de oop

De antemano disculpa el testamento que acabo de redactar pero espero y te ayude bro...

Una clase se especifica con la palabra class, pero que es?

Básicamente puedes verlo como un molde, una clase no es un objeto, pero para crear un objeto necesitas una clase, para crear un pastel necesitas un molde, entonces el molde es la clase y el objeto es el pastel... el molde le da el tamaño y la forma al pastel.... así pues una clase tiene atributos y funciones que cuando se cree un objeto a partir de esta clase (del molde) vas a tener los atributos y comportamientos del objeto en base al molde....

Como sabes a partir de un molde, puedes crear muchos pasteles, que aparentemente serían iguales pero sabemos que son distintos, en mi ejemplo pueden haber sido hechos en el mismo molde pero uno puede ser de chocolate o de lodo, o de tamales, o de accerrin, etc.... Esos atributos como tal los puedes definir tambien en la clase (en la vida real el molde no le puede dar sabor al pastel, pero en OOP si!)....

Ahora bien con los JavaBeans. Una clase puede ser un molde, pero cuando ese molde sirve para acceder objetos y sus propiedades (solo para eso) se dice que es un JavaBean, dicho de otro modo, un JavaBean es siempre una clase (que posteriormente se hará objeto) pero una clase NO siempre es un JavaBean....

Un JavaBean como habrás leido es una clase que cumple con lo siguiente:
Cita:
Iniciado por WikiPedia
Debe tener un constructor sin argumentos.
Sus propiedades deben ser accesibles mediante métodos get y set que siguen una convención de nomenclatura estándar.
Debe ser serializable
Asi pues, te dare un ejemplo: Vamos a crear un objeto, vamos a crear una persona (el ejemplo más choteado lo se), para eso, para crear una persona, necesitamos un molde (claro en la vida real no es asi jaja, es a modo de ejemplo)...

Entonces vamos a ello, que propiedades debe tener el molde para poder hacer personas? bueno si pensamos un poco podemos vernos a nosotros mismos, tenemos una Edad, un Nombre, un color de Piel, color de Ojos, Sexo (Genero), esos serían nuestros atributos, ahora bién, cual sería nuestro comportamiento? bueno una persona que puede hacer? caminar, hablar, etc..

Vamos a crear el molde, que como dije es una clase:
Código Javascript:
Ver original
  1. public class Persona {
  2.     //definimos los atributos
  3.     private String nombre;
  4.     private int edad;
  5.     private String genero;
  6.  
  7.     //tengamso un cosntructor para crear personas
  8.     public Persona(String nombre, int edad, String genero) {
  9.         this.nombre = nombre;
  10.         this.edad = edad;
  11.         this.genero = genero;
  12.         //espero y no te confundas con el this (muchos lo hacen)
  13.         //si no me preguntas y te aclaro.
  14.     }
  15.    
  16.     //definimos las funciones o comportamiento
  17.     //pueden ser privadas pero solo si se llamaran desde el mismo molde cosa que no queremos, por que quebramos el concepto
  18.     public String presentarse() {
  19.         return "Hola majo!! yo soy " + nombre + " y tu?";
  20.     }
  21.    
  22.     public void despedirse(Persona persona) {
  23.         System.out.println("Hasta luego " + persona.getNombre() + ", te cuidas!!");
  24.     }
  25.    
  26.     //Ahora definimos las propiedades de un JavaBean
  27.     //eso no significa que esto sea un JavaBean por que no cumple con las 3 cosas!
  28.     public String getNombre() {
  29.         return nombre;
  30.     }
  31.    
  32.     //Como no es usual que no una persona se cambie de nombre, no pondremos un setter
  33.     //pero si lo necesitaramos seria asi:
  34.     /*
  35.     public void setNombre(String nombre) {
  36.         this.nombre = nombre;
  37.     }*/
  38.    
  39.     //asi mismo podemos tener getters para edad y sexo!! pero por prisa no los haremos 
  40. }

Pues bueno, hasta alli muy bién tenemos un Molde para hacer personas, ojo esa clase no es una persona, es solo un molde, ahora a partir de ese molde creemos a dos personas, para ejemplificar...

Sin embargo aqui entramos en otra de tus dudas (o eso creo) este molde es una clase por lo tanto sera un molde y nada más, no hara operaciones, no pedira datos, no imprimira nada (bueno en mi ejemplo si pero no se debe hacer), solo es un molde... asi que hagamos otra clase para crear a nuestras personas, que tal la clase donde esta el metodo principal? suena bien...

Código Javascript:
Ver original
  1. public class CreaPersonas {
  2.     public static void main(String[] params) {
  3.         //Ho si tenemos un molde para hacer personas!!
  4.         //como el molde es publico podemos acceder a el!!
  5.        
  6.         //Creamos a CR7
  7.         Persona persona1 = new Persona("Cristiano Ronaldo", 26, "Masculino");
  8.        
  9.         //Creamos a Messi por ejemplo
  10.         Persona persona2 = new Persona("Lionel Messi", 24, "Femenino"); //jejeje no me cae bien
  11.        
  12.         //Ok ya tengo mis dos personas, por que solo esas son las que quiero....por ahora
  13.        
  14.         /*
  15.         Como tanto Messi y Ronaldo son personas, y fueron sacadas de mi molde de personas
  16.         entonces tienen los atributos y funciones que defini en mi molde, y las puedo usar*/
  17.        
  18.         //Hacemos que ronaldo se presente
  19.         //como la funcion nos devuelve un string vamos a imprimirla directo
  20.         System.out.println(persona1.presentarse());
  21.        
  22.         //lo que obtenemos es:
  23.         //Hola majo!! yo soy Cristiano Ronaldo y tu?
  24.        
  25.         //Ahora como messi lo veo medio subido en su nube va a cortar a ronaldo, nos despediremos
  26.         //El metodo no nos regresa cadena alla imprime asi que solo lo llamamos (que no debe de ser asi, es mejor que devuelva la string)
  27.        
  28.         //Sin embargo para que se despida, hay que decirle de que persona se va a despedir,
  29.         //el metodo recibia a una persona entonces le diremos que se despida de ronaldo
  30.        
  31.         persona2.despedirse(persona1);
  32.        
  33.         //La salida será:
  34.         //Hasta luego Cristiano Ronaldo, te cuidas!!       
  35.     }
  36. }

Ok, todo muy bien, pero en ese ejemplo no existe un JavaBean (100% Frijol), para que son!! para que!!!....bueno los JavaBeans son muy usados (por no decir obligados) en muchas aplicaciones bién diseñadas... básicamente es una clase, (un molde) con la cual hacemos un objeto o muchos objetos (usualmente uno) para acceder a otros objetos, es muy usado en el MVC (Modelo Vista Controlador) donde la presentación de tu aplicación, esta separada de la lógica y operatividad de la misma y están comunicadas precisamente por el JavaBean, sirven para eso, separar la lógica o las operaciones de lo visual, creando una aplicación mejor diseñada, de fácil mantenimiento y pues escalable por así decirlo....

Como lo comente nuestro molde para hacer personas no es en su totalidad un bean, por que no? por que su constructor recibe los datos de la persona que vamos a crear, para hacer un Bean, eso hay que hacerlo mediante setters y getters, y para no gastar mi teclado, copio y pego el ejemplo de wikipedia y lo adaptamos a nuestro ejemplo:

Código Javascript:
Ver original
  1. public class MrBean implements java.io.Serializable {
  2.  
  3.    private String nombre;
  4.    private int edad;
  5.    private String sexo;
  6.  
  7.    public PersonaBean() {
  8.       // Constructor sin argumentos
  9.    }
  10.    
  11.    //los setters
  12.    public void setNombre(String nombre) {
  13.      this.nombre = nombre;
  14.    }
  15.  
  16.    public void setEdad(int edad) {
  17.      this.edad = edad;
  18.    }
  19.    
  20.    public void setSexo(String sexo) {
  21.     this.sexo = sexo;
  22.    }
  23.    
  24.    //ahora los getters
  25.    public String getNombre() {
  26.     return nombre;
  27.    }
  28.    
  29.    public int getEdad() {
  30.     return edad;
  31.    }
  32.    
  33.    public String getSexo() {
  34.     return sexo;
  35.    }
  36.  }

Ahora ese es nuestro JavaBean de persona....

Ahora ami me surge una duda y espero y los maestros nos la respondan... un bean es para acceder a los atributos de un objeto sin embargo este bean de persona de wikipedia, crea su objeto apartir de ese bean... a lo que voy es existe un JavaBean por cada objeto o es un solo JavaBean para varios objetos de un mismo tipo?.....

En fin, espero que mi respuesta te haya servido y disculpa por lo extenso pero me llego la inspiración... y disculpa si algun ejemplo tiene errores de ejecución o compilación, no los comprobe ya que no tengo el JDK en esta maquina =/

Saludos!
__________________
De nada, hay te encargo +1...

Última edición por zero0097; 01/07/2012 a las 22:08
  #11 (permalink)  
Antiguo 03/07/2012, 00:14
 
Fecha de Ingreso: junio-2012
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: [dudas]Conceptos de oop

pero por favor, de hecho yo me tengo que disculpar por haberte hecho escribir tanto, te agradezco muchisimo la buena onda y predisposición que tuviste al hacerlo me sirvio mucho.

no me voy a extender mucho por que realmente no me quedan muchas dudas,por lo menos en la parte conceptual o la definicion,

pero....una duda muy pequeña. el ejemplo que me diste, supongamos que quiero hacer "el molde de un perro (XD)" deberia hacer otra clase, o tambien podria meterlo en la misma clase que persona, cambiar el nombre a algo como "seresvivos" y asignarle los atributos. de modo que haya 2 objetos de diferente tipo en una sola clase.
Es mas, si a tu ejemplo (sin el molde del perro) pongo el metodo main en la clase "persona" y modifico un poco el codigo, supongo que lo ejecutaria bien.
probablemente despues de tus ejemplos, no haria lo que te estoy planteando (por que de hecho es muy util y simple hacerlo asi),pero...se podria decir que gran parte de la clase es un tema de legibilidad? En algun momento de mi aprendizaje me voy a encontrar con algo que me obligue a usar este procedimiento?
  #12 (permalink)  
Antiguo 03/07/2012, 09:46
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años, 6 meses
Puntos: 69
Respuesta: [dudas]Conceptos de oop

Bueno, claro que no hay que confundir una clase con un archivo, puedes tener muchas clases dentro de un ".java" y también puedes tener una o mas clases dentro de otra clase (Inner Classes) si suponemos que cada persona tiene un perro, la puedes "embeber?" dentro de persona, y la clase Mascota puede definir un perro, ejemplo:

Código Javascript:
Ver original
  1. public class Persona {
  2.     //definimos los atributos
  3.     private String nombre;
  4.     private int edad;
  5.     private String genero;
  6.     private Mascota mascota;
  7.  
  8.     //tengamso un cosntructor para crear personas
  9.     public Persona(String nombre, int edad, String genero, String nombreMascota, int edadMascota) {
  10.         this.nombre = nombre;
  11.         this.edad = edad;
  12.         this.genero = genero;
  13.         this.mascota = new Mascota(nombreMascota, edadMascota);
  14.     }
  15.    
  16.     //clase de la mascota (dentro de clase persona que a mi ver no debe ser asi ?)
  17.     class Mascota {
  18.         private String tipo;
  19.         private int edad;
  20.        
  21.         public Mascota(String tipo, int edad) {
  22.             this.tipo = tipo;
  23.             this.edad = edad;
  24.         }
  25.        
  26.         public String getTipo() {
  27.             return tipo;
  28.         }
  29.        
  30.         public int getEdad() {
  31.             return edad;
  32.         }
  33.     }
  34.    
  35.     public String presentarse() {
  36.         return "Hola majo!! yo soy " + nombre + ", mi mascota es un " + mascota.getTipo() + ". ";
  37.     }
  38.    
  39.     public void despedirse(Persona persona) {
  40.         System.out.println("Hasta luego " + persona.getNombre() + ", te cuidas!!, me voy con mi " + mascota.getTipo() + ". ");
  41.     }
  42.    
  43.     public String getNombre() {
  44.         return nombre;
  45.     }
  46. }

y así podemos obtener sus atributos:
Código Javascript:
Ver original
  1. public class Main {
  2.     public static void main(String[] params) {
  3.         //Ho si tenemos un molde para hacer personas!!
  4.         //como el molde es publico podemos acceder a el!!
  5.        
  6.         //Creamos a CR7
  7.         Persona persona1 = new Persona("Cristiano Ronaldo", 26, "Masculino", "Perro", 2);
  8.        
  9.         //Creamos a Messi por ejemplo
  10.         Persona persona2 = new Persona("Lionel Messi", 24, "Femenino", "Gato", 5); //jejeje no me cae bien
  11.        
  12.        
  13.         System.out.println(persona1.presentarse());
  14.        
  15.         //La salida es
  16.         //Hola majo!! yo soy Cristiano Ronaldo, mi mascota es un Perro.
  17.                        
  18.         persona2.despedirse(persona1);
  19.        
  20.         //La salida será:
  21.         //Hasta luego Cristiano Ronaldo, te cuidas!!, me voy con mi Gato.  
  22.     }
  23. }

Sin embargo en este ejemplo, creo que la abstracción no es adecuada ya que hay personas que no van a tener mascotas, por lo tanto la clase mascota debería estar fuera de la clase persona, y ambas pueden heredar de otra clase como tu dices de "Seres vivos"...

Cuando yo era novicio creía que hacer archivos separados era peor que tenerlo en uno solo, sin embargo con el tiempo y el desarrollo de aplicaciones te organizas mejor y tienes todo mejor estructurado. En mi opinión cada clase que tengo que hacer la hago en un archivo, eso si, a veces la puedo hacer en el mismo archivo lo que si casi nunca he usado es lo que acabamos de hacer de meter una clase dentro de otra, sin embargo al abstraer un objeto de la vida real, un sistema se compone de subsistemas, por lo tanto es totalmente válido el uso de "Inner Classes" con tal de lograr una buena abstracción de nuestro "objeto real"...
__________________
De nada, hay te encargo +1...
  #13 (permalink)  
Antiguo 03/07/2012, 11:04
 
Fecha de Ingreso: junio-2012
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: [dudas]Conceptos de oop

claro, yo estoy pasando por eso, de creer que hacer todo en una clase es mejor, y si me veo obligado a hacer 2 clases por legibilidad, hacer varias clases en un archivo.
veo que de la manera que lo planteas es mucho mas simple y util, asi que mejor pensarlo como una gran herramienta, que como un problema.

todo tipo de dudas resueltas, muchisimas gracias por la paciencia a todos.
  #14 (permalink)  
Antiguo 04/07/2012, 01:41
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 22 años
Puntos: 37
Respuesta: [dudas]Conceptos de oop

Sobre "existe un JavaBean por cada objeto o es un solo JavaBean para varios objetos de un mismo tipo?....."

A mi entender es un javabean o bean por cada objeto, claro, que bien puedes crear un arraylist u objeto collection dentro de un bean, y entonces con un solo java bean puedes almacenar varios "registros".

yo recuerdo que usaba mucho los javabeans para trasladar la informacion desde un SERVLET hacia un JSP, de esa manera:
el JSP se hace independiente de la base de datos.

Algo mas: los "getter" y "setter" a mi parecer son mas por normalizacion en tu codificacion, asi no necesariamente das a conocer el nombre de la variable dentro de tu base de datos, sino unicamente la propiedad "GET" o SET y ya con eso garantizas que quien vaya a usar esa clase modificara apropiadamente el valor, mira que, si colocas la variable al nivel de clase, simplemente puedes recuperarla siempre preguntando por la propiedad clase (objeto instanciado).variable y tambien colocarle un valor, y, en efecto, te evitas tener q definir todos los "get" y "set".

Por otra parte, si no mal recuerdo, al menos en WebSphere y supongo que en Eclipse tambien creas tus propiedades (edad, sexo, nombre) y con una opcion del entorno de desarrollo automaticamente creas todos los los "get" y "set" para cada propiedad

Etiquetas: clase, oop, programa
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 12:32.