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



Strategia

Przykład 1
#include <iostream>

#include "regulator.h"

int main () {
	try {
		Regulator regulator;
		regulator.zmienAlgorytmNaP(1);
		regulator.symuluj(10.0);
		
		regulator.zmienAlgorytmNaPID(2, 10, 0.2);
		regulator.symuluj(5.0);
	} catch (const std::exception & e) {
		std::clog << e.what() << std::endl;
	}

	return 0;
}
#ifndef __REGULATOR_H__
#define __REGULATOR_H__

class Regulator {
private:
	enum TypRegulatora { REGULATOR_BRAK, REGULATOR_P, REGULATOR_PID };
public:
	Regulator ();
	void zmienAlgorytmNaP (double k);
	void zmienAlgorytmNaPID (double k, double Ti, double Td);

	double symuluj (double y);
private:
	void symulujRegulatorP (double wZad, double y);
	void symulujRegulatorPID (double wZad, double y);

	TypRegulatora s_typ;

	double s_regP_k;
	double s_regPID_k;
	double s_regPID_Ti;
	double s_regPID_Td;
};

#endif
#include "regulator.h"
#include <iostream>

Regulator::Regulator () {
	s_typ = REGULATOR_BRAK;
}

void Regulator::zmienAlgorytmNaP (double k) {
	s_typ = REGULATOR_P;
	s_regP_k = k;
}
	
void Regulator::zmienAlgorytmNaPID (double k, double Ti, double Td) {
	s_typ = REGULATOR_PID;
	s_regPID_k = k;
	s_regPID_Ti = Ti;
	s_regPID_Td = Td;
}

double Regulator::symuluj (double y) {
	std::clog << "Symulacja kroku regulatora : " << std::endl;
	std::clog << "\twyznaczenie nowej wartosci zadanej z generatora" << std::endl;
	double wZad = 1.0;
	
	switch (s_typ) {
	case REGULATOR_P:
		symulujRegulatorP (wZad, y);
		break;
	case REGULATOR_PID:
		symulujRegulatorPID (wZad, y);
		break;
	default:
		throw std::exception ("Niezdefiniowany algorytm regulacji");
	}

	return 0;
}

void Regulator::symulujRegulatorP (double wZad, double y) {
	std::clog << "\tsymulacja algorytmu P (" << s_regP_k << ")" << std::endl;
}
	
void Regulator::symulujRegulatorPID (double wZad, double y) {
	std::clog << "\tsymulacja algorytmu PID (" << s_regPID_k << ", " << s_regPID_Ti << ", " << s_regPID_Td << ")" << std::endl;
}
Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11