Na szybko napisałem to, nie wg interfejsów a wg klasy abstrakcyjej po ktorej beda dziedziczyc odpowiednie figury
Klasa wykonawcza:
Kopiuj
public class App
{
public static void main( String[] args )
{
List<Krawedz> list = new ArrayList<Krawedz>(3);
list.add(new Krawedz(1,1));
list.add(new Krawedz(2,2));
list.add(new Krawedz(3,3));
Figura trojkat = new Trojkat(list);
trojkat.przetwarzajKrawedzie();
}
}
Kopiuj
public abstract class Figura {
public List<Krawedz> krawedzList;
public abstract void przetwarzajKrawedzie();
}
Kopiuj
public class Trojkat extends Figura {
public Trojkat(List<Krawedz> krawedzList) {
this.krawedzList = krawedzList;
}
public void przetwarzajKrawedzie(){
Iterator iterator = krawedzList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().toString());
}
}
}
Kopiuj
package com.maciej;
public class Krawedz {
public int dlugosc;
public int kat;
public Krawedz(int dlugosc, int kat) {
this.dlugosc = dlugosc;
this.kat = kat;
}
@Override
public String toString() {
return "Krawedz{" +
"dlugosc=" + dlugosc +
", kat=" + kat +
'}';
}
}
Wiec tak, nie wiem jakich pól oczekujesz od klasy Krawedz, ale swobodnie mozesz sobie je tam ustawiac na takie jak ci odpowiadaja. Ja dałem takie jak ty dałeś wczesniej :P
Klasa abstrakcyjna Figura ma 2 cechy: 1.liste krawedzi 2.metode która przetwarza krawedzie w jakis sposob (to tez jakas wymyslona metoda, rownie dobrze moze ona liczyc kąty, które chcesz policzyć)
Trojkat dziedziczy po Figurze, wiec ma jej cechy. Konstruktor Trojkat'a ma parametr liste Krawedzi. Wg mnie fajny sposob, bo po samym rozmiarze listy mozesz powiedziec co to za figura (jesli to potrzebne). (może by tu zamiast listy dac po prostu tablice.. teraz pomyslalem)
Przykladowa implementacja przetwarzajFigure robi w moim przypadku tyle, co tworzenie iteratora z listy krawedzi i wypisanie ich na konsole.
konsola:
Kopiuj
Krawedz{dlugosc=1, kat=1}
Krawedz{dlugosc=2, kat=2}
Krawedz{dlugosc=3, kat=3}
Process finished with exit code 0
Mozesz też zrobic coś podobnego ale interfejs-style i pokazać jak ci wyszlo :D
niezdecydowanyniezdecydowany