Smalltalk
Obiekty mogą być łączone w zespoły (można przyjąć, że samodzielne obiekty są zespołami 1-elementowymi). Spośród obiektów będących członkami tego samego zespołu tylko jeden wykonuje instrukcje swojego programu. Obiekt jest wyłaniany w każdym kroku drogą losowania lub wskazywany przez użytkownika (decydujemy o tym w momencie tworzenia zespołu).
Obiekty wykonują swoje programy po kolei, po jednej instrukcji, czyli w jednym kroku symulacji wszystkie zespoły obiektów wykonują po 1 instrukcji.
Wszystkim obiektom w momencie ich umieszczania na planszy przypisujemy program, który będą wykonywały. Obiekty mogą być tworzone automatycznie w czasie działania programu. Action Lang pozwala na interakcję z użytkownikiem. Można zapytać go o konkretną wartość lub poprosić o wybranie instrukcji z listy. W obu przypadkach możliwe jest wprowadzenie maksymalnego czasu do namysłu przez użytkownika. Jeśli nie wykona ruchu na czas to zwracana jest wartość domyślna. Umożliwia to symulację np. gier zręcznościowych.
Język zawiera wyrażenia standardowe oraz funkcje zależne od symulowanego systemu. Wyrażenia standardowe są to wyrażenia arytmetyczne (+,*,-, stałe liczbowe, zmienne robocze). Można założyć, że wszystkie zmienne robocze są na początku zerowane. Warunki - relacje i wyrażenia logiczne zbudowane z relacji oraz operatorów logicznych and, or, not.
Dla każdego symulownego systemu język ten będzie musiał być rozszerzony
o operacje i funkcje specyficzne dla systemu. Przy wpisywaniu przez użytkownika
nie sprawdzamy ich poprawności, to po prostu nazwa i kilka argumentów.
Przykłady operacji i funkcji:
PrzesuńSięNa i, j
przesunięcie się obiektu aktywnego na pole (i,j)
Zabij i, j
Przenieś i, j
przenieś to co stoi na twoim polu na pole (i,j)
StrzelajNaOdległość k, d
strzelaj w kierunku k na odległość d
CzyPoleZajęte i, j
zwraca TRUE, jeśli pole (i,j) jest zajęte
IleSąsiadów i, j
zwraca liczbę sąsiadów (zajętych pól) dla (i,j)
itp., zależnie od potrzeb i fantazji.
Należy zaprojektować (wykonać analizę i projektowanie) oraz zaprogramować
w Smalltalku program symulujący opisany system.
Przykłady:
Projekt powinien spełniać następuące warunki:
1. Powinien być stworzony zgodnie z regułami analizy i projektowania
obiektowego.
2. Powinien być na tyle dokładny, aby widać było sposób wykonania programu,
który go realizuje.
Oceniane będą:
- projekt i konstrukcja programu (obiektowość, łatwa modyfikowalność)
- możliwości programu (rodzaje symulacji, stopień skomplikowania świata)
- jakość interfejsu użytkownika (łatwość komunikowania się z programem)
Zaprojektuj i zaimplementuj klasy reprezentujące Piłkarzy i Drużyny. Każdy piłkarz wie w jakiej jest drużynie (dokładnie jednej), każda drużyna ma swoja nazwę. Piłkarze dzielą się na napastników (wiedzą czy grają na skrzydle lewym, prawym czy po środku), pomocników (wiedzą czy są pomocnikami ofensywnymi czy defensywnymi), obrońców (wiedzą czy są zwykłymi obrońcami czy libero) i bramkarzy (wiedzą ile procent strzałów bronią).
Każdy piłkarz jest człowiekiem. Każdy człowiek zna swoje imię i nazwisko. Każdy człowiek potrafi wypisać dane o sobie (np. printString), podając komplet swoich danych. Uwaga - nie należy powtarzać raz już napisanego kodu. Należy dostarczyć oprócz klas część testującą (generującą przykładowe dane) i wszystko zapakować w pakiet.