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

¿Que pretenden enseñarme con esto?

Estas en el tema de ¿Que pretenden enseñarme con esto? en el foro de Java en Foros del Web. Saludos, estoy empezando a tocar el tema de crear objetos, el caso es que he copiado un ejercicio (debajo) el cual tiene muchas líneas de ...
  #1 (permalink)  
Antiguo 08/11/2011, 21:29
 
Fecha de Ingreso: marzo-2011
Ubicación: Murcia
Mensajes: 12
Antigüedad: 13 años, 1 mes
Puntos: 1
Pregunta ¿Que pretenden enseñarme con esto?

Saludos, estoy empezando a tocar el tema de crear objetos, el caso es que he copiado un ejercicio (debajo) el cual tiene muchas líneas de código. Imagino que el hecho de crear un objeto tendrá más juego, pero lo que he hecho se podría haber resuelto en una sola línea. ¿Que pretenden enseñarme?, ¿hasta donde da juego la creación de objetos y su utilidad?, Soy consciente que java es todo orientado a Objetos, pero no acabo de entender este ejercicio. Gracias


package coche;

public class Coche {

private final String modelo;
private final String matricula;
private final String color;
private final Cliente cliente;

public Coche(final String modelo, final String matricula, final String color, final String nombre, final String apellidos) {
this.modelo = modelo;
this.matricula = matricula;
this.color = color;
this.cliente = new Cliente(nombre, apellidos);
}

public String getCliente() {
return cliente.datosCliente();
}

public String getDatosCoche() {
return modelo + color + matricula;
}

private static class Cliente {

private final String nombre;
private final String apellidos;

Cliente(final String nombre, final String apellidos) {
this.nombre = nombre;
this.apellidos = apellidos;
}

public String datosCliente() {
return nombre + apellidos;
}
}

public static void main(String[] args) {
Coche coche = new Coche("Renault ", "1400BWN ", "Blanco ", "Pepe ", "García Muñoz ");
System.out.println(" Datos del coche " + coche.getDatosCoche());
System.out.println(" Datos del cliente " + coche.getCliente());
}
}
  #2 (permalink)  
Antiguo 08/11/2011, 22:11
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: ¿Que pretenden enseñarme con esto?

Hola,

Cita:
Iniciado por hugodepino Ver Mensaje
... Imagino que el hecho de crear un objeto tendrá más juego, ...
Pues básicamente el código que mostraste es la programación orientada a objetos, por supuesto que te faltan muchos conceptos, como herencia, polimorfismo, abstracción, interfaces, etc. Pero en Java a los objetos que mostraste se le llaman POJO's y son muy usados en general.

Cita:
Iniciado por hugodepino Ver Mensaje
... pero lo que he hecho se podría haber resuelto en una sola línea. ...
A simple vista posiblemente sí, en este ejemplo en específico; pero no obtendrías las ventajas a largo plazo que ofrece este tipo de estructuras.

Cita:
Iniciado por hugodepino Ver Mensaje
... ¿Que pretenden enseñarme?...
A pensar de forma abstracta para poder abstraer un concepto y plasmarlo en una clase que puede ser reutilizada y extendida.

Cita:
Iniciado por hugodepino Ver Mensaje
... ¿hasta donde da juego la creación de objetos y su utilidad?, Soy consciente que java es todo orientado a Objetos, pero no acabo de entender este ejercicio. ...
Sin ser específico en el lenguaje Java, sino cualquier lenguaje de programación que esté orientado a objetos, podría decir que es el concepto más útil que se haya inventado y que revolucionó la programación de computadoras hace muchos años.

El único problema es aprenderlo a usar correctamente, algunas personas les parece mas complicada la programación orientada a objetos porque no logran abstraer los conceptos y usan los lenguajes como se hacía con Pascal, Basic, Lenguaje C u otros.

Veamos ejemplos reales, creaste una clase de tipo Coche, está puede ser extendida para ser tipo de Camión, puede comunicarse con otras clases como Estacionamiento, puede llevar un control interno de Gasolina, que es otra clase que puede ser Gas o Diesel. Eso en la vida real se traduce en accesos a bases de datos, comunicaciones, servicios, etc.

Tratar de realizar lo mismo sin programación orientada a objetos es posible, pero mucho más complicado y no es extensible osea no crece fácilmente.

Podría dar muchos mas ejemplos pero creo que cuando vayas adentrando en el mundo de la programación orientada a objetos iras viendo las ventajas del mismo.

Saludos,
  #3 (permalink)  
Antiguo 10/11/2011, 07:50
Avatar de afrika026  
Fecha de Ingreso: junio-2011
Mensajes: 85
Antigüedad: 12 años, 10 meses
Puntos: 19
Respuesta: ¿Que pretenden enseñarme con esto?

lo que te pretenden enseñar es la programacion mediante objetos.
Según el código que mostrás te paso a explicar brevemente:

En lineas generales estas creando una clase Coche la cual esta compuesta por
metodos y propiedades.
Estas definiendo como variables privadas: modelo, matricula, color y cliente.
Cliente es una clase ya existente que tiene sus metodos, por lo tanto mas adelante
vas a instanciar esta clase.

public Coche(final String modelo, final String matricula, final String color, final String nombre, final String apellidos) {
this.modelo = modelo;
this.matricula = matricula;
this.color = color;
this.cliente =new Cliente (nombre, apellidos);
}
Este es el constructor de la clase, los datos que ingreses en los parametros como ser matricula, color nombre y apellido, seran almacenados en las variables correspondientes.
Como dato importante es la linea this.cliente = new Cliente (nombre, apellidos);
Esta linea esta creando un objeto cliente utilizando el constructor de la clase cliente ya existente seteandola con nombre y apellidos, estas variables son almacenadas en el objeto cliente para su posterior utilizacion.

-----------------
public String getCliente() {
return cliente.datosCliente();
}

Esta funcion perteneciente a la clase cliente, devuelve los datos como nombre y apellido del cliente previamente almacenados por el constructor Coche.

------------------------
public String getDatosCoche() {
return modelo + color + matricula;
}

Retorna los datos del coche, modelo, color y matricula previamente almacenados por el constructor Coche.

----------------------
Luego se crea la clase Clientes, la cual va a ser instanciada por el constructor de la clase coche como vimos anteriormente.

----------------------
finalmente en el main del programa, vemos lo siguiente:

Coche coche = new Coche("Renault ", "1400BWN ", "Blanco ", "Pepe ", "García
Muñoz ");
Aqui creando un objeto coche invocando al constructor de la clase Coche.

System.out.println(" Datos del coche " + coche.getDatosCoche());
Aquie estas imprimiendo desde el objeto coche creado anteriormente los datos
del coche.

System.out.println(" Datos del cliente " + coche.getCliente());
Aquie estas imprimiendo desde el objeto coche creado anteriormente los datos
del cliente. Acordate que el objeto cliente fue creado desde el constructor Coche.

En resumen, lo que te estan enseñando es como se crea una clase, como se instancia una clase, como esta compuesta una clase con su constructor, etc.
Espero que te haya servido de algo esta breve explicación.

Última edición por afrika026; 10/11/2011 a las 08:12

Etiquetas: string
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:36.