Implementacja klas z zasadą otwarte-zamkniete

0

Mam za zadanie zaprogramować dowolną hierarchie klas implementującą interfejs Comparable<T> (lub inny), zawierającą przynajmniej cztery klasy. Może to być np. hierarchia klas reprezentująca stopnie wojskowe bądź klasy reprezentujące najważniejsze stanowiska Rzeczpospolitej Polskiej (wynik porównania ma odzwierciedlać tzw. precedencje).
Muszę zwrócić uwagę, aby implementacja tej hierarchii klas przestrzegała zasady otwarte–zamknięte, tj. aby można było dodać klasę (np. reprezentująca nowy stopień wojskowy) implementującą Comparable<T> bez konieczności zmiany implementacji w pozostałych klasach.

Mógłby mi ktoś pokazać na prostym przykładzie jak to powinno wyglądać? Ogólnie rozumiem o co chodzi, ale mam problem, żeby jakos rozsądnie to zaprogramować.

0

Mała podpowiedź:

public interface Precedencja {
    int ważność();
}
abstract class Dyplomata implements Precedencja, Comparable<Dyplomata> {

    @Override
    public int compareTo(Dyplomata o) {
        if (o == null)
            return 1;
        return ważność() - o.ważność();
    }

}
0

W klasie dyplomata implementujesz funkcję compareTo (wymaganą przez interfejs Comarable), ale nie implementujesz funkcji int waznosc() wymaganej przez interfejs Precedencja. Dlaczego? No i nadal nie za bardzo wiem jak stworzyć tę hierarchię klas...

0

klasa Dyplomata jest klasą abstrakcyjną. Jej podklasy typu Król, Premier, Ambasador itd. będą implementować metodę ważność. Hierarchię klas będziesz miał dość płytką tzn. Dyplomanta>Król>Vice-król
Dyplomata> Premier >MInister itp.

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