W skrócie: (klasa abstrakcyjna "Osoba" , od niej dziedziczą dwie podklasy : "Pracownik" , "Klient" , i od klasy 'Pracownik' dziedziczą kolejne 2 podklasy : "Handlowiec" , "Serwisant" .
Dodatkowo mam klasę ObjectPlus do trzymania ekstensji i klasa Osoba dziedziczy po tej klasie.
Wszystko napisałam tak (oczywiście każda klasa w oddzielnym pliku)
Kod: Zaznacz cały
public abstract class Osoba extends ObjectPlus{
}
public class Pracownik extends Osoba{
}
public class Klient extends Osoba{
}
//pytanie bo nie mam pewności. klasa pracownik zaimplementowana w ten sposob , dziedzicząca po Osoba bedzie tez dziedzicyc tą ObjectPlus i umożliwi zarządzanie ekstensją ?
public class Handlowiec extends Pracownik{ // czy po prostu tak ? :/
}
public class Serwisant extends Pracownik{
}
2. Jak ją rozbudować żeby była zachowana trwałość ekstensji ?
jej ciało wygląda tak:
Kod: Zaznacz cały
public class ObjectPlus {
private static Map<String, List<Object>> ekstensje;
//mapa by przechowywać wszystkie obiekty
public ObjectPlus(){ //konstruktor
if (ekstensje==null){
ekstensje = new HashMap<String, List<Object>>();
}
String className = this.getClass().toString();
List<Object> ekstensja = ekstensje.get(className);
if(ekstensja == null){
ekstensja = new ArrayList<Object>();
ekstensje.put(className, ekstensja);
}
ekstensja.add(this);
}
//ta metoda zwróci nam ekstensje dla danego obiektu
public List<Object> getEkstensja(){
String className = this.getClass().toString();
List<Object> list = ekstensje.get(className);
return list;
}
//druga taka sama metoda ale bedzie przyjmowala nazwe klasy, i bedzie dzialac na metodach klasowych
public static List<Object> getEkstensja(String className){
return ekstensje.get(className);
}
}