Witam. Mam pewien problem. Chcę stworzyć klasę Army, która przechowuje żołnierzy różnego typu: bohaterów(+3), jednostki specjalne(+2), jednostki podstawowe(+1). W nawiasach podałem ile dodatkowych zdolności może posiadać każda z nich (nazwa + opis - 2 stringi). Poza tym, wszystkie mają prawie te same rzeczy do przechowywania. No właśnie - prawie. Najlepiej byłoby tak, żeby każda klasa wyższego stopnia rozszerzała poprzednią, czyli basic -> special -> hero, przy czym w każdej następnej dostępne byłoby o jedno pole więcej dodatkowej umiejętności. Problem jest taki, że np. osobnik A klasy hero posiada 2 PODSTAWOWE umiejętności, a osobnik B, również klasy hero, - 3 umiejętności. Równie dobrze np. soldier klasy basic ma 0 podstawowych, a archer, też klasy basic, ma 2 podstawowe.
Jak rozwiązać ten problem, żeby nie robić niepotrzebnych pól?
- Od razu w klasie podstawowej dodać 3 pola umiejętności podstawowej, i w zależności od potrzeb używać od 0 do 3 potrzebnych?
- Dodać pole, które trzyma ilość podstawowych umiejętności, oraz jakiś ArrayList, na którego będę wrzucał podstawowe umiejętności w konstruktorze?
- jakoś inaczej?
Drugi problem:
Jako że opisy skilli, itemów, nazwy, etc. mogą się zmieniać, wszystko chcę trzymać w plikach txt (pewnie w xmlu byłoby przyjemniej, bardziej profesjonalnie i więcej możliwości, ale nie umiem XMLa, a zanim wezmę się za jego naukę chcę napisać coś prościej, aby utrwalić sobie zdobyte informacje). Jest takie fajne polecenie: getClass().getResource(String path).
Nie byłoby problemu, gdyby zasoby były w tym samym katalogu co plik .class, albo dalej zagnieżdżone. Ale załóżmy że mamy folder Program, a tam foldery: Characters i Resources i łatwo się domyślić, że plik .class będzie w Program/Characters/bin a dany zasób w Program/Resources. Oczywiście istnieje możliwość podania pełnej ścieżki, np D://Java/hehe/test/.../Program/Resources, ale zakładam, że będę chciał program spakować w .jar i np. użyć na innym komputerze, co wtedy? Jak uzyskać dostęp z katalogu Character/bin do Resources? Żeby tak się cofnąć do folderu głównego i wejść do innego.
Proszę o pomoc i z góry dziękuję za odpowiedź.