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



Metoda szablonowa

Przykład 1
#include <iostream>
#include <conio.h>

#include "algorytmgmv1.h"
#include "algorytmpzpsd1.h"

int main () {
	AlgorytmRST * algorytmRegulacji1 = new AlgorytmPZPSD1(1, 2, 1, 0, "1 -0.5", "0.5", "1");
	AlgorytmRST * algorytmRegulacji2 = new AlgorytmGMV1(1, 2, 1, 0, 2.5, "1", "1", "1");
	
	std::clog << "ALGORYTM PZPSD1" << std::endl;
	algorytmRegulacji1->symuluj(0, 0);
	std::clog << std::endl;

	std::clog << "ALGORYTM GMV1" << std::endl;
	algorytmRegulacji2->symuluj(0, 0);
	std::clog  << std::endl;

	delete algorytmRegulacji1;
	delete algorytmRegulacji2;

	return 0;
}
#ifndef __ALGORYTMGMV_H__
#define __ALGORYTMGMV_H__
#include "algorytmrst.h"

class AlgorytmGMV1 : public AlgorytmRST {
public:
	AlgorytmGMV1 (unsigned int k, unsigned int stA, unsigned int stB, unsigned int stC, double q, const std::string & P, const std::string & Q, const std::string & V);
	virtual ~AlgorytmGMV1 ();
private:
	virtual std::string okreslStopienF () const;
	virtual std::string okreslStopienG () const;
	virtual std::string okreslRownanieDiofantyczne () const;
	virtual std::string ustawWielomianR () const;
	virtual std::string ustawWielomianS () const;
	virtual std::string ustawWielomianT () const;
private:
	double s_q;
	const std::string s_P;
	const std::string s_V;
	const std::string s_Q;
};

#endif
#ifndef __ALGORYTMPZPSD1_H__
#define __ALGORYTMPZPSD1_H__
#include "algorytmrst.h"

class AlgorytmPZPSD1 : public AlgorytmRST {
public:
	AlgorytmPZPSD1 (unsigned int k, unsigned int stA, unsigned int stB, unsigned int stC, const std::string Am, const std::string Bm, const std::string A0);
	virtual ~AlgorytmPZPSD1 ();
private:
	virtual std::string okreslStopienF () const;
	virtual std::string okreslStopienG () const;
	virtual std::string okreslRownanieDiofantyczne () const;
	virtual std::string ustawWielomianR () const;
	virtual std::string ustawWielomianS () const;
	virtual std::string ustawWielomianT () const;
private:
	const std::string s_Am;
	const std::string s_Bm;
	const std::string s_A0;
};

#endif
#include "algorytmpzpsd1.h"

AlgorytmPZPSD1::AlgorytmPZPSD1 (unsigned int k, unsigned int stA, unsigned int stB, unsigned int stC, const std::string Am, const std::string Bm, const std::string A0) 
	: AlgorytmRST(k, stA, stB, stC), s_Am(Am), s_Bm(Bm), s_A0(A0)
{
}

AlgorytmPZPSD1::~AlgorytmPZPSD1 () {
}

std::string AlgorytmPZPSD1::okreslStopienF () const {
	return "k-1";
}
	
std::string AlgorytmPZPSD1::okreslStopienG () const {
	return "max(stA-1,stAm+stA0+stC-k)";
}

std::string AlgorytmPZPSD1::okreslRownanieDiofantyczne () const {
	return "Am*A0*C=A*F+z^(-k)*G";
}

std::string AlgorytmPZPSD1::ustawWielomianR () const {
	return "B*F";
}

std::string AlgorytmPZPSD1::ustawWielomianS () const {
	return "G";
}

std::string AlgorytmPZPSD1::ustawWielomianT () const {
	return "A0*Bm*C";
}
#ifndef __ALGORYTMRST_H__
#define __ALGORYTMRST_H__
#include <string>

class AlgorytmRST {
public:
	AlgorytmRST (unsigned int k, unsigned int stA, unsigned int stB, unsigned int stC);
	virtual ~AlgorytmRST ();
	void symuluj (double wZad, double y);
private:
	void identyfikujObiekt ();
	virtual std::string okreslStopienF () const = 0;
	virtual std::string okreslStopienG () const = 0;
	virtual std::string okreslRownanieDiofantyczne () const = 0;
	void rozwiazRownanieDiofantyczne ();
	virtual std::string ustawWielomianR () const = 0;
	virtual std::string ustawWielomianS () const = 0;
	virtual std::string ustawWielomianT () const = 0;
	void wyznaczWartoscSterujaca ();
protected:
	unsigned int s_k;
	unsigned int s_stA;
	unsigned int s_stB;
	unsigned int s_stC;
	std::string s_stF;
	std::string s_stG;
	std::string s_R;
	std::string s_S;
	std::string s_T;
	std::string s_rownDiof;
};

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

AlgorytmRST::AlgorytmRST (unsigned int k, unsigned int stA, unsigned int stB, unsigned int stC) 
	: s_k(k), s_stA(stA), s_stB(stB), s_stC(stC)
{
}

AlgorytmRST::~AlgorytmRST () {
}

void AlgorytmRST::symuluj (double wZad, double y) {
	identyfikujObiekt ();
	
	s_stF = okreslStopienF ();
	s_stG = okreslStopienG ();
	std::clog << "Stopnie wielomianow pomocniczych : stF=" << s_stF << ", stG=" << s_stG << std::endl;
	
	s_rownDiof = okreslRownanieDiofantyczne ();
	std::clog << "Okreslono rownanie diofantyczne jako : " << s_rownDiof << std::endl;
	
	rozwiazRownanieDiofantyczne ();
	
	s_R = ustawWielomianR ();
	s_S = ustawWielomianS ();
	s_T = ustawWielomianT ();
	std::clog << "Okreslenie nowej postaci wielomianu R : " << s_R << std::endl;
	std::clog << "Okreslenie nowej postaci wielomianu S : " << s_S << std::endl;
	std::clog << "Okreslenie nowej postaci wielomianu T : " << s_T << std::endl;

	wyznaczWartoscSterujaca();
}

void AlgorytmRST::identyfikujObiekt () {
	std::clog << "Identyfikacja modelu obiektu : wielomiany A, B, C" << std::endl;
}

void AlgorytmRST::rozwiazRownanieDiofantyczne () {
	std::clog << "Rozwiazanie rownanie diofantycznego : " << s_rownDiof << std::endl;
}

void AlgorytmRST::wyznaczWartoscSterujaca () {
	std::clog << "Symulacja regulatora zgodnie z rownaniem Ru(i)=-Sy(i)+Tw(i)" << std::endl;
}
Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11