Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Бүтін сандармен жұмыс жасайтын объект-калькулятор.
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 класын қ осу. Оқ иғ аны ө ң деудің негізгі циклын ұ йымдастыратын E xecute ә дісі қ ай класта болатынын анық тау. 8. Оқ иғ аны ө ң деуге қ ажет ә дістерді анық тау жә не жү зеге асыру. 9. (main) негізгі функциясын жазу.
|