Pytanie o MVA i poprawność myślenia
Ostatnio zmodyfikowano 2016-03-21 13:02
Alan468 Temat założony przez niniejszego użytkownika |
Pytanie o MVA i poprawność myślenia » 2016-03-19 23:17:52 Dzień Dobry. wieczór Chciałem się skonsultować czy podany niżej kod (niedokończony) spełnia (zmierza w kierunku spełnienia) założeń MVC ,nie jest dokończony gdyż ponieważ wolę się upewnić czy dobrze myślę ,a jeśli nie to po co utrwalać błędy ... . Rozumiem że trzeba podzielić projekt na 3 typy klas Model ,Widok i Kontroler. Pierwsze dwa o sobie nie wiedzą ,trzeci łączy pozostałe. To tan kod: #include <iostream> #include <conio.h> #include <string>
#define TAX 5
using namespace std;
class BankModel { private: float fStatus; float fDebet; public: BankModel() : fStatus( 0 ) , fDebet( 0 ) { } ~BankModel() { } void setNewMaxDebet( float fNewMaxDebet ) { fDebet = fNewMaxDebet; } void addCashToAccount( float fCashToAdd ) { if( fCashToAdd > 0 ) fStatus += fCashToAdd; } float takeCashFromAccount( float fCashToTake ) { if( fCashToTake > 0 ) { if(( fStatus - fCashToTake ) >= fDebet ) { fStatus -= fCashToTake; return fCashToTake; } else { float fAvilableCash = fStatus +( - fDebet ); fStatus -= fAvilableCash; return fAvilableCash; } } } float getAccountStatus() { return fStatus; } float getAccountDebet() { return fDebet; } void takeTaxForBank( float fTax ) { takeCashFromAccount(( fStatus * fTax ) / 100 ); } int readInt() { int iInt; cin >> iInt; return iInt; } int readFloat() { float fFloat; cin >> fFloat; return fFloat; } };
class BankView { private: public: void iBankMenu() { cout << endl; cout << "1 - Add cash to account." << endl; cout << "2 - Take cash to account." << endl; cout << "3 - Change max debet." << endl; cout << "4 - Check account status." << endl; cout << "5 - Take taxes." << endl; cout << "6 - Exit." << endl; cout << "What to do: "; } void printAccountStatus( float fCash, float fDebet ) { cout << "\tStatus: " << fCash << " ,Debet: " << fDebet << endl; } };
class BankController { private: BankModel * bBankM; BankView * bBankV; bool bExitProgram = false; void printAccountInformation() { bBankV->printAccountStatus( bBankM->getAccountStatus(), bBankM->getAccountDebet() ); } int bankMenuChoice() { bBankV->iBankMenu(); return bBankM->readInt(); } public: BankController( BankModel * BankModel, BankView * BankView ) : bBankM( BankModel ) , bBankV( BankView ) { } void run() { do { switch( bankMenuChoice() ) { case 1: cout << "Cash to add: "; bBankM->addCashToAccount( bBankM->readFloat() ); cout << endl; break; case 2: cout << "Cash to take: "; bBankM->takeCashFromAccount( bBankM->readFloat() ); cout << endl; break; case 3: cout << "Set new max debet: "; bBankM->setNewMaxDebet( bBankM->readFloat() ); cout << endl; break; case 4: printAccountInformation(); break; case 5: cout << "Teke tax: "; bBankM->takeTaxForBank( TAX ); cout << endl; break; case 6: bExitProgram = !bExitProgram; break; } } while( !bExitProgram ); } };
int main() { BankModel * bBankM = new BankModel(); BankView * bBankV = new BankView(); BankController * bBankC = new BankController( bBankM, bBankV ); bBankC->run(); delete bBankC; delete bBankV; delete bBankM; _getch(); return 0; }
|
|
DejaVu |
» 2016-03-21 13:02:16 |
|
« 1 » |