Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМКД_ОБП_Урдабаева.doc
Скачиваний:
113
Добавлен:
01.03.2016
Размер:
1.29 Mб
Скачать

Бүтін сандармен жұмыс жасайтын объект-калькулятор.

class TInt{

int EndState;

public

int x;

Int(int x1);

virtual ~Int();

virtual void GetEvent (TEvent &event);

virtual int Exicute();

virtual void HandleEvent (TEvent& event);

virtual void ClearEvent (TEvent& event);

int Valid();

void EndExec();

int GetX();

void SetX (int newX);

void AddY (int Y);

};

Негізгі әдістердің жүзеге асу мүмкіндіктерін қарастырамыз.

void TInit::GetEvent(TEvent &event)

{char* OpInt = “+-*/=?q”; // жолда операциялар коды бар

char s[20];

char code;

cout<<‘>’;

cin>>s; code = s[1];

if(Test(char code,char*OpInt) // Test функциясы code символы OpInt жолына //кіретіндігін тексереді

{event.what = evMessage;

swith(code)

{case ‘+’: event.command=cmAdd;

break;

case‘q’: event.command = cmQuit;

break;

}

//екінші параметрді белгілеу, оны int типіне айналдыру және А өрісіне меншіктеу

};

else event.what= evNothing

};

int TMyApp::Execute()

{do{endState=0;

GetEvent(event); //оқиғаны алу

HandleEvent(event); //оқиғаны өңдеу

if(event.what!=evNothing) //оқиға өңделмей қалды

while(!Valid());

return endState;

}

void TInt::HandleEvent(TEvent& event)

{

if( event.what == evMessage)

{

switch( event.message.command )

{

case cmAdd:AddY(event.A);

СlearEvent( event );

break;

case cmQuit:EndExec();

СlearEvent( event );

break;

};

};

}

int TInt::Valid();

{ if (EndState == 0) return 0;

else return 1;

}

void TInt::ClearEvent(TEvent& event)

{

Event. what:= evNothing;

}

void TInt::EndExec()

{

EndState= 1;

}

void TInt::AddY(int Y)

{

x+=Y;

и т.д.

void main()

{

TInt MyApp;

MyApp.Execute();

}

Жұмысты орындау реті.

1. Қосымшада келтірілген мысалды талдау. Келесі срақтарға жауап беру:

а) мұндағы кластардың иерархиясы қандай?

б) мұндағы объектілердің иерархиясы қандай?

в) операцияның аргументтері КАЛЬКУЛЯТОРҒА қалай беріледі? Олар қайда сақталады? ҚОСУ, АЗАЙТУ және т.б. амалдар оған қалай қолжетімді?

г) оқиға топпен қалай өңделеді?

д) TEvent оқиғасының барлық маршруттары қандай?

е) барлық класстардың HandleEvent қалай орындалады?

2. Оқиғаны өңдейтін объектілер тобын таңдау (бұл қосымшада келтірілген объектілер болуы мүмкін емес).

3. Таңдалған объектілер үшін қолданушының командасы бойынша орындалатын операциялар тізімін анықтау.

4. Командалық жолдың түрін анықтау<операция коды><параметрлер>. Сұрақтарды шешу:

Операциялар қалай кодталады? Қандай параметрлер беріледі?

5. Объектілердің иерархиясын анықтау, егер жаңа объектілер (объектілер тобын) қосу қажет болса.

6. егер жаңа класс қосу қажет болса, класстар иерархиясын анықтау.

7. Программада қандай объект қосымша қызметін атқаратынын анықтау. Қажет болған жағдайда класстар иерархиясына TApp класын қосу. Оқиғаны өңдеудің негізгі циклын ұйымдастыратын Execute әдісі қай класта болатынын анықтау.

8. Оқиғаны өңдеуге қажет әдістерді анықтау және жүзеге асыру.

9. (main) негізгі функциясын жазу.