Kalkulacka  1.0.0
Jednoduchýkalkulátor
Dokumentace třídy team22::Calc::Equation

Třída reprezentující rovnici. ...

#include <Equation.h>

Diagram dědičnosti pro třídu team22::Calc::Equation
Inheritance graph
Diagram tříd pro team22::Calc::Equation:
Collaboration graph

Veřejné metody

 Equation (LexicalAnalyzer &lexicalAnalyzer, Interpret *interpret)
 
void pushSymbol (char symbol)
 
void sendIdentifiedLex (Lex lex) override
 
void onResultChange (Math::Number result) override
 
void onError (InterpretException exception) override
 
void backSpace ()
 Provede operaci backspace Pokud je rovnice zakončena číslem odstraní poslední číslici jinak poslední lexem (operator) přepočítá rovnici. ...
 
void registrEquationObserver (EquationObserver *equationObservers)
 

Privátní metody

void reComputeResult ()
 
void notifyEquationObserver ()
 
bool isNumberSymbol (char &symbol)
 
void pushLex (Lex *lex)
 

Privátní atributy

std::string numberBuffer
 
std::vector< Lex * > data
 
LexicalAnalyzer lexicalAnalyzer
 
Interpretinterpret
 
std::set< EquationObserver * > equationObservers
 
Math::Number lastResult = {0}
 

Friends

std::stringstream & operator<< (std::stringstream &os, const Equation &equation)
 
std::ostream & operator<< (std::ostream &os, const Equation &equation)
 

Detailní popis

Třída reprezentující rovnici.

Třída přebírá znaky a předává je Lexikálnímu analyzátoru, dále pozoruje Identifikaci Lexému. Při každé změně rovnice třída upozorní své pozorovatele o této změně. Pokud příjme lexem Lex::BS odebere číslici(i beru jako číslici) či operátor z konce rovnice a rovnici přepočítá Pokud příjme lexem Lex::CLEAR rovnice se smaže, Operátory Lex::BS Lex::CLEAR a Lex::EVAL se do rovnice nezapisují. Po Lex::EVAL pokud následuje číslo rovnice začíná tímto číslem a jinak začíná výsledkem předchozí rovnice pokud taková není 0.

Definice je uvedena na řádku 30 v souboru Equation.h.

Dokumentace konstruktoru a destruktoru

Equation::Equation ( LexicalAnalyzer lexicalAnalyzer,
Interpret interpret 
)
Parametry
lexicalAnalyzer
interpret

Definice je uvedena na řádku 117 v souboru Equation.cpp.

Odkazuje se na team22::Calc::LexicalAnalyzer::registrLexCallback() a team22::Calc::Interpret::registrResultCallback().

Dokumentace k metodám

void Equation::backSpace ( )

Provede operaci backspace Pokud je rovnice zakončena číslem odstraní poslední číslici jinak poslední lexem (operator) přepočítá rovnici.

Definice je uvedena na řádku 56 v souboru Equation.cpp.

Odkazuje se na team22::Calc::Interpret::clear(), data, team22::Calc::Lex::getAsNumber(), interpret, team22::Calc::Lex::isNumber(), lastResult, lexicalAnalyzer, numberBuffer, team22::Calc::LexicalAnalyzer::pushSymbol() a reComputeResult().

Používá se v sendIdentifiedLex().

bool Equation::isNumberSymbol ( char &  symbol)
private

Jedná se o znak čísla tedy číslici

Definice je uvedena na řádku 106 v souboru Equation.cpp.

Používá se v pushSymbol().

void Equation::notifyEquationObserver ( )
private

upozorní odebíratele na změnu rovnice

Definice je uvedena na řádku 100 v souboru Equation.cpp.

Odkazuje se na equationObservers.

Používá se v pushSymbol() a sendIdentifiedLex().

void Equation::onError ( InterpretException  exception)
overridevirtual
Parametry
exception

Implementuje team22::Calc::ResultObserver.

Definice je uvedena na řádku 134 v souboru Equation.cpp.

Odkazuje se na data a numberBuffer.

void Equation::onResultChange ( Math::Number  result)
overridevirtual
Parametry
result

Implementuje team22::Calc::ResultObserver.

Definice je uvedena na řádku 129 v souboru Equation.cpp.

Odkazuje se na team22::Math::Number::getImaginary(), team22::Math::Number::getReal() a lastResult.

void Equation::pushLex ( Lex lex)
private

zpracuje příchozí Lexém

Parametry
lex

Definice je uvedena na řádku 124 v souboru Equation.cpp.

Odkazuje se na data.

Používá se v sendIdentifiedLex().

void Equation::pushSymbol ( char  symbol)
void Equation::reComputeResult ( )
private

přepočítá výsledek

Definice je uvedena na řádku 111 v souboru Equation.cpp.

Odkazuje se na data, interpret a team22::Calc::Interpret::sendIdentifiedLex().

Používá se v backSpace().

void Equation::registrEquationObserver ( EquationObserver equationObservers)

Zaregistruje pozorovatele změny rovnice

Parametry
equationObservers

Definice je uvedena na řádku 95 v souboru Equation.cpp.

Odkazuje se na equationObservers.

Používá se v team22::Test::Backend::BackendTester::BackendTester() a SignalManager::SignalManager().

Dokumentace k friends

std::stringstream& operator<< ( std::stringstream &  os,
const Equation equation 
)
friend
std::ostream& operator<< ( std::ostream &  os,
const Equation equation 
)
friend

Dokumentace k datovým členům

std::vector<Lex *> team22::Calc::Equation::data
private

Lexémy tvořící rovnici

Definice je uvedena na řádku 42 v souboru Equation.h.

Používá se v backSpace(), onError(), pushLex(), reComputeResult() a sendIdentifiedLex().

std::set<EquationObserver *> team22::Calc::Equation::equationObservers
private

Pozorovatele

Definice je uvedena na řádku 59 v souboru Equation.h.

Používá se v notifyEquationObserver() a registrEquationObserver().

Interpret* team22::Calc::Equation::interpret
private

Interpret

Definice je uvedena na řádku 54 v souboru Equation.h.

Používá se v backSpace(), reComputeResult() a sendIdentifiedLex().

Math::Number team22::Calc::Equation::lastResult = {0}
private

Poslední výsledek rovnice

Definice je uvedena na řádku 64 v souboru Equation.h.

Používá se v backSpace(), onResultChange() a sendIdentifiedLex().

LexicalAnalyzer team22::Calc::Equation::lexicalAnalyzer
private

Lexikální analyzátor

Definice je uvedena na řádku 49 v souboru Equation.h.

Používá se v backSpace() a pushSymbol().

std::string team22::Calc::Equation::numberBuffer
private

Buffer pro rozepsané číslo číslo v rovnici chceme zobrazovat ješte předním, než je celé identifikováno jako lexem k tomu nám pomáhá tento buffer.

Definice je uvedena na řádku 37 v souboru Equation.h.

Používá se v backSpace(), onError(), pushSymbol() a sendIdentifiedLex().


Dokumentace pro tuto třídu byla generována z následujících souborů: