Java - Herencia y polimorfismo

 
Vista:

Herencia y polimorfismo

Publicado por Marisol (2 intervenciones) el 03/11/2012 01:47:13
Ayuda con Ejercicio de herencia y Polimorfismo
Submitted by chinoanarquista on Vie, 11/02/2012 - 13:48 Java Standard Edition

Buenas es mi primera vez posteando algo aquí,
espero que puedan ayudarme, de antemano gracias

la duda está en la parte que dice: "un método distancia que recibe por parámetro un objeto Punto y regresa un double con la distancia entre los dos puntos, ésta distancia se calcula con la fórmula matemática de la distancia entre dos puntos que es la raíz cuadrada de la suma de los cuadrados de x y y"

publico todo el ejercicio .

Ejercicio Herencia, Polimorfismo y Reutilización 1

Escriba una clase Punto que tiene dos atributos de tipo double, para representar x y y, respectivamente. Un constructor que recibe ambos valores por parámetro para inicializar los atributos; un constructor sin parámetros que llama al constructor con parámetros con los valores 0,0. Un método set para cada uno de los atributos, un método get para cada uno de los atributos; además un método distancia que recibe por parámetro un objeto Punto y regresa un double con la distancia entre los dos puntos, ésta distancia se calcula con la fórmula matemática de la distancia entre dos puntos que es la raíz cuadrada de la suma de los cuadrados de x y y. Incluir un método toString para mostrar el punto con el formato (0,0).

Utilizando la clase Punto escriba una clase Polígono. Esta clase tiene como atributo un arreglo de objetos Punto. Se consideran adyacentes los objetos Punto que estén en celdas consecutivas del array y los puntos que están en la primera y última celda. Esta clase ha de tener los siguientes métodos:

a) El constructor, recibirá por parámetro un arreglo con los objetos Punto que definen el Polígono. Hay que controlar que el número de vértices del Polígono no es menor que 3. En caso contrario lanzar una excepción de tipo IllegalArgumentException.
b) Trasladar(), recibe por parámetro el desplazamiento en la coordenada x y el
desplazamiento en la coordenada y. Se debe recorrer el arreglo desplazando cada uno de los puntos.
c) Escalar(), recibe por parámetro el factor de escala para la coordenada x y el factor de escala para la coordenada y. Se debe recorrer el arreglo multiplicando su coordenada x por el factor x y su coordenada y por el factor y.
d) numVértices(), devuelve el número de vértices del Poligono. El número de vértices coincide con la longitud del array.
e) toString() devuelve la información de los puntos del Polígono, uno en cada línea. Debe llamar al método toString() de cada uno de los puntos y los concatena en un String auxiliar que se devuelve al terminar el método.
f) Perímetro(), devuelve el perímetro del polígono. Se calcula utilizando el método distancia() de la clase Punto. Se calcula y suma la distancia de cada Punto con su Punto siguiente, sin olvidar la distancia entre el Punto de la última celda del arreglo con el Punto en la celda 0 del arreglo.

Escriba una aplicación en la que:

a) Cree un Polígono de cuatro vértices, que serán (0,0), (2,0), (2,2) y (0,2). Crear el arreglo y rellenarlo con los cuatro puntos, luego crear el objeto Polígono.

1
POO Ejercicio Herencia, Polimorfismo y Reutilización 1

b) Muestre la información del polígono y su perímetro en pantalla. Utilizar el método toString().
c) Traslade el polígono 4 en el eje x, traslade el polígono -3 en el eje y.
d) Muestre la información del polígono y su perímetro en pantalla. Utilizar el método toString().
e) Escale el polígono por 3 en el eje x y por 0.5 en el eje y.
f) Muestre la información del polígono y su perímetro por pantalla. Utilizar el método toString().

Escriba una clase PoligonoColoreado que herede de la clase Poligono anterior. En esta clase se debe añadir un atributo color (de la clase Color del paquete java.awt), se deben agregar métodos para cambiar y obtener el color. El método toString() se tiene que modificar para que devuelva el color del Poligono, además de los vértices que lo componen. El constructor de esta clase recibe el arreglo de puntos y el color del polígono, se debe llamar al constructor de la superclase pasándole dicho arreglo e inicializar el atributo color.

Escriba una aplicación en la que:

a) Cree un PoligonoColoreado de cuatro vértices que serán (0,0), (2,0), (2,2), (0,2) y de color rojo.
b) Muestre la información del polígono y su perímetro en pantalla. c) Traslade el polígono 4 en el eje x y -3 en el eje y.
d) Cambie el color del PoligonoColoreado a azul.
e) Muestre la información del polígono por pantalla.



public class Punto
{

double x;
double y;

public Punto(double x,double y){
this.x=x;
this.y=y;

}

public Punto(){
x=0;
y=0;

}

public void setX(double x){
this.x=x;

}

public void setY(double y){
this.y=y;

}

public double getX(){
return x;

}

public double getY(){
return y;

}

public double distancia(Punto objetoPunto){

return
Math.sqrt ((Math.pow (x - objetoPunto.getX(),2)) + ((Math.pow(y - objetoPunto.getY(),2)))) ;

}
public String toString(){
return
"(" + x + "," + y + ")";

}
}

public class Poligono
{
// instance variables - replace the example below with your own

Punto[] puntos;
/**
* Constructor for objects of class Poligono
*/
public Poligono(Punto[] punto)throws IllegalArgumentException
{
if (puntos.length<3)
{
throw new IllegalArgumentException ("No es un polígono");
}
else
{
Poligono poligono=new Poligono(puntos);
}
}




/**
*/
public void trasladar(int desX,int desY)
{
// put your code here
for (int indice=0;indice< puntos.length;indice++){
puntos[indice].setX(puntos[indice].getX()+ desX);
puntos[indice].setY(puntos[indice].getY()+ desY);
}
}

public void escalar(int escX,int escY)
{
// put your code here
for (int indice=0;indice<puntos.length;indice++){
puntos[indice].setX(puntos[indice].getX()* escX);
puntos[indice].setY(puntos[indice].getY()* escY);
}
}

public int numVertices(){
return
puntos.length;
}

public String toString(){
String mensaje="";
for(int i=0;i<puntos.length;i++){
mensaje += puntos[i].toString()+ " ";

}

return
mensaje;

}

/***
*/

public double perimetro(){

double perimetro=0.0;

for(int i=0;i<puntos.length;i++){

perimetro += puntos[i].distancia(puntos[i+1]);
}
perimetro+=puntos[puntos.length-1].distancia(puntos[0]);
return perimetro;
}
}

public class PoligonoApp
{
public static void main(String[]ass){

Punto [ ] arrPuntos={new Punto(),new Punto (2,0),new Punto(2,2),new Punto(0,2)};



Poligono poligono=new Poligono(arrPuntos);




JOptionPane.showMessageDialog(null,poligono.numVertices());





JOptionPane.showMessageDialog(null,poligono.toString());


}
}

Compila y todo, pero al ejecutar
marca un NullPoniterException

creo que entiendo por que pasa eso, pero no se como arreglarlo
, persoda, no fui muy claro, :C
ayudame a checar ese codigo
debo tener un monton de cosas mal
y gracias por tomarte el tiempo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jhonnathan Emilio

Herencia y polimorfismo

Publicado por Jhonnathan Emilio (328 intervenciones) el 04/11/2012 18:19:26
En el constructor de la clase Poligono debe ir este por el que habia antes.
---------------------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
public Poligono(Punto[] punto)throws IllegalArgumentException
	{
	puntos=punto; //El null era que puntos no habia sido inicializado.
	if (puntos.length<3)
	{
	throw new IllegalArgumentException ("No es un polígono");
	}
	//El else estaba mal
	}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar