ОББН лекция 2. Си программалау тіліне кіріспе Жоспар
Скачать 128.11 Kb.
|
С++ тілінде объект мән ретінде қарастырылады. Программа айнымалыларды өмірде нақты кездесетін мәліметтерді сақтау үшін қолданады, мысалы файлдар немесе студенттер жайындағы мәліметтер. Объектіге –бағытталған программалауда жүйені құратын заттарға және оларға қолданылатын операцияларға көңіл бөлеміз. C++ тілінде класты оның объектілерін анықтау үшін қолданады. Класс ұғымына өзіңізге қажетті информацияны беріп, құрып - алып қолдануымыз қажет. Сондықтан бір программада қолданылған класты екінші программада толықтырып қолдануға болады. Класс программада мәліметтер мен осы мәліметтерге орындалатын операцияларды, функцияларды, топтауға мүмкіндік береді. Структура сияқты, класс class қызметші сөзінен басталады, оның жеке атауы болады, одан кейін фигуралық жақшаның ішінде, бір немесе бірнеше элементтер орналасады: class class_name { intdata_member;//мәліметтерэлементі voidshow_member(int);//функция-элементі }; Класты анықтағаннан кейін осы класс типті айнымалыны анықтауға болады(оларды объектілер дейміз),мысалы: class_name object_one, object_two, object_three; Келесі анықтамада employee класын құрамыз, онда мәліметтермен бірге тәсілдер де анықталған: class employee { public: charname[64]; longemployee_id; floatsalary; void show_employee(void) { cout<<"қызметші:"< }; Берілген кластың үш айнымалысы және бір функция-элементі бар. Сипаттау барысында {public), қызметші сөзі қолданылғандықтан, программада оның кез-келген элементін қолдану үшін нүкте операторы қоданылады. Класты анықтағаннан кейін негізгі программада осы класс типті объектіні сипаттаймыз: employee worker, boss, secretary; //---------> классайнымалылары (объектілер) Келесі программада employee типті екі объект алынады. Нүкте операторын қолдану арқылы программада мәліметтер меншіктеледі. Оларды программада show_employee іс-әрекеті бойынша баспаға шығарамыз: #include #include class employee { public: charname[64]; longemployee_id; floatsalary; void show_employee(void) { cout<<"қызметшіі:"< }; void main(void) { employeeworker,boss; strcpy(worker.name,"Арман"); worker.employee_id=12345; worker.salary=25000; strcpy(boss.name,"Азамат"); boss.employee_id=101; boss.salary=101101.00; worker.show_employee(); boss.show_employee(); } Алдыңғы мысалда employee функциясы кластың ішінде анықталды. Кластағы анықталатын мәліметтер мен функицялар көбейген сайын оның ішіндегі функцияларды сипаттау қиындай түседі. Сондықтан, қазір, класс ішінде функция прототипін жариялап, функцияны кластың сыртында сипаттау ұйғарылған. Мысалы: class employee { public: charname[64]; longemployee_id; floatsalary; void show_employee(void); |————————> функция прототипі }; Әртүрлі кластар аттас функцияларды қолдануы мүмкін, сондықтан анықталатын функция мен класты қолдану аясы кеңауқымды болатын (::) оператор арқылы байланыстырамыз.: void employee:: show_employee (void) //--------------> класс атауы { сout << "қызметші: " << name << endl; cout<<"қызметшіномері:"< Енді осы программаны толық келтірейік: #include #include class employee { public: charname[64]; longemployee_id; floatsalary; voidshow_employee(void); }; voidemployee::show_employee(void) { cout<<"қызметші:"< void main(void) { employeeworker,boss; strcpy(worker.name,"Арман"); worker.employee_id=12345; worker.salary=25000; strcpy(boss.name,"Алмас"); boss.employee_id=101; boss.salary=101101.00; worker.show_employee(); boss.show_employee(); } Келесі программа PEDIGREE.CPP dog класын құрастырады, онда бірнеше мәліметтердің өрісі және show_breed функциясы бар. Программада функция кластың сыртында анықталады. Одан кейін программа dogтипті екі объект құрады және әрбір ит жайында информация шығарып береді: #include #include class dogs { public: charbreed[64]; intaverage_weight; intaverage_height; voidshow_dog(void); }; void dogs::show_breed(void) cout<<"Порода:"< void main(void) { dogshappy,matt; strcpy(happy.breed,"Долматин"); happy.average_weight=58; happy.average_height=24; strcpy(matt.breed,"Колли"); matt.average_weight=22; matt.average_height=15; happy.show_breed(); matt.show_breed(); } Объект дегеніміз – мән, программада оларға әртүрлі операциялар қолданылады. Программада объектілер кластар арқылы беріледі. Класс, құрылымға ұқсас, оның элементтері бар. Класс элементтерінде информация сақталынуы немесе олар мәліметтерге қолданылатын функциялар болуы мүмкін. Әрбір кластың ерекше атау болады. Класс анықталғаннан кейін кластың объектілерін сипаттауға болады. Объектілердің элементтерін қолдану нүкте операциясы бойынша іке асырылады. Сонымен, класта мәліметтер мен тәсілдер (функция) бар. Класты программада қолдану үшін оның қандай информацияларды сақтайтынынжәне осы тәсілдерге белгілі бір іс-әрекеттерді орындауға болатын тәсілдерін білу қажет. Программа тәсілдердің тек атқаратын қызметін ғана білу қажет. Бұл информацияларды жасыру процесі бойынша іске – асырылады. Онда мүмкіндігінше классты программада қолдануға қажетті ең аз информация беріледі. Бұл программалау тілдерінде дербес және жалпы эелементтер бойынша іске – асырылады. Алдыңғы тақырыптарда құрылған класстарда public қызметші сөзі класстың жалпы элементтерін, яғни барлық жерде көрінетін элементтерін сипаттауға қолданылды. Сондықтан, программада нүкте операторы арқылы, оның кез-келген элементтерін қолдана аламыз: class employee { public: charname[64]; longemployee_id; floatsalary; voidshow_employee(void); } Классты құру барысында осы класста ғана қолданылатын элементтер болады. Бұндай элементтер дербес(private) деп аталады, оларда программада міндетті түрде жасыру қажет. Егер public қызметші сөзі қолданылмаса , онда C++ класстың барлық элементтері дербес деп танылады. Яғни, программада класстың қолдана алмаймыз. Дербес элементтерді класстың өзінің ішкі элементтері ғана қолдана алады. Классты құру барысында оның элементтерін мүмкіндігінше дербес және жалпы деп бөлу қажет: class some_class { public: intsome_variable; voidinitialize_private(int,float);//———>Жалпыэлементтер voidshow_data(void); private: intkey_value;//—————————————>Дербесэлементтер floatkey_number; } Көріп отырғанымыздай, public және private арқылы қандай элемент жалпы, ал қайсысы дербес болатынын оңай анықтауға болады. Программада жалпы элементтерді нүкте операторы арқылы қолдануға болады: some_classobject;//объектқұру object.some_variable=1001; object.initialize_private(2002,1.2345); object.show_data() Төмендегі программа INFOHIDE.CPP класс жалпы және дербес элементтерін қолдануға арналған. Программада employee типті объект анықталады: class employee { public: intassign_values(char*,long,float); voidshow_employee(void); intchange_salary(float); longget_id(void); private: charname[64]; longemployee_id; floatsalary; } Класста қорғалатын элементтер дербес элемент ретінде сипатталады. Программа мәліметтердің элементтерін қолдану үшін интерфейстік функциялар қолданады: #include #include class employee { public: intassign_values(char*,long,float); voidshow_employee(void); intchange_salary(float); longget_id(void); private charname[64]; longemployee_id; floatsalary; ); int employee::assign_values(char *emp_name, long emp_id, float emp_salary) { strcpy(name,emp_name); employee_id=emp_id; if (emp_salary < 50000.0) { salary=emp_salary; return(0);//Успешно } else return(-1); // Недопустимый оклад } void employee::show_employee(void) { cout<<"Служащий:"< int employee::change_salary(float new_salary) { if (new_salary < 50000.0) { salary=new_salary; return(0); } else return(-1); // Жалақы дұрыс емес } long employee::get_id(void) { return(employee_id) ; } void main(void) { employee worker; if (worker.assign_values("Happy Jamsa", 101, 10101.0) == 0) { cout<<"Қызметшіжалақысы"< if (worker.change_salary(35000.00) == 0) { cout<<"Жаңажалақы"< } } else cout<<"Жалақыдұрыскөрсетілмеген"< Қорыта келгенде: Класс элементтері жалпы және дербес болуы мүмкін. Программада жалпы элементтерді нүкте операторы арқылы қолданамыз. Класстың дербес элементтерін осы класстың тәсілдерін қолдану арқылы ғана пайдалана аламыз. Үнсіз келісім бойынша барлық элементтер деп саналады. Программада дербес элементтерге мән меншіктеу не оларды қолдану интерфейстік функциялар арқылы іске асырылады. Әртүрлі келеңсіз жағдайларды болдырмау үшін программа құру барысында класспен оның әрбір элементін кеңауқымды (::) оператор арқылы байланыстыруға болады, мысалы employее::name. |