Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Poniedziałek, 16 Lipiec 2018
Zarejestrowanych użytkowników: 4
Dostępnych pytań testowych: 102
HOME
Strona tytułowa pracy dyplomowej
NAUKA
Materiały dydaktyczne związane z OOP
TESTY
Sprawdzenie poziomu zdobytej wiedzy
ZASOBY
Literatura i zasoby sieciowe o OOP
ŹRÓDŁA
Zbiór projektów dydaktycznych z OOP
KONTO
Możliwość śledzenia własnych postępów
INFO



Przykład (dekorowanie sygnałów)

Jako pierwszy przykład realizacji wzorca projektowego Dekorator posłuży mechanizm budowania klas reprezentujących sygnały dyskretne. Wstępnie wymagana jest możliwość symulacji dwóch sygnałów:

  • fali prostokątnej o określonej amplitudzie, okresie i wypełnieniu,
  • fali sinusoidalnej o określonej amplitudzie i okresie,

Dodatkowo żąda się, aby dla każdego sygnału można było ograniczyć moment startu i zakończenia aktywności danego sygnału (przez brak aktywności należy rozumieć mechanizm w którym symulacja sygnału zwraca wartość 0).

Pierwsze, naturalne podejście może polegać na zbudowaniu wspólnej klasy bazowej sygnałów skupiającej wspólną funkcjonalność, a następnie wyprowadzenie klas pochodnych konkretnych sygnałów.

Abstrakcyjna klasa bazowa może zatem przedstawiać się następująco:

class Sygnal {
public:
	Sygnal (int start, int koniec);
	virtual double symuluj (int t) = 0;
protected:
	bool czyAktywny (int t);	
private:
	int s_start;
	int s_koniec;
};

Sygnal::Sygnal (int start, int koniec) 
	: s_start(start), s_koniec(koniec) 
{
}
	
bool Sygnal::czyAktywny (int t) {
	return (t >= s_start && t <= s_koniec) ? true : false;
}

Jak widać klasa posiada konstruktor określający chwilę czasowe startu i zakończenia aktywacji, czysto wirtualną metodę symuluj() oraz metodę chronioną czyAktywny() służącą do testowania stanu aktywności danego sygnału przez klasy pochodne.

Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11