entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Duda creando objetos en Java

Buenas a todos!

Espero que me ayudeis, resulta que estoy iniciandome en esto de la Poo y le voy cogiendo el rollo. El caso es que siempre he visto que para declarar un objeto se utiliza (es un ejemplo canino):

Perro miperro = new Perro();

Sin embargo, intentando comprender el Httpclient de apache me encuentro:

HttpMethod method = new GetMethod("http://www.apache.org/");

Donde yo, con todos los ejemplos que había visto en los tutoriales me esperaba algo como:

HttpMethod method = new HttpMethod("http://www.apache.org/");

A que se debe esto? Me ha roto un poco los esquemas...

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola Melk,

me alegra que estés profundizando y queriendo comprender la POO! Tu pregunta evidencia que iniciaste un buen camino.

La respuesta es que, en POO, resulta que todo es un Objeto. Desde este punto de vista, no hay ningún problema en pensar que por ejemplo al modelar una Cuenta Bancaria, que será un Objeto, pienses a los Movimientos de Cuenta Bancaria como un Objeto que estará por Composición en la Cuenta Bancaria, cuando si pensás esto desde el paradigma de la PEE o del modelado de datos, resulta que la respuesta es "rara".

De todas formas, este no es el caso. El protocolo HTTP implementa 3 formas de conexión, que son GET, POST y PUT. Resulta que la clase GetHTTP es para implementar uno de estos 3 métodos. Suena raro, porque empieza con get, pero no es un getter: es la implementación del método GET del protocolo HTTP.

Si te fijás, vas a ver que la clase GetHTTP implementa la interfaz HTTPMethod, para que las clases que implementan los 3 métodos tenga una interfaz común.

Saludos!

0voto

carlossevi comentado

Como siempre, la explicación de @Leonardo-Tadei es muy buena y no necesita comentarios, pero voy a intentar explicarlo también desde otro punto de vista que quizá lo complemente para los más profanos.

La línea HttpMethod method; a secas crea un objeto de la clase HttpMethod (y lo llama "method") y el operador = le asigna un valor. Con esto quiero decir que a la derecha del operador de asignación podrías poner cualquier expresión que devuelta un objeto de la clase HttpMethod.

Por normal general, las clases siempre tienen definido un método constructor que devuelven un nuevo objeto de su clase, por ejemplo new Perro() devuelve un nuevo Perro. En este caso, en lugar de usarse el constructor de HttpMethod (aquí me pillas, desconozco si está definido o no) se utiliza el constructor de la clase GetMethod que devuelve un objeto de la clase HttpMethod que implementa, como dice Leonardo, la conexión del tipo GET del protocolo HTTP.

0voto

Melk comentado

Gracias a los dos, me ha quedado muy claro :)

0voto

Peter comentado

@Melk moví tu respuesta a comentario, porque no es una respuesta :)

0voto

Melk comentado

Gracias @peter. No tenía claro donde responder. Un saludo!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta