Práctica 5

Abril 22, 2008 at 3:41 pm | In General | 1 Comment
Tags:

Aquí vamos con la práctica 5 sobre Polimorfismo, Interfaces, Aplicación Gráfica (GUI), Uso de paquetes de la API de Java.

El polimorfismo es la capacidad de un objeto de decidir a qué método invocar en función de la posición que ocupa en la jerarquía de clases. Hay dos tipos, sobrecarga y sobreescritura de métodos.

Tenemos que implementar una aplicación gráfica para dibujar por pantalla una Interfaz Gráfica de Usuario. Para ello tenemos que completar la clase ComponenteGrafico que nos da el enunciado. Con el constructor no hay ningun problema, los metodos para pintar ya son más complicados.

public void paint( Graphics g ) {
System.out.println(“Componente – paint() : ” +(ComponenteGrafico)this);
// Pinta un rectangulo ocn el color de fondo.
pintaFondo(g);
// Pinta el borde del rectangulo.
pintaBorde(g);
}

En los ejercicios 3.2 y 3.3 tenemos que programar la clase Botón y la clase Menu de la interfaz gráfica. En la clase Boton programos el constructor, que es sencillo mediante super para los parametros x,y,ancho,alto,colorFondo y colorBorde porque pertenecen a la clase de la que se hereda (ComponenteGrafico) y usamos this. para colorTexto y texto. Y el metodo que pinta el botón queda de la siguiente manera:

/** Método que se encarga de pintar el botón.*/
public void paint( Graphics g ) {
System.out.println(“Boton – paint() : ” +this);
super.paint(g);
// color del texto
g.setColor(colorTexto);
//texto.
g.drawString(texto,super.posX+super.ancho/3,super.posY+super.alto/2);

En la clase menu realizamos prácticamente lo mismo.

/** Método que se encarga de pintar el componente.*/
public void paint( Graphics g ) {
System.out.println(“Menu – paint() : ” +this);
super.paint(g);
g.setColor(colorTexto);
String opcionesMenu = “”;
for (int i=0 ; i<opciones.length ; i++ )
opcionesMenu += (opciones[i]+” “);

En el ejercicio 3, la clase solo tiene un atributo, un array de objetos de tipo Componente. Nos preguntan si creemos que la clase podria contener a un objeto de su misma clase. Creemos que sí. ¿por qué no?

El ejercico 4 terminamos de escribir elcodigo de la clase Ventana que nos dan, esto es el constructor y el metodo para pintar.

/** Método que se encarga de pintar el componente, la Ventana.*/
public void paint( Graphics g ) {
System.out.println(“\nVentana – paint() : ” +(Ventana)this);
this.pintaFondo(g);
g.setColor(colorTexto);
g.drawString(titulo,this.posY,this.posY+15);

pintaBorde(g)

super.paint(g);

El ejercicio 5 es finalmente la aplciación gráfica en sí. Donde aparecen los botones y menu que hemos creado antes.  Esta práctica nos ha resultado más interesante que las anteriores porque el hecho de ver “algo mas que codigo” en la pantalla, ver colores.. lo hace todo más ameno… Es como que de verdad estamos programando.

/** Constructor de nuestra pantalla.*/
public AplicacionGrafica() {
ventana = new Ventana(X_VENTANA,Y_VENTANA,ANCHO_VENTANA,ALTO_VENTANA,COLOR_FONDO_VENTANA, COLOR_BORDE_VENTANA, COLOR_TEXTO_VENTANA, “Mi primer GUI”, NUM_COMPONENTES);
menu = new Menu(X_VENTANA+X_MENU,Y_VENTANA+Y_MENU,ANCHO_MENU,ALTO_MENU,COLOR_FONDO_MENU, COLOR_BORDE_MENU, COLOR_TEXTO_MENU, opcionesMenu);
boton1 = new Boton(X_VENTANA+X_BOTON1,Y_VENTANA+Y_BOTON1,ANCHO_BOTON1,ALTO_BOTON1,COLOR_FONDO_BOTON1, COLOR_BORDE_BOTON1, COLOR_TEXTO_BOTON1, “boton1″);
boton2 = new Boton(X_VENTANA+X_BOTON2,Y_VENTANA+Y_BOTON2,ANCHO_BOTON2,ALTO_BOTON2,COLOR_FONDO_BOTON2, COLOR_BORDE_BOTON2, COLOR_TEXTO_BOTON2, “boton2″);

ventana.añade(menu);
ventana.añade(boton1);
ventana.añade(boton2);

}


/** Este método pinta la pantalla.*/
public void paint( Graphics g ) {
System.out.println(“Pantalla – paint() : ” +this);
ventana.paint(g);
}

4ª:Herencia

Abril 21, 2008 at 4:37 pm | In General | 1 Comment

Bueno pues parece que en esta práctica nos intentan hacer entender lo que es la dichosa herencia, y para ello vamos a hacer un pequeño resumen intentando explicar como hemos asimilado nosotras este concepto.

Primero comencemos con que es la herencia como concepto: sirve para construir una clase a partir de otra derivada gracias a que se heredan características comunes que contiene la “superclase”.

A ver vamos a esquematizarlo, o al menos intentarlo,de primeras todas las clases,pero todas heredan de la clase Object, por tanto todas ellas heredan o contienen lo métodos de la clase Object que son: equals(Object x),y el toString().Ahora si al crear una clase (que va a ser llamada superclase) en la cual se definen unas variables y métodos que van a ser comunes para sus clases derivadas.(Ejem:la clase Fecha puede ser una superclase). Entonces cuando nosotros cremos una clase que derive de la superclase (es decir,que tome sus variables y métodos eso si que tengan el modificador de acceso public o protected nunca private ya que no podría heredar) se le llama subclase  y se especifica al principio de la subclase prediciendola con la palabra extends seguida del nombre de la clase que deriva asi: class Nombresubclase extends  Nombresuperclase.Ejem:vamos a usar como sublases dias , mes o año las cuáles como vemos son en realidad una fecha, entonces se pondría asi: class Día extends  Fecha.Además hay que tener en cuenta que podemos añadir en la subclase nuevas variables y métodos con lo que nos interese trabajar, y por supuesto los métodos heredados también se pueden sobreescribir, y entonces nos preguntamos y cómo se accede a los métodos de la superclase pues con la palabra super() para llamar al construtor pasándole por parámetros lo que nos pida el constuctor de la supercalse y en caso de querer llamar a un método pondremos super.nombredelmétododelasuperclase(parámetros) .  

Cosas a tener en cuenta, cuando creamos una referencia de un objeto ésta puede apuntar a una instancia de subclase pero nunca al revés, y cuando llamamos con un objeto a un método que ha sido redefinido en una subclase se va a ejecutar al método de la subclase pero para llamar al de la superclase se hara lo dicho en el párrafo de más arriba.Y para llamar con un objeto de superclase a un método de subclase hacemos un casting y una vez hecho ya llamamos al método subclase.

y creo que de momento esto es todo lo que hemos aprendido con la práctica, y en clase.

Práctica 3

Abril 21, 2008 at 12:19 pm | In General | Leave a Comment

Vaya a ver si cogemos un poco el hilo  e intentamos coger el ritmo de nuestros compañeros, porque a este paso que vamos…con eso de que no sabemos por dónde coger las prácticas y comenzar a comentarlas…lo vamos dejando y nos vemos en éstas!!!

Bueno pues a ver si esta práctica no se nos resiste y se nos da mejor que las anteriores pero espero que peor que las próximas XD.

Después de abrir la clase punto que te recomiendan mirar para responder las preguntas como repaso al primer cuatrimestre;de las cuáles lo más interesante que nos ha parecido ha sido :¿Por qué motivo existen los métodos get()?Pues sirven para no romper la encapsulación y no acceder directamente  a los atributos de una clase, en cuanto a ¿Qué nombre reciben este tipo de métodos? no sabemos exactamente a que se refiere si alguien nos echa una mano bienvenida sea jj.Lo más que sabemos es que sirven para “obtener”(como bien dice su nombre en español)los atributos de un objeto.En relación al método toString(),  este método devuelve como en su cabecera se indica un objeto de tipo string y sirve para obtener la coordenada “x” e “y” pero su valor de forma literal, como uan acdena de carácteres.Respecto a la pregunta que nos hacen de que si el parámetro otroPunto del método calcularDistancia(), ¿Qué significa que, a la hora de invocar dicho método, dicho argumento “se pasa por valor” al método?Únicamente nos está diciendo que el valor que se le pasa por parámetros nos lo dan desde fuera, es decir,que el valor no lo tienen que dar ,y ese valor dentro de ese método se modificaría.Si alguien nos aclara la duda!!  

Y para ver si hemos recordado nos ponen a prueba con unos ejercicios en los que únicamente

 

 
 creamos una clase prueba y en ella llamamos al constructuctor para crear e inicializar objetos de la clase punto y a los  métodos de la clase punto mediante nuestros objetos creados. 

 

 

  • Crea dos objetos (p1,p2) de la clase Punto inicializados con los valores que quieras.
  • Imprime por pantalla la cadena de caracteres con la representación del objeto p1.
  • Imprime por pantalla las coordenadas del punto p1.
  • Imprime por pantalla la distancia del punto p1 al origen.
  • Imprime por pantalla la distancia del punto p1 al punto p2.
  • Imprime por pantalla el número de objetos que se han creado de la clase Punto.

Bueno la introducción nos ha liado un poco pero lo mas importante nos parece que viene después,cuando nos hablan de las variables declaradas como “public static final int”  puesto que ”public” es el modificador menos restrictivo, “static “nos indica que es una variable de la propia clase y “final” que se tarta de una variable constante que toda un valor predeterminado y no se puede modificar y el “int” que es el tipo de la variable a guardar,pero no tiene porque ser de tipo “int”.Public,private,protected,static,etc son  la variedad de modificadores que hay para hacer más o menos restrictiva una variable

Práctica 2

Abril 20, 2008 at 6:28 pm | In General | Leave a Comment

Empecemos con la práctica 2, que no tiene mucha complicación, comienza describiéndonos como debemos configurar el classpath y como utilizar el Api de java.El resto de la práctica como podemos ver trata la mayor parte de como utilizar las trazas y aserciones que sirven para tratar excepciones (que es un tipo de error que se ha produccido durante la ejecución de un programa), pero para una mejor gestión de errores nos explican que los errores se representan mediante dos clases derivadas de Throwable:Error y Exception.La clase Error da errores de compilación que no depende del programador, ni debe preocuparse para capturarlos, mientras que la clase Exception tiene mayor interés ya que sus clases derivadas obligan a tenerlas en cuenta y chequearlas si se producen y para ello debemos usar los bloques try/catch, en el que el bloque catch captura la excepcion y try que sirve para lanzar un mensaje para informanos de lo ocurrido. 

Práctica 1

Abril 2, 2008 at 10:35 am | In General | 2 Comments

La Práctica 1 consta de 7 pequeños ejercicios basicamente de repaso que a continuación comentaremos:

Ejercicio 0
Consta de seis preguntas basicas sobre como compilar/ejecutar en java, donde hay que guardar las clases, etc.

Ejercicio 1
Habla de la clase PrintStream que tiene dos salidas. Al ejecutar el programa su salidas se muestran por system.out la ejecucion de la clase PrintStream sin errores y en el caso de que presente errores por system.err.

Ejercicio 2
Nos muestra como leer un array imprimiendo pantalla lo que hay guardado en cada una de las posiciones, tanto de manera ascendente como descendente mediante un bucle “for”.

Ejercicio 3
Utilizamos la clase InputStream que cuando se ejecuta permite la lectura de teclado. Se utiliza try/catch para las excepciones. Tuvimos complicaciones para comprender la diferencia entre escribir una String y pulsar ENTER o simplemente despues de escribir la String pulsar ctrl+c . Además tampoco nos quedo claro, si al contar los caracteres de una String el numero que devuelve el metodo, es un número de tipo int o de tipo String.

Ejercicio 4
Usamos la clase BufferedReader que sirve tambien para leer de teclado e introducir datos que seran imprimidos en pantalla, por lo demás el ejericio no nos presentó ningún inconveniente.

Ejercicio 5
Aprendemos a usar la clase FileReader, que utiliza un archivo como si fuese un flujo de caracteres, es decir, nosotros simplemente utilizamos los datos para ejecutar el programa que se encuentra dentro del archivo en cuestión. Es una herramienta bastante útil.

Ejercicio 6 y 7
Podemos perfectamente utilizar programas Java sin ver el código, todos los días necesitamos usar programas creados por otras personas en diferentes lenguajes. Por ejemplo: Mozilla Firefox utiliza para programar el motor de dibujado Gecko el lenguaje C++, y todos los demas elementos y funciones de la interfaz en una combinación de XUL, CSS y JavaScript.
Creemos que hay muchas formas de aprender a programar, y leer el código escrito por otra persona puede ser una buena manera de mejorar la técnica, siempre y cuando esté bien documentado y sepamos paraqué se utiliza cada método o que datos hay guardados en cada variable.

Hola!!

Abril 2, 2008 at 10:33 am | In General | Leave a Comment

Hoy es un gran día porque… Estrenamos Blog!!!

Lo creamos con un poco de retraso, pero más vale tarde que nunca :D  

Blog de WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.