Zadanie zaliczeniowe nr 1 (MSUI-PWiO) Napisz w Smalltalku hierarchię klas opisuj±cych Sołnierzy. WyraĽ w tej hierarchii następuj±ce fakty: • wszyscy żołnierze s± ludĽmi, • każdy szeregowiec, sierżant, porucznik i kapitan jest żołnierzem, • oddziały wojskowe dziel± się na kompanie i plutony. Stwórz też klasę opisuj±c± kompanię. Tak zaprojektuj klasy by: • każdy człowiek znał swoje imię i nazwisko, • każdy żołnierz znał swoja kompanię, • każdy kapitan znał swoich bezpo¶rednich podwładnych (poruczników), • każdy porucznik znał swojego przełożonego (kapitana) i swoich podwładnych (szeregowców), • każdy żołnierz znał swojego przełożonego (dla kapitana wpisujemy tu nil), • każda kompania składała się z plutonów, • każda kompania znała swoje plutony i swojego dowódcę (kapitana) oraz zaopatrzeniowca (sierżanta), • każdy pluton znał swoich żołnierzy (dowódcę – porucznika i szeregowców), • każdy pluton znał swoj± kompanię, • każdy oddział wojskowy miał nazwę. Każdy z ludzi musi umieć podać swój opis w postaci napisu (komunikat printString). Opis ma zawierać wszystkie informacje, które zna dany człowiek (np. nazwę oddziału, czy nazwisko i stopień przełożonego – o ile ma przełożonego). Kompania powinna wypisywać swój opis do okienka Transcript. Opis kompanii to jej nazwa opis dowódcy i zaopatrzeniowca oraz opisy poszczególnych plutonów. Opis plutonu oprócz nazwy swojej i nazwy swojej kompanii powinien zawierać spis żołnierzy plutonu. Pamiętaj, żeby nie pisać od nowa rzeczy, które raz już napisałe¶ i pamiętaj o zasadzie „leniwy ale uczciwy”. Napisz fragment programu w Smalltalku, który utworzy kilka (ok. 10) obiektów reprezentuj±cych różnych żołnierzy i różne oddziały, umie¶ci wszystkich w jednej kompanii, a następnie wypisze jej opis. Zadbaj o to, by tworzenie nowych obiektów było jak najprostsze. • Pisanie do okienka Transcript realizuje następuj±ce wyrażenie: Transcript show: <napis>. Przej¶cie do nowego wiersza daje metoda cr (okienka Transcript). Napisy można ze sob± ł±czyć operacj± ,. Posługiwanie się kolekcj±: • OrderedCollection new, daje now± (pust±) kolekcję, • k add: x, dodaje na koniec kolekcji k nowy element x, • k do: [ :p | <zrób co¶ z p> ], wykonuje czynno¶ć <zrób co¶ z p> dla każdego elementu kolekcji k. Opis czynno¶ci to dowolny ci±g instrukcji smalltalkowych porozdzielanych kropkami. Można w nim odwoływać się do obiektu p (nie podaj±c dwukropka). Uwaga: zarówno nawiasy [ ] jak i kreska pionowa | s± w tym przykładzie potrzebne.