Zadanie_DiagramKlas2..

Transkrypt

Zadanie_DiagramKlas2..
Korzystając z poniższego opisu gry Księstwo oraz własnej intuicji stwórz diagram klas w
perspektywie implementacyjnej (PI). W celu realizacji zadania można użyć dowolnego
narzędzia do tworzenia diagramów UML w wersji 1.x -2.x. Można również przygotować
diagram za pomocą ogólnego narzędzia do rysowania ale trzeba dołożyć starań, aby diagramy
były czytelne. Ponieważ zadanie jest dość rozbudowane i trudne to czas jego realizacji
ustalam na 5 tygodni (35 dni). Stąd ostateczny termin oddania zadania ustalam na 30 kwietnia
2008.
W trakcie realizacji zadania zwróć uwagę na następujące ważne aspekty PI
1. Założyć język implementacji J i wybrane środowisko implementacji S.
2. Dokładna specyfikacja atrybutów, atrybuty statyczne.
3. Atrybuty obliczane pomijamy. Atrybuty obliczane, których obliczenie zajmuje dużo czasu
można zostawić, jeżeli optymalizacja czasu wykonania jest istotna.
4. Specyfikacja ograniczeń atrybutów wraz z podaniem, jakie techniki w języku J będą
wykorzystane do realizacji stosowanych ograniczeń atrybutów.
5. Umieścić na diagramie przynajmniej jedną asocjację i podać konwencję implementacji
asocjacji
w języku J. Umieścić na diagramie przynajmniej jedną asocjację
dwukierunkowej oraz podać konwencję jej implementacji w języku J.
6. Podać jak będą implementowane kolekcje.
7. Wyspecyfikować wszystkie zależności między klasami według tabeli na slajdzie 20
wykładu 2.
8. Identyfikacja agregacji, zawierania oraz podanie przyjętego sposobu ich implementacji w
języku J.
9. Położyć szczególny nacisk na implementacje klas abstrakcyjnych i interfejsów. Stosować
klasy abstrakcyjne i interfejsy wszędzie tam gdzie istnieje podejrzenie, że kod może być
rozbudowywany o nowe klasy. Przypominam, że używanie klas abstrakcyjnych i
interfejsów prowadzi do łatwego rozbudowywania kodu (patrz slajdy 24, 25 wykładu 2).
Podać sposób implementacji klasy abstrakcyjnej i interfejsu w wybranym języku
programowania.
10. Specyfikacja klas asocjacyjnych, (jeżeli takie są potrzebne) i podanie sposobu ich
implementacji w języku J.
11. Specyfikacja szablonów klas. Jeżeli takie występują.
12. Specyfikacja klas typu <<enumeration>>. Podać konwencję ich implementacji.
13. Specyfikacja klas aktywnych.
Opis gry Księstwo
Świat, w którym rozgrywa się gra, można przedstawić za pomocą pól. Każde pole
identyfikowane jest przez współrzędne x i y. Pole może być dogodne do założenia osady, lub
też nie. Jeżeli na polu istnieje osada, to tylko jedna. Z każdym polem związany jest pewien
krajobraz w postaci bitmapy. Na niektórych polach mogą występować surowce (np. węgiel,
ruda) lub inne artefakty niebędące niczyją własnością.
Każdy gracz jest władcą jednego księstwa. Do księstwa może należeć wiele osad. Księstwo
wyznacza narodowość oraz obywatelstwo osadników. Osadnicy są obywatelami księstwa
poprzez przynależność do jednej z osad danego księstwa. Osadę mogą jednak zamieszkiwać
różne nacje, których narodowość nie pokrywa się z obywatelstwem. Poszczególne nacje
zamieszkujące osadę charakteryzują się lojalnością wobec księstwa, do którego należy dana
osada. Na osadników nałożony jest podatek pogłówny, który co tydzień musi być
odprowadzany na rzecz księstwa. Podatki zasilają skarbiec księstwa. Zbyt wysoki poziom
podatków obniża morale osadników. Zebrane środki finansowe przeznaczane są na
utrzymanie budynków oraz wojska.
W osadach można stawiać różnego rodzaju budynki. Niektóre z nich można wybudować
tylko w pojedynczym egzemplarzu dla każdej osady (np. fosa), inne w większej ilości (np.
zakład kuśnierza). Aby w danej osadzie powstał budynek, część osadników musi pracować
jako budowniczy przez określoną liczbę roboczogodzin oraz muszą być dostępne
odpowiednie produkty i surowce do ich budowy. Osadnicy każdego dnia mogą pracować w
innych zawodach (np. płatnerza, zwiadowcy). Aby osadnicy mogli wykonywać swoje zawody,
zwykle wymagane są odpowiednie budynki (np. kuźnia, tartak). Większość pracowników
dostarcza artefakty - wytwarza produkty (np. kowal, rolnik) lub pozyskuje zasoby naturalne
(np. górnik, drwal). Do wytworzenia produktu mogą być potrzebne pewne artefakty.
Następnie należy oddelegować pracowników, którzy przez wymaganą liczbę roboczogodzin
będą pracować przy produkcji. Artefakt, który powstał w wyniku działalności osadników, to
produkt. Do najważniejszych typów produktu należy zbroja (np. miecz, kolczuga) oraz
żywność (np. chleb, mięso). Z kolei najważniejszy typ artefaktu niebędącego produktem to
zasób naturalny. Aby w osadzie mogły być przechowywane artefakty w większej ilości, należy
zbudować magazyn.