Opis stałych i
typów nieobiektowych
patrz:
#include <stale_Leming.h>
#include <stale_ElementySwiata>
Poczatek
Klasa ElementSwiata
- Klasa abstrakcyjna - jest
nad klasą wszystkich elementów świata
oprócz terenu.
-
-
- Atrybuty
publiczne
|
-
pozycja obiektu na planszy |
|
- liczba impulsów
potrzebnych na wykonanie czynności |
|
- ile impulsów już
trwa aktualna czynność |
|
- opis stanu obiektu |
Funkcje
publiczne
-
- Wyjątki
publiczne
-
|
- obiekt niepoprawnie
wstawiony |
|
- obiekt już nic nie
robi, należy go usunąć |
-
- Atrybuty
prywatne
(protected)
-
|
- czy
obiekt jest wstawiony na planszę |
|
- wskaźnik na
planszę (świat, w którym się
znajduje) |
-
- Funkcje
prywatne (protected)
-
-
- virtual void
ElementSwiata::odbierzImpuls()
- Funkcja abstrakcyjna. Jedyna funkcja
powodująca aktywność ruchową
elementów świata.
Przesłoniona w: Leming, Bomba,
SzczegolnyElementSwiata.
- ElementSwiata::ElementSwiata() [protected]
- Tworzy nowy obiekt ElementSwiata i
obiekty, z których się składa.
Konstruktor jest chroniony ponieważ
klasa jest abstrakcyjna.
- virtual
ElementSwiata::~ElementSwiata() [protected]
- Niszczy obiekt ElementSwiata i obiekty, z
których się składa.Destruktor jest
chroniony ponieważ klasa jest
abstrakcyjna.
- virtual typ_rodzaj
ElementSwiata::rodzaj() [protected]
- Funkcja abstrakcyjna. Przedefiniowana we
wszystkich nieabstrakcyjnych podklasach.
Zwraca stałą chrakteryzującą obiekt
(dla każego inna).
- virtual void
ElementSwiata::posprzataj() [protected]
- Funkcja
powoduje usunięcie obiektu z planszy
(przed zniszczeniem).
Poczatek
Klasa Leming
- Klasa implementująca
zachowanie leminga w świecie.
Nadklasa: ElementSwiata
-
Atrybuty
klasowe (statyczne)
- Zmienne te informują o czasie trwania czynności
przez niego wykonywanych oraz o właściwościach
leminga w warunkach ekstremalnych.
- static int predkosc_w_wodzie
- static int predkosc_w_powietrzu
- static int spadanie_w_wodzie
- static int spadanie_w_powietrzu
- static int pojemnosc_pluc
- static int maksymalny_skok
- static int czas_zmiany_stanu
- Atrybuty
publiczne
|
-
kierunek poruszania sie obiektu |
|
- zwrot leminga
(prawo, lewo) |
Funkcje
publiczne
-
- Wyjątki
publiczne
-
|
- leming już doszedl
do wyjścia i już nic nie będzie
robił, można go usunąć |
-
- Atrybuty
prywatne
(protected)
-
|
- czas
przebywania w wodzie |
|
- czas jaki leming
spadal (ostatni ciąg) nie licząc upadku
w wodzie |
-
- Funkcje
prywatne
(protected)
-
-
- Leming::Leming(Plansaza
*wsk_plansza)
- Tworzy nowy obiekt Leming i obiekty, z
których się składa. wsk_plansza jest
wskażnikiem na planszę (świat w
któwym żyje leming).
- virtual Leming::~Leming()
- Niszczy obiekt Leming i obiekty, z
których się składa.
- virtual void
ElementSwiata::odbierzImpuls()
- Jedyna funkcja powodująca aktywność
ruchową leminga. Leming dostaje kolejno
impulsy i je zlicza, kiedyt zbierze
odpowiednią ilość to wykonuje kolejny
ruch.
- Przesłoniona z: ElementSwiata.
- virtual void
ElementSwiata::umieraj()
- Metoda, która zostaje przesyłana (z
zewnątrz) kiegy leming ma umrzeć.
- virtual typ_rodzaj
Leming::rodzaj() [protected]
- Zwraca stałą LEMING. Wszyskie podklasy
Leminga zwracają swoją specyficzną
stałą.
- virtual void
poprawCzasWWodzieIDlugoscUpadku(void) [protected]
- W zależności od sytuacji , w jakiej
leming się znajduje zwieksza lub nie
zmienne: czas_w_wodzie, dlugosc_upadku.
int
Leming::sprawdzCzyMamUmrzecLubCzyDoszedlemDoWyjscia(void)
Sprawdzenie czy leming ma umrzec z powodu
braku powietrza lub wybuchu bomby lub czy
doszedł do wyjście (jego cel osiagnięty)
int
Leming::sprawdzCzyMamBycSpalonyWKwasie(void)
Sprawdzenie czy leming znajduje się w kwasie.
typ_teren Leming::sprawdzTeren(const Para
wspolrzedne)
Sprawdza rodzaj terenu na planszy w punkcie
'wspolrzedne', jeśli punkt jest poza plansza to
zwraca typ terenu: POWIETRZE.
int Leming::czyMiekkiTeren(typ_teren
teren)
Funkcja sprawdza czy podany teren jest miękki
(tzn .taki przez który przechodzi leming).
int Leming::czySchodyPrzeciwne(typ_teren
cegla, int zwrot)
Sprawdza czy podana cegła jest przeciwna do
zwrotu.
int Leming::czyPrzeszkadzaBloker(void)
Funkcja sprawdza czy na drodzie stonie stoi
jakiś bloker, jeśli tak to zwraca1 (TAK), wpp 0
(NIE).
void Leming::przesunMnie(const Para na)
Przesuwa Leminaga na pozycje: 'na' lub jeśli
pozycja jest poza plansza to leming ginie (rzuca
wyjątek, że jest trupem).
void Leming::sprawdzCzyJestemWWodzie(void)
Funkcja sprawdza czy leming znajduje się w
wodzie i uaktualnia zmienne z tym zwiazane.
int Leming::czyMamSpadac(void)
Funkcja sprawdza czy leming ma spadać.
void Leming::iCoDalej(void)
Leming stoi na twardzym gruncie i sparawdza
swoje otoczenie aby zdecydować co ma zrobić
(gdzie iść).
void Leming:: ruszamPoIdzie(void)
Wpoprzedniej czynności leming szedl i teraz
sprawdza wstępnie jakiego rodzaju czynność
wykonac *ć.
void Leming:: ruszamPoSpada(void)
W poprzedniej czynnosci leming spadał i teraz
sprawdza czy nadal ma spadać czy możadl ża
terłn twardy, wtedy sprawdza czy nie spadal zbyt
długozre łuz jeśykonuje ruch */sli tak to
umiera, w.
void Leming::ruszam(void)
Sprawdza wynik i rodzaj poprzedniej czynnosci
i albo wykonuje nastepny ruch (czynnosc) albo
rzuca wyjatek: Trup lub Doszedlem, kiedy ma być
usuniety.
Poczatek
Klasa Komandos
- Klasa abstrakcyjna - jej
podklasy implementują zachowanie
komandosów w świecie.
Nadklasa: Leming
-
Klasa posiada
tylko konstruktory i destruktor chronione.
Klasa KomandosBezrobotny
- Klasa abstrakcyjna - jej
podklasy implementują zachowanie
komandosów nic nie robiących w
świecie.
Nadklasa: Komandos
-
Klasa posiada
tylko konstruktory i destruktor chronione.
Klasa Bloker
- Klasa implementuje
zachowanie blokera.
Nadklasa: KomandosBezrobotny
-
Atrybuty
klasowe
Określa czas jaki bloker stoi nie
sprawdzając żadnych warunków (ich zmiany).
Funkcje
prywatne
- void virtual iCoDalej(void)
Bloker spadal i
teraz jest na ziemi wiec 'decyduje', ze stoi.
- void virtual ruszam(void)
Przedefiniowana
funkcja z nadklasy Leming bloker sprawdza
wynik i rodzaj poprzedniej czynności i albo
wykonuje następny ruch (czynnosc) albo rzuca
wyjątek: Trup lub Doszedlem, kiedy ma być
usunięty .
- Bloker(Plansza *wsk_plansza, Para
wspolrzedne)
- ~Bloker()
Klasa KomandosPracujacy
- Klasa abstrakcyjna.
Nadklasa: Komandos
-
Atrybuty
publiczne
Określa jaki zapas sił posiada jeszcze
komandos.
Funkcje
prywatne
- int virtual czyMamPracowac(void) = 0
Każdy
komandos z podklasy przedefinowuje tę
metodę - określając czy w warunkach jakich
się znajduje może pracować.
- void virtual dokonczPrace(void) = 0
Funkcja
wirtualna . Każdy komados w tej metodzie
wykonuje czynności związane z ukończeniem
swojej pracy.
- void virtual iCoDalej(void)
Funkcja
przedefiniowana z klasy leming tak aby było
możliwe wykonanie powyższych metod.
- void virtual ruszam(void)
Funkcja
przedefiniowana z klasy leming tak aby było
możliwe wykonanie powyższych metod.
Klasa Kopacz
- Klasa abstrakcyjna. Podklasy
implementują zachowanie się kopacz
piomowych, poziomych, górnych i dolnych.
Nadklasa: KomandosPracujacy
-
Atrybuty
klasowe
Funkcje
prywatne
Podklasy mają zdefiniowaną funkcję
czyMamPracowac() - ktróra określa czy w danych
warunkach kopacz może kopać (w różnych podklasch
różni się tylko miejscem sprawdzania terenu)
Klasa Schodkarz
- Klasa abstrakcyjna . Podklasy
implementują zachowanie się schodkarzy
piomowych, górnych i dolnych.
Nadklasa: KomandosPracujacy
-
Atrybuty
klasowe
- static int czas_budowania
Funkcje
prywatne
Podklasy mają zdefiniowane funkcje
czyMamPracowac() oraz dokonczPrace() - które są
zdefiniowane zgodnie ze specyfikacją podaną wyżej.
W podklasach rożnią się tylko miejscem sprawdzania
czy można kopac i miejscem kopania.
Klasa Pijus
- Klasa
jest klasa dodana w ramach uzgodnionej
modyfikacji programu. Umiejscowienie tej
klasy w tym miejscu w hierarchii klas
jest uzasadnione pomimo dużego
podobieństwa (przynajmniej na pierwszy
rzut oka) pijusa do kopacza poziomego.
Wynika to stad iz istnieją sytuacje w
których sie różnią np. jest problem
ze schodami w wodzie (schody pierwszy
plan, woda drugi plan) poza tym kopacz w
momencie pracy porusza się, a pijus stoi
obok kratek z których wypompowuje wode.
Nadklasa: KomandosPracujacy
-
Atrybuty
klasowe
Funkcje
prywatne
- void
virtual dokonczPrace(void)
Powoduje, że
woda którą pijus wypompowywał znika i
pijawia się powietrze.
- int
virtual czyMamPracowac(void)
Metoda
sprawdza czy pijus może pić będąc w
miejscu gdzie stoi.
Funkcje
publiczne
- Pijus(Plansza
*wsk_plansza, Para wspolrzedne, int zwrot)
Klasa Bomba
- Klasa abstrakcyjna - jej
podklasy implementują zachowanie
komandosów w świecie.
Nadklasa: ElementSwiata
-
Atrybuty
klasowe
- static int czas_picia
- static int
czas_oczekiwania
- static
int predkosc_wybuchu
- static
int predkosc_zaniku
-
Funkcje
prywatne
Funkcje
prywatne
Wyjątek
Klasa SzvzególnyElementSwiata
- Klasa abstrakcyjna. Jej
podklasy odpowiadają jakimś
niestandardowym miejscom w świacie
lemingów jak np;: wjeście i wyjście.
Nadklasa: ElementSwiata
-
Atrybuty
klasowe
- static
int czas_ruchu_elementu_szczegolnego
Atrybuty
prywatne
- int
maksymalne_przesuniecie
- int
aktualne_przesuniecie
Atrybuty
publiczne
Funkcje
prywatne
- SzczegolnyElementSwiata(Plansza
*wsk_plansza, int przesuniecie)
- virtual
~SzczegolnyElementSwiata()
- int
virtual przesunMnie(const Para na) = 0
Funkcja abstrakcyjna. Zimplementowana w
podklasach - przesuwa obiekt na pozycje: 'na' lub
jeśli pozycja jest poza plansza to zwraca 0 -
tzn. operacja nie mogła być wykonana.
- void
virtual swojeCzynnosci(void)
Obiekty
używając tej metody mogą wykonać jakieś
nietypowe czynności związane z
obsłużeniem siebie, np.: Wejscie - sprwadza
czy ma się zamknąć, jeśli tak to zmienia
stan na zamkniete, a jeśli już jest
zamknięte to ustawia zmienną, aby już się
nie zamykać .
Funkcje
publiczne
|