Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Środa, 18 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 (adaptowanie prostego interfejsu regulatora)

Niech dany będzie prosty przykład systemu, w którym istnieje klasa regulatora posiadająca interfejs składający się z czterech metod dostępowych (pobranie wartości uchybu, wartości zadanej, wartości wielkości sterującej i wartości wielkości sterowanej), z których korzystają inne fragmenty większego systemu do symulacji. Deklaracja takiej klasy:

class Regulator {
public:
	Regulator ();
	virtual ~Regulator ();
	virtual double symuluj (double wej);
	virtual double pobierzE () const;
	virtual double pobierzWzad () const;
	virtual double pobierzU () const;
	virtual double pobierzY () const;
private:
	double s_e, s_wZad, s_u, s_y;
};

Definicje odpowiednich metod są przedstawione poniżej. Dla uproszczenia pominięta zostaje faktyczna implementacja regulatora, a wartości poszczególnych wielkości są ustawiane w konstruktorze (w rzeczywistym przykładzie zostałyby odpowiednio modyfikowane przez metodę umożliwiającą krok symulacji).

Regulator::Regulator () {
	s_e = 1.0;
	s_wZad = 3.0;
	s_u = 1.7;
	s_y = 2.0;
}

Regulator::~Regulator () {
}

double Regulator::symuluj (double wej) {
	// symulacja pracy regulatora
	return 0;
}
	
double Regulator::pobierzE () const {
	return s_e;
}
	
double Regulator::pobierzWzad () const {
	return s_wZad;
}
	
double Regulator::pobierzU () const {
	return s_u;
}
	
double Regulator::pobierzY () const {
	return s_y;
}

Tak zbudowany regulator jest następnie używany przez zewnętrzny element systemu, np. metodę uzycieRegulatora(), która wyprowadza informacje o wartościach związanych z regulatorem korzystając z metod dostępowych.

void uzycieRegulatora (Regulator * reg);

void uzycieRegulatora (Regulator * reg) {
	reg->symuluj(0.0);
	std::clog << "e(i) : " << reg->pobierzE() << std::endl;
	std::clog << "wZad(i) : " << reg->pobierzWzad() << std::endl;
	std::clog << "u(i) : " << reg->pobierzU() << std::endl;
	std::clog << "y(i) : " << reg->pobierzY() << std::endl;
}
Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11