Programar es un proyecto de inserción laboral en tecnología para jóvenes de bajos recursos económicos, mediante una capacitación integral de alto valor agregado. Sumate a la comunidad, te esperamos!

Ver más
  • 3,893 Miembros
  • 661 Temas
  • 1,234 Seguidores
  • 0

Jerarquia de clases para figuras geométricas [JAVA]

Tengo aquí otro ejercicio que me está costando realizar , os pongo el enunciado y despues como lo he resuelto yo para que posteriormente podáis decirme en que he podido fallar



Diseño de una jerarquia de clases para las figuras Geométricas que se ubique dentro del paquete figura

Comienza creando una clase Figura , que debe tener como atributos privador área y périmetro .Esta clase tendrá también métodos que permitan tanto establecer como recuperar el área y perímetro
No se debe poder instanciar la figura como tal

Crea después las clases hijas Rectangulo,Cuadrado y Circulo , en tres ficheros independientes,formando tambien parte del paquete figura. Estas clases tienes que definir sus constructores para que , recibiendo la longitud de dos lados , la de un lado , y la del radio respectivamente , se calcule de forma automatica el area y el perimetro

Cada clase tiene que tener un atributo de clase areaTotal que almacene el total de área de todas las figuras creadas de esa clase . El atritbuto de clase areaTotal de la clase Figura sumará las áreas totales de todas las intstancias de sus subclases

Crea una nueva clase TestFigura (que este en otro paquete ) , cuyo método main haga lo siguiente :Crea un circulo de radio 2 , un cuadrado de lado 3 , y un rectangulo de lados 4 y 5 , visualizando su área según se crean, y que visualice finalmente el área total

A continuacion creará otros 2 círculos , uno de radio 3 y otro de radio 1 y visualizara el área total de todos los circulos creados








package Ejercicio10;

public class Figura {

    protected float area;
    protected float perimetro;
    
    public void getform(float pArea,float pPerimetro){
        
        perimetro=pPerimetro;
        area=pArea;
        
    }
    
    public void setform(float pArea,float pPerimetro){
        
        perimetro=pPerimetro;
        area=pArea;
        
        
        
    }
    
}



package Ejercicio10;

public class Circulo extends Figura {

    
    
  float radio;
    public Circulo (float  pArea, float pPerimetro,float pRadio ){
        
        super();
        radio=pRadio;
    }
    
    public float area(){
        return (float) (Math.PI*Math.pow(radio, 2));
    }
    

}
 

package Ejercicio10;

public class Cuadrado extends Figura {


      float radio;
        public Cuadrado (float  pArea, float pPerimetro,float pRadio ){
            
            super();
            radio=pRadio;
        }
        
        public float area(){
            return (float) (Math.PI*Math.pow(radio, 2));
        }
        
}
 

 

package Ejercicio10;

public class Rectangulo extends Figura {

    
      
      float radio;
        public Rectangulo (float  pArea, float pPerimetro,float pRadio ){
            
            super();
            radio=pRadio;
        }    
        public float area(){
            return (float) (Math.PI*Math.pow(radio, 2));
        }
    
    
    
    
}

  • 0
  • 0Calificación
  • 1Seguidores
  • 9.036Visitas
  • 1Favoritos

5 comentarios

@gzaloprgm_com_ar Hace más de 2 años
3 cosas:

El getform está medio raro, no tengo mucha idea de java, pero no deberías pasar los parámetros por referencias y modificarlos?

Salvo que tengas que hacer raíces o potencias con exponentes racionales "feos", yo haría directamente radio*radio en lugar de pow(radio,2.0)

Faltan implementar varias cosas, como que se almacene la suma
@elementalsoft Hace más de 2 años
en éste caso hay que ir por partes para ver por que lo hiciste de esa manera y como puedes mejorar.

iseño de una jerarquia de clases para las figuras Geométricas que se ubique dentro del paquete figura


te está diciendo claramente que tienes que crear un paquete de nombre figura, fijate que los nombes de paquete empiezan con minúscula, es por la convensión de nombres.

Comienza creando una clase Figura , que debe tener como atributos privados área y périmetro .Esta clase tendrá también métodos que permitan tanto establecer como recuperar el área y perímetro
No se debe poder instanciar la figura como tal


Se crea una clase en un archivo y con atributos privados, luego hay que implementar los getter y setter que con el eclipse se consiguen haciendo clic derecho Sourse->Generate Getters and Setters.
Y la última parte te indica que no se puede instanciar, eso significa que la clase es "abstracta".

Crea después las clases hijas Rectangulo,Cuadrado y Circulo , en tres ficheros independientes,formando tambien parte del paquete figura. Estas clases tienes que definir sus constructores para que , recibiendo la longitud de dos lados , la de un lado , y la del radio respectivamente , se calcule de forma automatica el area y el perimetro


Hay que crear tres clases más en el mismo paquete, y te está diciendo que parámetros reciben los constructores de las clases.

Cada clase tiene que tener un atributo de clase areaTotal que almacene el total de área de todas las figuras creadas de esa clase . El atritbuto de clase areaTotal de la clase Figura sumará las áreas totales de todas las intstancias de sus subclases


Acá solamente te indica que crees un "atributo de clase" por cada clase Rectangulo, Cuadrado y Circulo, que sea de clase significa que lleva el modificador "static", que sirve para compartirlo entre todas las instancias.

Crea una nueva clase TestFigura (que este en otro paquete ) , cuyo método main haga lo siguiente :Crea un circulo de radio 2 , un cuadrado de lado 3 , y un rectangulo de lados 4 y 5 , visualizando su área según se crean, y que visualice finalmente el área total

A continuacion creará otros 2 círculos , uno de radio 3 y otro de radio 1 y visualizara el área total de todos los circulos creados


Para finalizar se implementa todo y te indica que crees un nuevo paquete, y crees una clase con el método main. Algo importante es que vas a necesitar la referencia al paquete anterior y se logra por medio de import.

Te dejo una captura de pantalla para que veas como están ubicados los paquetes
Jerarquia de clases para figuras geométricas [JAVA]


package figura;

public abstract class Figura {
    private float area;
    private float perimetro;

    public float getArea() {
        return area;
    }

    public void setArea(float area) {
        this.area = area;
    }

    public float getPerimetro() {
        return perimetro;
    }

    public void setPerimetro(float perimetro) {
        this.perimetro = perimetro;
    }

}




package figura;

public class Circulo extends Figura {

    public static float areaTotal;

    public Circulo(float radio) {
        super.setArea((float) Math.PI * radio * radio);
        areaTotal += super.getArea();
        super.setPerimetro((float) Math.PI * radio * 2.0f);
    }
}




package figura;

public class Cuadrado extends Figura {

    public static float areaTotal;

    public Cuadrado(float lado) {
        super.setArea(lado * lado);
        areaTotal += super.getArea();
        super.setPerimetro(lado * 4.0f);
    }
}




package figura;

public class Rectangulo extends Figura {

    public static float areaTotal;

    public Rectangulo(float lado1, float lado2) {
        super.setArea(lado1 * lado2);
        areaTotal += super.getArea();
        super.setPerimetro(lado1 * lado2 * 2.0f);
    }
}




package testFiguras;

import figura.*;

public class TestFigura {

    public static void main(String[] args) {

        Circulo cir = new Circulo(2.0f);
        System.out.println("Area del círculo: " + cir.getArea());
        Cuadrado cua = new Cuadrado(3.0f);
        System.out.println("Area del cuadrado: " + cua.getArea());
        Rectangulo rect = new Rectangulo(4.0f, 5.0f);
        System.out.println("Area del rectángulo: " + rect.getArea());

        Circulo.areaTotal = 0.0f;
        Circulo cir1 = new Circulo(3.0f);
        Circulo cir2 = new Circulo(1.0f);
        System.out.println("El área de los dos círculos es de: "
                + Circulo.areaTotal);
    }
}

@salazargustavo Hace más de 2 años
Gracias por esta edicion, de cada uno de nosotros en comunidad, algo podemos aprender y por supuesto es bueno programar no que lo programen
Tienes que ser miembro para responder en este tema