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

Java como C/C++

Estas en el tema de Java como C/C++ en el foro de Java en Foros del Web. Que tal, como se acordaran (los que saben C++) cuando creamos una clase se puede poner la declaracion de metodos y variables en un archivo ...
  #1 (permalink)  
Antiguo 11/01/2006, 20:01
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
Java como C/C++

Que tal, como se acordaran (los que saben C++) cuando creamos una clase
se puede poner la declaracion de metodos y variables en un archivo (header, .h) y la implementacion de la misma en otra, es decir, algo asi:

en el header "clase.h"
Código PHP:
class miclase
{
  
int x;
  
void metodo();
}; 
en la implementacion:
Código PHP:
void miclase::metodo()
{
  
x++;

(ya se que eso no sirve de nada, pero es para poner un ejemplo)
Y ya luego se puede utilizar la clase en otro archivo (ya sea donde esta el main u otro lugar)

Mi duda es:
es posible algo similar en java??

si es asi, ¿como?

saludos
  #2 (permalink)  
Antiguo 11/01/2006, 21:08
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
mmmmmmmmmm mira, yo la verdad que no se programar en C++, yo solo programe con C y despues migre a JAVA, asi queeeeeeeeee

pero mira, eso que pones en JAVA existe!!

ok, en la primera clase solo estas especificando los atributos y metodos que van a se van a implementar en alguna otra clase, bueno a eso en JAVA se le llama interface, y es eso unicamente la declaracion de metodos y se ahce asi:

Código PHP:
public interface Ejemplo{
   public 
void metodo1();
   public 
void metodo2(String x,String y);

ok ahora la clase que lo va a implementar seria asi:

Código PHP:
public class EjemploImp implements Ejemplo{
   public 
void metodo1(){
      
x++;
   }
   public 
void metodo2(String a,String b){}

OK, si notaste el metodo2 no tiene ninguna instruccion, pero cuando implementamos una interface forsozamente tenemos que implementar todos sus metodos.

bueno, espero quede claro!!

have funnnnnnnnnnn
  #3 (permalink)  
Antiguo 12/01/2006, 01:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Hola,

Bueno, el uso de interfaces es incluso más avanzado de lo que pregunta blackwind, ya que incluso te permite cambiar la implementación por debajo. En Java no existe explicitamente lo que pides, el .h, por que usas directamente los niveles de proteccion (public, protected, private...) y el mismo fichero .class para poder utilizar una clase desde otra.

O sea, si pero sin tener dos ficheros (.c y .h).

La unica desventaja que tiene esto es que para poder compilar contra una clase necesitas la "implementacion". Si no quieres distribuir la implementacion, entonces viene perfecto lo que ha explicado stock.
  #4 (permalink)  
Antiguo 12/01/2006, 03:13
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
una cosa importante: la variable global x en la interface no se definio, algo que si se puede hacer en el .h. No se si han resuelto esto en Java 1.5.

Pero si, lo de la interface seria la aproximacion del .h
  #5 (permalink)  
Antiguo 12/01/2006, 09:09
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
mmmmmmmmmmmm algo mas

el uso de interfaces va mas alla..... no es solo lo que te explique ayer, si no que tambien varias clases pueden implementar la misma interface, osea tendran los mismos metodos, pero pueden hacer cosas diferentes, el ejemplo clasico es.........

- creas una interface con un metodo que le mandas un texto.

- la primera clase que implemente esta interface recibe el texto y lo imprime en pantalla, ya ya!!

- Una segunda clase recibe el texto, pero esta lo escribe en un archivo de texto.

- una tercera clase recibe el mismo texto y lo envia por correo electronico.

que beneficio tengo haciendo esto?? el beneficio es que las tres clases pertenecen a la misma interface, entonces digamos que hacemos un programa (Echo.java), en el cual hacemos la aplicacion usando el patron Method Factory, en el cual nosotros le pedimos la clase que queremos, el nos debuelve la instancia requerida, entonces, la misma aplicacion te sirve para cosas diferentes.

cuando correriamos la aplicacion seria algo asi:

~$ java Echo screen "esto es el texto que recibe el metodo"
~$ java Echo file "esto es el texto que recibe el metodo"
~$ java Echo mail "esto es el texto que recibe el metodo"

puedes ver que el unico parametro que cambia es el primero, que es que nosotros decidiriamos que queremos hacer con ese texto......

en fin, esto es algo de las ventajas de usar interfaces, frameworks como appfuse, struts, hibernate, etc........ hacen uso de esto!!
  #6 (permalink)  
Antiguo 12/01/2006, 09:13
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
ahhhhhhhhh jajajajajja

otro ejemplo mas practico es con las base de datos, digamos que SUN hace la interface de los metodos para acceso a las base de datos.........

ok, luego MySQL implementa esa interface para su Base de Datos

luego Postgress tambien implementa la misma interface pero para su base de datos

luego Oracle hace lo mismo

tambien SQLServer

todos los drivers de esas base de datos tienen los mismos metodos, pero claro, cada distribuidor quien sabe que tanto programaron para que nosotros podamos accessa especificamente a su base de datos!!

bueno, con este ejemplo esta clarisimo!!

have funnnnnnnnnn
  #7 (permalink)  
Antiguo 12/01/2006, 16:44
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
que tal,
gracias por contestar pero.........

segun tengo entendido en las interfaces no se pueden declarar las variables.....

que opinan de las clases abstractas??
o de los javadocs?

saludos
  #8 (permalink)  
Antiguo 12/01/2006, 17:14
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
no habia pensado en las clases abstractas, honestamente no las uso muy a menudo, pero creo que son un buen concepto. Creo que tambien es una buena aproximacion al .h pero no completamente equivalente. Aqui si puedes definir variables y metodos. Lo unico que no puedes hacer es crear la clase [instanciar?]: es decir, tienes que crear una subclase [que implemente los metodos] para poder "usar" la clase abstracta (por medio de la subclase, claro).

Los javadocs son generados de los comentarios [que tienen cierto formato] que haces en el codigo. Son bastante practicos, usas una herramienta para generar los HTMLs [con frames, bah :-/]
  #9 (permalink)  
Antiguo 13/01/2006, 01:09
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Los Javadoc tienen un enlace que dice "navegar sin frames" si esa es la opcion que uso yo el 90% de las veces ;).

Los interfaces NO puede declarar variables ni metodos estáticos y ciertamente no es algo que vayan a "arreglar" por que no es nada que esté "roto". Está hecho así a conciencia.

Las clases abstractas son muy útiles para ciertas cosas, yo las uso a menudo por que mantengo nuestro propio framework web y en esos casos se suelen usar. Tiene sus ventajas y sus desventajas respecto a usar interfaces, cosa que cualquier buen manual básico de Java debería comentar, así que no son ni mejores ni peores, son una opción.

Los javadocs? Una de las mejores cosas de Java y una de las menos utilizadas por parte de las "nuevas generaciones" de programadores, desafortunadamente.

Un saludo
  #10 (permalink)  
Antiguo 13/01/2006, 09:27
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
ok gracias,
buscare mas info sobre Javadocs.....
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 18:36.