Liczenie sumy pól figur z użyciem interfejsu.

0

Witam.
Mam problem z policzeniem sumy pól figur w klasach dziedziczących klasę abstrakcyjną figura.
Program powinien mieć możliwość zliczenia oraz wyświetlenia ilości wszystkich figur oraz każdego rodzaju z osobna.
Myślałem nad tym, żeby metoda zaimplementowana z interfejsu zliczała każde wyjście z danej klasy i je sumowała, ale nie mam pojęcia jak się za to zabrać.
Wszystko co zrobiłem do tej pory:

public abstract class Figura {
	public abstract void licz_pole();
	public abstract void licz_obwód();
	}
public class Prostokąt extends Figura{
	private int a;
	private int b;
	private double pole;
	private double obwód;
	public Prostokąt(int a,int b) {
		this.a=a;
		this.b=b;}
	public Prostokąt(){
		this(0,0);}
	public int getA() {
		return a;}
	public void setA(int a) {
		this.a = a;}
	public int getB() {
		return b;}
	public void setB(int b) {
		this.b = b;}
	public double getPole() {
		return pole;}
	public void setPole(double pole) {
		this.pole = pole;}
	public double getObwód() {
		return obwód;}
	public void setObwód(double obwód) {
		this.obwód = obwód;}
	@Override
	public void licz_pole() {
		setPole(this.a*this.b); 	}
	@Override
	public void licz_obwód() {
		setObwód(2*(a+b));}
	@Override
	public String toString() {
		return "Prostokąt o bokach " + a + " " + b + " , pole= " + pole + " , obwód= " + obwód;}}
public class Koło extends Figura{
	private int r;
	private double pole;
	private double obwód;
	public Koło(int r) {
		this.r=r;}
	public Koło(){
		this(0);	}
	@Override
	public void licz_pole() {
		setPole((r*r)*3.14);}
	@Override
	public void licz_obwód() {
		setObwód(2*3.14*r);}
	public int getR() {
		return r;}
	public void setR(int r) {
		this.r = r;}
	public double getObwód() {
		return obwód;}
	public void setObwód(double obwód) {
		this.obwód = obwód;}
	public double getPole() {
		return pole;}
	public void setPole(double pole) {
		this.pole = pole;}
	@Override
	public String toString() { 
		return "Koło o promieniu " + r + ", pole= " + pole + ", obwód= " + obwód;}}
public class Starter {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Prostokąt p1=new Prostokąt(5,6);
		p1.licz_pole();p1.licz_obwód();
		System.out.println(p1);
		Prostokąt p2=new Prostokąt(5,7);
		p2.licz_pole();p2.licz_obwód();
		System.out.println(p2);
		Koło k1=new Koło(5);
		k1.licz_pole();k1.licz_obwód();
		System.out.println(k1);
		Koło k2=new Koło(2);
		k2.licz_pole();k2.licz_obwód();
		System.out.println(k2);
		}}
0

Mam problem z policzeniem sumy pól figur w klasach dziedziczących klasę abstrakcyjną figura.
Program powinien mieć możliwość zliczenia oraz wyświetlenia ilości wszystkich figur oraz każdego rodzaju z osobna

Co to znaczy,nie rozumiem, co ma być na wejściu, a co na wyjściu z programu?

0
lion137 napisał(a):

Mam problem z policzeniem sumy pól figur w klasach dziedziczących klasę abstrakcyjną figura.
Program powinien mieć możliwość zliczenia oraz wyświetlenia ilości wszystkich figur oraz każdego rodzaju z osobna

Co to znaczy,nie rozumiem, co ma być na wejściu, a co na wyjściu z programu?

Program ma policzyć sumę pól figur z jakiejś klasy np.prostokąt i wyświetlić właśnie tą sumę ze wszystkich klas i z każdej z osobna.

0

Dalej nie kojarzę, mam na wejściu kilka obiektów klasy prostokąt i mam zsumowac ich pola, OK; a dalej

wyświetlić właśnie tą sumę ze wszystkich klas i z każdej z osobna

??

0
lion137 napisał(a):

Dalej nie kojarzę, mam na wejściu kilka obiektów klasy prostokąt i mam zsumowac ich pola, OK; a dalej

wyświetlić właśnie tą sumę ze wszystkich klas i z każdej z osobna

??
Później zsumować pola ze wszystkich klas( koło i prostokąt) naraz, żeby wyświetliło to jako drugi wynik tak jakby.

0

Ciężko idzie, ale dobra, czyli na wejściu mam pewną ilość prostokątów i kół, na wyjściu dwie liczby: suma pól prostokątów i suma pól kół i prostokątów? To co za problem napisać metody statyczne w klasie Starter, jedną przyjmującą listę figur i zwracającą sumę pól i drugą przyjmującą dwie listy i zwracającą sumę obydwu?

1

Towrzysz sobie interface:

interface Mierzalne{
   float liczPole();
   float liczObwod();
}

następnie tworzysz sobie klasy dla figur:

public class Kwadrat implements Mierzalne{
@Override
public float liczPole(){
      return a*a;
   }
public float liczObwod(){
      return 4*a;
   }
}

Robisz resztę figur, implementując metody w interface.

Następnie tworzysz sobie listę:
List<Mierzalne> mierzalne = new ArrayList<>();
Iterujesz po tej liście w dowolny sposób i sumujesz wartości, które cię interesują. Idea polega na tym, że nie musisz wiedzieć, w jaki sposób dana figura liczy swoje pole, skoro wiesz, że jest w stanie to robić (bo implementuje odpowiedni interface).

1 użytkowników online, w tym zalogowanych: 0, gości: 1