Como test de prueba usaremos el siguiente:
public class TestCilindro { public static void main(String[] args) { Punto centroBase = new Punto(3.0, 5.0); Circulo base = new Circulo(centroBase, 4.0); Cilindro miCilindro = new Cilindro(base, 10.0); System.out.println(miCilindro); miCilindro.trasladar(2.0, 2.0); System.out.println(miCilindro); System.out.println( new Cilindro(new Circulo(new Punto(3.0, 5.0),4.0),10.0)); } }
Ahora paso a daros los resultados. Primero el del Punto:
public class Punto { private double x; private double y; public Punto() { x = 0; y = 0; } public Punto(double a, double b) { x = a; y = b; } public double x() {return x;} public double y() {return y;} public double distancia(Punto p) { double dist = 0; double distX = Math.abs(x-p.x); double distY = Math.abs(y-p.y); distX *= distX; distY *= distY; dist = Math.sqrt(distX+distY); return dist; } public void x(double a) {x = a;} public void y(double a) {y = a;} public void trasladar(double a, double b) { x += a; y += b; } public String toString() { return "("+x+", "+y+")"; } }El del Círculo:
public class Circulo extends Punto{ private Punto centro; private double radio; public Circulo() { centro = new Punto(); radio = 1; } public Circulo(Punto pto, double rad) { centro = pto; radio = rad; } public Punto centro() {return centro;} public double radio() {return radio;} public void centro(Punto pto) {centro = pto;} public void radio(double rad) {radio = rad;} public void trasladar(double a, double b) { centro.trasladar(a, b); } public String toString() { String center = centro.toString(); return "El centro es "+center+" y el radio mide " + radio; } }
Y el del Cilindro :)
public class Cilindro extends Circulo{ private Circulo base; private double altura; public Cilindro() { base = new Circulo(); altura = 1; } public Cilindro(Circulo bs, double alt) { base = bs; altura = alt; } public Circulo base() {return base;} public double altura() {return altura;} public void base(Circulo bs) {base = bs;} public void altura(double alt) {altura = alt;} public void trasladar(double a, double b) { base.trasladar(a, b); } public String toString() { String bass = "Las características de la base son: "+base.toString(); return bass + " y la altura es de " + altura; } }
Eso es todo. Espero que os quede claro todo lo que significa la herencia.
Saludos ;)
Esta genial la pagina!
ResponderEliminarCuando solicitas un atributo o quieres cambiar el valor del atributo, por ejemplo, esta parte del código:
// Solicitando Valores:
public Circulo base() {return base;}
public double altura() {return altura;}
// Cambiando Valores:
public void base(Circulo bs) {base = bs;}
public void altura(double alt) {altura = alt;}
Te recomiendo que cambies el nombre de los métodos, de modo que se pueda leer mejor cuando los llamas en el método "main". Algo así:
// Solicitando Valores:
public Circle getBase() {return this.base;}
public double getHeight() {return this.height;}
// Cambiando Valores:
public void setBase(Circle base) {this.base = base;}
public void setHeight(double height) {this.height = height;}
Sí, la verdad es que llevas razón y lo normal es crear métodos set y get (es común). A ver si saco tiempo y lo modifico que últimamente estoy hasta arriba entre el curro y los estudios.
EliminarEn mi defensa diré que ése código lo hice cuando llevaba dos semanas en la carrera :P
GENTEE!! USAD SIEMPRE GETS PARA OBTENER VALORES DEL OBJETO Y SETS PARA CAMBIARLOS. SE TRATA DE CÓDIGO LIMPIO. HACED LO QUE OS DIGA Y NO LO QUE YO HAGA XD
En serio, gracias e intentaré acordarme de cambiarlo.
Saludos;)
hola, estoy aprendiendo a programar en java y no entiendo para que se usa :
ResponderEliminarpublic void x(double a) {x = a;}
public void y(double a) {y = a;}
Eso sirve para poder editar el objeto. Si creamos un objeto Punto p y queremos editar que el x sea 5 pues ponemos p.x(5); y si queremos cambiarlo otra vez a 8 pues p.x(8);
EliminarSaludos;)
Algo tan pequeño lo estas complicando para el que no sabe. Son los métodos setter. Seria lo mismo pero más claro si pusieses esto:
ResponderEliminarpublic class Punto {
private double x;
private double y;
public Punto() { // por defecto el punto se sitúa en x=0 e y=0
x = 0;
y = 0;
}
public Punto(double x, double y) { // uso las mismas variables para no confundir.
this.x = x;
this.y = y;
}
public double getX() {return this.x;}
public double getY() {return this.y;}
public double distancia(Punto p) {
double distancia = 0; // distancia del punto
double distanciaX = Math.abs(this.x - p.getX); // distancia del componente X del punto
double distanciaY = Math.abs(this.y - p.getY); // distancia del componente Y del punto
distancia = Math.sqrt(Math.pow(distanciaX,2) + Math.pow(distanciaY, 2));
return distancia;
}
public void setX(double x) {this.x = x;}
public void setY(double y) {this.y = y;}
public void trasladar(double x, double y) {
this.x += x;
this.y += y;
}
@override
public String toString() {
return "(" + this.x + ", " + this.y + ")";
}
}
This hace referencia a la propia clase, y añadiendole las propiedades o atributos de la clase this.x o this.y se distinguen de variables locales con el mismo nombre.
Esto es esencial para hacer codigo limpio y que se entienda.
hola necesito una ayuda urgente, necesito armar un proyecto de cilindro que luego herede en otra case TCilindrohueco, necesito que me de como mensaje volumen, perimetro interio,perimetro exterior.
ResponderEliminarsi alquien me puede ayudar le voy agradecer.
saludos