El día 7 de Marzo, practica 3 de OCA.
En esta practica, primero repasamos de Objetos, nos dar una clase Punto,y tenemos que responder unas preguntas basicas de esta clase. por ejemplo “cuantos metodos hay en la clase”,”cuantos constructures en la clase”,”cuantos atributos en la clase”, etc.
public class Punto {
private double x;
private double y;
public static int contador = 0;
// Constructor
public Punto(double x, double y) {
this.x = x;
this.y = y;
contador++;
}
// toString: devuelve una cadena con la representación del objeto
public String toString() {
// el signo + para cadenas no significa “suma matemática” sino concatenación
return “(“+x+”, “+y+”)”;
}
// devuelve la distancia al origen
// NOTA: se podría haber hecho con la distancia a (0,0):
// return calcularDistancia(new Punto(0,0));
public double distanciaAlOrigen() {
return Math.sqrt(x*x+ y*y);
}
// métodos de acceso
public double getX() {
return x;
}
public double getY() {
return y;
}
// devuelve la distancia a otro punto
public double calcularDistancia(Punto otroPunto) {
double x1;
double y1;
x1 = x-otroPunto.getX();
y1 = y-otroPunto.getY();
return Math.sqrt(x1*x1+y1*y1);
}
}
**************************************************************
con esta clase tenemos que crear una clase PruebaPunto, que contiene metodo main, y los valores que hay que calcular en esta clase.
**************************************************************
public class PruebaPunto{
public static void main(String args[]){
Punto p1;
p1=new Punto(2,2);
Punto p2;
p2=new Punto(1,1);
System.out.println(p1.toString());
System.out.println(p1.distanciaAlOrigen);
System.out.println(p1);
System.out.println(p1.calcularDistancia(p2));
System.out.println(Punto.contador);
}
}
************************************************************
Una vez creado esta clase, lo compilo en modo Consola, y salió un error con
System.out.println(p1.distanciaAlOrigen);
******
distanciaAlOrigen es un metodo en la clase Punto, para definir la distancia entre punto p1 al origen, hay que hacer una llamada a este metodo, para llamar a metodo lo que he hecho p1.distanciaAlOrigen. pero lo que he hecho es una llamada a un atributo, no un metodo, por tanto salió un error. la forma correcta es hacer
p1.distanciaAlOrigen();
**************************************************
Luego. hacemos el ejercicio 1, la clase Modificador
import java.lang.reflect.Modifier;
public class Modificador {
public static final int PUBLIC = 1;
public static final int PRIVATE = 2;
public static final int PROTECTED = 4;
public static final int STATIC = 8;
public static final int FINAL = 16;
public static final int SYNCHRONIZED = 32;
public static final int VOLATILE = 64;
public static final int TRANSIENT = 128;
public static final int NATIVE = 256;
public static final int INTERFACE = 512;
public static final int ABSTRACT = 1024;
public static final int STRICT = 2048;
public static String toString( int modificador ) {
// ESTE MÉTODO YA ESTÁ IMPLEMENTADO.
return Modifier.toString( modificador );
}
public static void main( String args[] ) {
// ESTE MÉTODO YA ESTÁ IMPLEMENTADO.
int modificador = Integer.parseInt(args[0]);
System.out.println(” El modificador de acceso de ” + modificador +” es “+ Modificador.toString(modificador) );
}
}Este ejercicio no tenemos que implementar la clase, sólo para saber como funcionarla.
A cada una de las constantes se le asocia la cadena de caracteres con el literal correspondiente de la siguiente lista de modificadores de Java:
abstract, final, interface, native, private, protected, public, static, strict, synchronized, transient, volatile.
Los modificadores de acceso se identifican con un número entero que representa una combinación de las estas constantes.
Creamos una clase PruebaModificadores
public class PruebaModificador
{
public static void main(String args[])
{
System.out.println(Modificador.toString(3));
}
}
La clase PruebaModificadores se imprima por pantalla todos los posibles valores de salida del método toString() que ha definido en la clase Modificadores.
lo que he hecho con un numero entero de modificadores igual a 3. cuando ejecutamos esta clase, se imprima: public, private
Como ya hemos visto en la clase, el atributo PUBLIC es igual a 1, y el atributo PRIVATE es igual a 2, la suma de estos dos valores es 3, por tanto se imprima por pantalla los valores posibles de del metodo toString() son PUBLIC Y PRIVATE.
*****************************************************
En el ejercicio 2, la clase Atributo.
nos dar siguiente informacion de la clase.
public class Atributo {
public String nombre = null;
public String tipo = null;
public int modificadores = 0;
public Atributo(String nombre, String tipo, int modificadores ) { /*…*/}
public String toString() {/*…*/}
}
****************
Esta clase tiene declarados los siguientes métodos que permiten crear e imprimir las instancias de Atributo:
- Un constructor de Atributo con los parámetros adecuados.
- Un método públic String toString() que permite obtener una cadena de caracteres con una descripción literal del atributo correspondiente mostrando los siguientes datos del mismo: el nombre, el tipo y el modificador de acceso. Un formato de ejemplo puede ser el siguiente:
ATRIBUTO : NOMBRE=<nombre_Atributo> TIPO =java.lang.String MODIFICADOR ACCESO = public
**************************************
completamos la clase anterior.
import java.lang.reflect.Modifier;
public class Atributo {
public String nombre = null;
public String tipo= null;
public int modificadores = 0;
/** Crea una instancia de Atributo */
public Atributo(String nombre, String tipo, int modificadores ) {
// A IMPLEMENTAR.
this.nombre=nombre;
this.tipo=tipo;
this.modificadores=modificadores;
}
public String toString() {
// A IMPLEMENTAR.
return “Atributo”+nombre+”,”+tipo+”,”+Modificador.toString(modificadores);
}
}
*************************************
una vez completado la clase,creamos una clase PruebaArticulo,
public class PruebaAtributo{
public static void main(String args[]){
Atributo a=new Atributo(“nombre”,”String”,54);
System.out.println(a.toString());
}
}
definimos los valores de los atributos de la clase Atributo, e imprima el metodo toString, en la clase Atrubuto, el metodo toString(),contiene siguiente codigo
return “Atributo”+nombre+”,”+tipo+”,”+Modificador.toString(modificadores);
lo que hace es va a llamar el metodo toString de Modificador, y lo que hace es igual que la clase Modificador.