
- •Студент пәнінің – оқу әдістемелік кешені
- •Алматы 2007
- •1.Пәннің оқу бағдарламасы – syllabus
- •1.1 Оқытушылар жөнінде мәліметтер:
- •1.3 Пререквизиттер
- •1.4 Постреквизиттер
- •1.5 Пәннің мақсаты және міндеттері
- •1.6 Тапсырманың түрлері мен тізбегі және оның орындалу графигі
- •1.7 Әдебиеттер тізімі
- •1.8 Бақылау және білім бағасы
- •Студент білімінің бағасы
- •1.9 Курстың процедурасы және саясаты
- •2. Белсенді үлестірмелі материалдардың мазмұны
- •2.2. Дәрістік сабақ конспектілері
- •Басқару үрдістері
- •Жобаның жоспары
- •Жұмыс графигі және желілік диаграммалар
- •Қауіптерді басқару
- •Өтініш анализі үрдісінің схемасы
- •Тапсырыс беруші өтініштерінің сипаттамасы (с-талаптар)
- •Жылдам прототиптеу және жүзеге асырудың зерттелуі
- •Өтініштер анализі: детальдық талаптардың қосылуы
- •Жобалаудың модельдері, каркастар және үлгілері
- •Архитектура түрлері және олардың модельдері
- •Архитектура таңдау үрдісі
- •Жүйелік диаграммасы
- •Мәліметтер ағыны диаграммасы.[17]
- •Алгоритмдердің спецификациясы
- •Объекттердің объекттері мен класстары
- •Объекті-бағытталған жобалау үрдісі
- •Объектлерді анықтау
- •Архитектура моделдері
- •Атаулар кеңістігі.
- •8.1 Сурет Интерфейстің пиктограмма формасындағы көрсетілімі.
- •8.2 Сурет Интерфейс көрсетілімінің тәріс формасы.
- •Орналастыру диаграммасы
- •8.3 Сурет. Компаненттердің орналасу моделденуі.
- •Қолданбалы интерфейсті жобалаудың қағидалары
- •Қолданушының өзара қатынасы
- •Ақпаратты көрсету
- •Қолданушыны қолдаудың құрылымы
- •Қателер туралы хабарлар
- •Анықтамалық жүйені жобалау
- •Қолданушының іс – қағазы
- •Интерфейсті бағалау
- •Программалық қамтамассыздандыру тестілеуі.
- •Құнның конструктивті моделі
- •Сақтау жүйесінің құрылымы
- •Программалық қамтаманы қоса ілестіру
- •Ілестіру процесі
- •2.3 Лабораториялық жұмыстардың жоспарлары
- •Лабораториялық сабақтардың жоспарлары
- •Қолдану бизнес - түрлерінің диаграммасы
- •Қызмет диаграммасы
- •Лабораториялық жұмыс орындалу реті
- •Қолдану жүйелік түрлерінің егжей-тегжейін ашуы
- •Қолдану түрлерінің диаграммасы
- •Лабораториялық жұмыстың орындалу реттері
- •Статикалық модельдері
- •Диаграммаларда күйлердің болуы
- •Динамикалық модель
- •Әрекеттестіктердің диаграммалары
- •Лабораториялық жұмыс орындалу реті
- •2.4 Оқытушы жетекшілігіндегі студенттердің өзіндік жұмысының сабақ жоспары (соөж) (45 сағат)
- •Оқытушы көмегінсіз студенттік өзіндік жұмысының сабақ жоспары(сөж)
- •2.6 Курстық жұмыс
- •Жүйе жұмысының сценариі
- •Курстық жұмыстың орындалу мазмұны Талапатарды қою
- •Талаптардың бизнес –моделі
- •Бизнес-варианттар қолдану моделі
- •Бизнес-класс моделі
- •Талаптарды сипаттау құжаты
- •Талаптар спецификациясы
- •Күйлер спецификациясы
- •Кластарды моделдеу
- •Клас-мәндерді анықтау ережелері
- •Ассоциацияларды моделдеу
- •Агрегациялар мен композициялар қатынасын моделдеу
- •Жалпылау қатынастарын моделдеу
- •Объектілерді моделдеу
- •Күй спецификациясы
- •Қолдану варианттарын моделдеу
- •Қызмет түрін моделдеу
- •Өзара әрекеттесуді моделдеу
- •Ашық интерфейстерді моделдеу
- •Күй өзгеруінің спецификациясы
- •Қолданушы интерфейсін жобалау
- •Қолданушы интерфейсінің моделі
- •Курстық жұмыстың орындалу мазмұны
- •Студент пәнінің – оқу әдістемелік кешені
Объектлерді анықтау
ООД принциптерінің бірі болып, негізгі объектлерден басқа - класс объектлерінің тапсырмасы болып табылады. Класс объектлері жобалау кезеңінде қасиеттері, операциялары және өзара әрекеттері жағынан толық суреттеледі.
Класс объектлерінің анықтамасына көптеген әдістер сәйкес келеді:
Жүйенің грамматикалық анализін қолдану.
Оқиғалар бойынша объектлер негізінде қолдану.
Әдісті қолдану, яғни өңдеуші әуелі жүйенің мінез-құлқын анықтайды, содан кейін жұмыстың әртүрлі режимдеріне жауап беретін жүйе компаненттері анықталады, бұл кезде берілген жүйені кім жүзеге асырады және ынталандыры, соларға негізгі көңіл бөлінеді.
Жүйені қолдану сценариіне негізделген әдісті қолдану. Осыдан әрбір сценарий үшін кейбір объектлер, операциялар және атрибуттар ынталандырылады.
Архитектура моделдері
Жүйелік архитектураның моделдері жүйені құрайтын класс объектлері мен объектлерді және бұл объектлер арасындағы өзара қатынастарды көрсетеді. Мұндай моделдер жүйенің талаптарына және оның жүзеге асуына қызмет етеді, яғни абстракті түрде болу керек және бір уақыт ішінде жеткілікті ақпаратты санын құрау керек. Демек, жобалау үрдісінде қандай моделдер екрек және олардың деталдауының қандай деректерәрежеде екенін шешу маңызды.
Жүйелік архитектураның объекті-бағытталған моделдер типі екеу:
Класс объектлері жалпылау, тәуелділік және агрегаттау терминінде жүйенің статикалық құрылымын суреттейтін статикалық моделдер.
жүйенің динамикалық құрылымын және жүйе объектлері арасындағы өзара әрекеттер: сервиске сұраныс объектлерінен құралған тізбек түрінде суреттелетін динамикалық моделдер.
Жиыннан UML моделдеу тілін қолдайтын моделдің үш типін қарастырайық:
Ішкі жүйе моделдері – логикалық топталған объектлерді көрсетеді. Олар кластар диаграммасы көмегімен ұсынылған, яғни әрбір ішкі жүйе пакет түрінде белгіленеді. Ішкі жүйе моделдері статикалық болып табылады.
Тізбектелген модел - объектлер арасындағы өзара әрекеттер тізбегін көрсетеді. Олар UML-де тізбектелген диаграмма және кооперативті диаграмма көмегімен көрсетіледі. Бұл динамикалық модел.
Ақырғы автомат моделі – айқын оқиғалар жауабына бөлек объектлер күйінің өзгерісін көрсетеді. UML-де олар күй диаграммасы түрінде көрсетілген. Ақырғы автомат моделдері динамикалықболып табылады.
Басқа моделдерге келесілер жатады: қолдану түрлерінің моделдері, объектлер моделі, жалпылау және мұрагерлік моделдері, агрегаттау моделдері.
Объекті-бағытталған жобалауда табу мен пәндік облыстың құрылымдық және мінез-құлықты нәзіктіктерді жүйелендіру үлкен роль атқарады. Бұл мақсат үшін қазіргі кезге сай тәілдердің бірі болып, Дуг Розенберг пен Кендил Скотт жасаған ICoNIX үрдісі қызмет етеді. Үрдістің әдістемесі кластар арасында мінез-құлықты таратуға негізделген. Бұл үшін жобалаудың төрт кезеңі қолданылады: пәндік облысты моделдеу, қолдану түрлерінің моделдері, жарамдылық анализі және тізбектелген диаграмманың құрылуы.
Осылайша, жүйені жбалаудағы объекті-бағытталған әдістің басты артықшылығы, өзгерістерді жүйелік архитектураға енгізу тапсырмасын қысқартуда.
Негізгі әдебиеттер – 7[243-263], 2[384-400],
Бақылау сұрақтары және жаттығулар:
Неге жүйені жобалау кезінде әдісті қолдану, жүйелік архитектураны құруға әкеп соқтырады?
Обект пен класс объектсінің айырмашылығын мысалдан көрсетіңіз?
Қандай шартпен объектлері паралелді орындалатын жүйені өңдеуге болады?
“Университет курсына студенттерді тіркеу”, “Интернет-магазин” жүйелеріндегі мүмкін объектлерді анықтаңыз.
4-жаттығудағы анықталған объектлер үшін С#, C++ тіліндегі нақты интерфейс анықтамасын жазыңыз.
“Университет курсына студенттерді тіркеу” жүйесіне тізбектілік диаграммасын құрыңыз.
“Интернет-магазин” жүйесіне кластар диаграммасын құрыңыз.
8-Дәріс.Объекті-бағытталған ПРОГРАММАЛАУ ТЕХНОЛОГИЯСЫ-НЫң КОНЦЕПЦИЯСЫ
«Клиент – сервер» технологиясы бойынша класс әдістерін анықтау класс анықтамасынан тыс орналастырған жөн. Көру облысының «::» рұқсат ету операторы арқылы компиляторға берілген анықталатын әдіс қандай класқа қатысты екендігін хабарлайды, мысалы:
int Classid:: f2 (int х)
{ әдіс денесі }
Класс анықтамасы берілген класс объектілерін құрмайды. Объектілер оларды анықтау жолымен ғана құрады, мысалы:
Classid obj1, obj2, obj Array [10];
Класс объектісінің өлшемі кластың статикалық емес мүше берілгендерінің өлшемдер қосындысымен жадыда анықталады. Класс әдістері класс объектісі үшін бөлінген жады облысының орнын алмайды.
Бірнеше файлдардан тұратын бағдарламалық жобалармен жұмыс жасағанда класс анықтамасы берілген класс объектілері қолданатын немесе оның әдістері анықталатан файлдарда болуға міндетті. Сондықтан класс анықтамасын арнайы түрде ол қажет болып табылатын файлдарда #include дерективасы көмегімен қосылатын тақырыптық файлға (хедер-файл) орналастырылады. Егер класс әдісінің анықтамасы анықталудан тыс орналасса, онда ол міндетті түрде өзі қолданылатын файлдарда анықталған болуы керек. Мұндай әдістің анықтамасы класс анықтамасымен бірге тақырыптық файлда болуы керек.
Белгілі
бір класс объектісінің ашық мүшелеріне
қатынауға рұқсат алуды тура «.» және
жанама « » таңдау операторлары көмегімен
жүзеге асырылады.
C++ тілінде обьектілерді жою мен инициализациялау жұмыстарын орындайтын, обьектілердің жойылуы мен құрылуы кезінде автоматты түрде шақырылатын, кластың арнайы әдістері сәйкесінше конструкторлар мен деструкторлар деп аталады. Класта бірнеше конструкторларды құруға болады. Әрбір конструктордың өзінің басқалардан айырмашылығы бар параметрлері болады . Параметрлері жоқ конструктор үнсіздік конструкторы. Деструктор әрқашан жалғыз және параметрлері болмайды.
Тек ашық мүшелері бар және конструкторы жоқ класс обьектісі мәндер тізімі арқылы жай құрылымдық айнымалы сияқты инициализациялануы мүмкін.
Егер класс конструкторларының біреуі де ашық функция – класс мүшесі болып табылмаса, онда мұндай кластың мүшелері құрыла алмайды. Мұндай кластар басқа кластар (мұрагерлік) үшін базалық кластар (родительдік) болып табылады.
Класс обьектісін құрған кезде ол үшін сәйкес келетін конструктор автоматты түрде шақырылады. Обьекттің мүше-берілгендерінің (обьект айнымалыларының) инициализациясы конструктордың орындалуы сияқты инициализациясы кезінде де орындала алады.
Конструктор параметрі өз класы бола алмайды, бірақ көшіру конструкторы сияқты оған жасалған сілтеме болуы мүмкін.
Кластың компонент-берілгенінің жалғыз данасы болуы үшін және кластың жаңа әрбір кластың обьектісінің құрылуы кезінде басып шығарылмауы (не тиражировался) үшін ол класты статикалық сияқты анықтау керек, яғни Static атрибуты болуы керек.
Кластың статикалық компоненттік функциялары нақты обьект атауы жоқ кластың Static берілгендеріне қатынасуды қамтамасыз етеді. Кластың Static функциялары функциялардың жай (статикалық емес) компоненттік барлық негізгі ерекшеліктерін сақтайды.
Класқа қатысты функция нақты обьекттің берілгендерін өңдеу үшін шақырған кезде бұл функцияға автоматты және айқын емес функция шақырылған обьект көрсеткіші беріледі. Бұл көрсеткіштің бекітілген this аты бар және бағдарламалаушы үшін байқаусыз кластың әрбір функциясы келесі түрде анықталған:
класс_аты*const this=өңделетін_обьекттің_адресі;
this көрсеткішін қолдану тиімділігі көрінетін жағдайлар:
-берілген класс компонентінің аты класс функциясының формальды параметрінің атымен сәйкес келгенде;
-класс функциясының денесінде айқын түрде бұл функция шақырылған обьект адресін көрсету қажет болғанда;
-функция параметрі ретінде кластың бұл функция атын жазған кезде обьекттің нақты атына жол берілмегенде (керек обьектіге мұндай функция сілтемесін немесе көрсеткішін берудің орнына).
Контейнерлі кластар.
Контейнер – бұл белгілі бір түрде ұйымдастырылған басқа объектілер жиыны құрайтын объект. Контейнерлер анық типтің объект коллекцияларын басқару үшін арналған. Контейнерлер мысалдары массивтер (векторлар және ассоциативті массивтер) және тізімдер (жекеленген тізімдер, кезектер, стектер) болып табылады. Контейнерге объектілерді қосуға болады және оларды одан жоюға болады. Контейнермен жұмыс, стандартты библиотекадағы контейнерлі кластар көмегімен қолдау табады. Бұл мүмкіндік класс үлгілері арқылы жүргізіледі. Контейнерлерді қолдану бағдарламалар сенімділігін жоғарлатуға, олардың тасмалдануымен бір мезгілдегі уақыттың кемуі мен өндіру құны бар әмбебаптылыққа мүмкіндік береді.
STL контейнерлі кезекті және ассоциативті деп бөлінеді. Кезекті контейнерлер үздіксіз кезектілігі түріндегі бір типті объектілердің соңғы санын анықтауда қамтамасыз етеді және келесі түрлері бар. Векторлар (vector); екі жақты кезектер немесе басқаша айтқанда деректер (deque); тізімдер (list); стегтер (stack); кезектер (quere ); приоритеттері бар кезектер (priority-quere).
Ассоциотивті кезектер сұрыптаудың белгілі критериі бойынша оның мәніне тәуелді объект(элемент) позициясы бар сұрыпталған коллекцияларды береді. Ассщциотивті контейнерлер кілт бойынша деректермен тез қатынауды қамтамасыз етеді және балансталған ағаштар негізінде құрылған. Ассоциотивті контейнерлердің келесі түрлері бар: сөздіктер(map);көшірмелері бар сөздіктер (multimap); көпшіліктер (set); көтермелері бар көпшіліктер (multiset); биттік көпшіліктер (bitset).
Түрлі контейнерлі кластардың ортақ қасиеттері көп және бұл өте қолайлы. Контейнерлі кластардың стандартталған интерфейсі бар.Бұүл түрлі контейнерлі кластардағы бір атты деректер мүшелер мен операциялардың мағынасы бірдей екендігін білдіреді және контейнерлердің барлық типтеріне қолданамыз.
Итераторлар мен функциональды объекттер.
Итераторлар ұйымдастыру әдістері мен әрекеттер типіне тәуелсіз деректердің әрбір типіне қатынау және кезекті қарастыру құрылғылары болып табылады. Сөйтіп, итератор жалпыланған итератор болып табылады, және итератор мен көрсеткіш семантикасы бірдей STL –да итераторлар контейнерлі кластар, ағындар, мен буферлі ағындармен жұмыс істеу үшін қолданылады.
Деректер түрлі түрде ұйымдастырылуы мүмкін (массив, тізім, ағаш және тағы басқа) әрбір кезектілік түрі үшін белгілі операциялар жиынын қолдайтын итератордың өз типі талап етіледі (кіріс, шығыс,тура, екі бағытты, және кезекті қатынау). Итераторлы адаптерлер бар, мыналарды қолдайтын алгоритмдерді орындауды қамтамасыз ететін арнайы итераторлар: элементтері кері тәртіпте мөлшерден тыс жинау (кері итераторлар), енгізу режимі (енгізу итераторлары), және деректер ағынымен жұмыс (ағынды итераторлар).
Функционалды объект деп функцияны шақыру операциясы орындалған класс типі бар объектті атайды. Жиі түрде функционалды объекттер обънеттерді өңдеу әдістері мен оларды салыстырудың қолданушы контейнерлерін беруге арналған стандартты алгогритмдер параметрлері ретінде қолданылады. Параметр ретінде функционалды объектілер қолданылатын алгоритмдерде функцияғакөрсеткішті қолдануға болады. Bool мәнін қайтаратын функциональды объектілер бар және предикаттар деп аталады. Предикат деп bool мәнін қайтаратын жай функцияны айтады.
Негізгі әдебиет-5[б.9, 981-315], 6[б1.1,6-15], 8[б.14,419-472]
Бақылау сұрақтары
1. Белгілі бір кластың екі обьектісін анықтасақ, онда олар өздерінің мүше-берілгендерінің әртүрлі (бірдей) мәндеріне ие бола ала ма?
2. Жалпыланған бағдарламалаудың технологиясының концепциясы?
3. Контейнерлер дегеніміз не, олар не үшін керек?
4. Итераторлар не үшін арналған?
5. Қандай операциялар итератордың кез келген типі үшін мүмкін болып
табылады?
9- Дәріс. ӘРЕКЕТТЕР АЙМАҚТАРЫ МЕН АТАУЛАР КЕңіСТіКТЕРі
Әрбір бағдарламалық обьекттің орны мен түрі арқылы анықталатын өмір уақыты мен әрекеттер аймағы бар. Әрекеттер аймағының келесі түрлері бар:
блок;
функция прототипі;
функция;
файл;
бағдарламалық жобаның барлық файлдарын шекке қосатын файлдар тобы (әрекеттердің глобалды аймағы) ;
класс;
атаулар кеңістігі (әрекеттердің глобалды аймағының бөлігі) ;
Бағдарламалық обьекттің әрекеттер аймағының барлық бес категориясын қысқаша қарастырып өтейік:
Блок. Блок ішінде анықталған объект локалды болып саналады. Осындай обьекттің әрекеттесуінің аймағы анықталу нүктесінде анықталады және блок аяғында аяқталады. Сақтау класы обьектісінің (автоматты) өмір сүру уақыты оның анықталу мерзімінен басталады және блок жұмысы біткеннен кейін аяқталады. Static (статикалық) спецификаторы бар блок обьектісі өз мәнін блоктың аяқталуынан кейін сақтайды, ал оның өмір сүру уақыты бағдарламаның орындалу уақытымен сәйкес келеді.
Функция прототипі. Функцияның прототиптер (хабарламалар) параметрлер тізімінде көрсетілген идентификаторлардың әрекеттер аймағы ретінде тек функция прпототипі бар. Сондықтан функция параметрлерінің туынды идентификаторларын қолдануға болады және олардың мүлдем жіберіп қоюға болады.
Функция. Функция блогында анықталған бағдарламалық обьектілер қалыпты блокта сияқты әрекеттер аймағы және өмір уақытына иеленеді. Мән бойынша берілетін функция параметрлері әрекеттер аймағы ретінде бүкіл функциясы бар және өмір уақыты- функциясының орындалу уақыты.
Сілтеме бойынша берілетін функция параметрлері функция шақырылуына сәйкес аргументтермен анықталатын өмір уақытымен әрекеттер аймағына, әрине, функция блогы да кірмейді.
Файл. Атаулар кеңістігі немесе класс, функция, кез келген боктан тыс static сақтау класының сипаттауышын қолдану көмегімен анықталған бағдарламалық обьект анықтау нүктесінде басталатын және файл соңында аяқталатын әрекеттре аймағына ие болып табылады. Әрекеттер аймағына енгізілген (ішкі) блоктар қосылады, егер олардың құрамында идентификаторы бірдей болып табылатын қайта анықталған бағдарламалық обьект болмаса. Егер енгізілген блокта бірдей идентификаторы бар қайта анықталған обьект бар болсы, онда бұл жағдайда сыртқы обьект енгізілген блокта көрінбейді, оған, егер глобальды болса (атаулар кеңістігіне немесе кластан, блоктан тыс анықталған ), “::” көріну аймағына өтуді рұқсат ету операциясының көмегімен қатынасуға болады. Мұндай обьекттің өмір уақыты максималды және бағдарламаны орындау уақытына сәйкес келеді.
Бағдарлаамалық жобаның (әрекеттердің глобалды аймағы) барлық файлдарын шегіне қосатын файлдар тобы. Extern (сыртқы) класының сақтау класының сипаттаушысын қолдану көмегімен басқа файлдардағы және жарияланған және атаулар кеңістігі немесе класс, функция, блоктан тыс жобаның файлдарының біреуінде анықталған бағдарламалық обьекттің әрбір осындай файлдарын жариялау немесе анықтау нүктесінде басталатын және файл соңында аяқталатын әрекеттер аймағына ие. Әрекеттер аймағына енгізілген (ішкі) блоктары қосылады, егер олардың құрамында бірдей идентификаторы бар бағдарламалық обьекттің өмір уақыты максималды және бағдарламаны орындау уақытымен сай келеді.
Класс. Статикалық класс мүшелерінен басқа обьект – кластарының мүшелері кластың әрекеттер аймағына иеленеді. Бұл олар класс ішінде ғана орындалатынын білдіреді. Обьект – класс мүшелер өмірінің уақыты обьект-класын анықтау мерзімінен оның бұзылу мерзіміне дейінгі уақытта анықталады. Статикалық мүше-берілгендер мен әдістер глобалды болып табылады және қалыпты статикалық айнымалылар мен функциялармен салыстырғанда осы класс сипаттамасы бар көпфайлды жобаның барлық файлдары үшін рұқсат етілген болып табылады. Статикалық мүше-берілгендер қалыпты глобалды айнымалылар сияқты жоба файлдарының біреуінде анықтау керек. Статикалық мүше-берілгендер және функция-мүшелер бір обьектті құрғанға дейін де рұқсат етілген болады. Оларға «::» операторы арқылы қатынасуға болады.
Атаулар кеңістігі. С++ тілі name space операторы арқылы атаулардың әрекеттер аймағын глобалды бөлігі сияқты нақты түрде беруге мүмкіндік береді. әрбір әрекеттер аймағында атаулар кеңістігі деп аталатындарды айырады. Атаулар кеңістігі –идентификатор әмбебап болып табылатын аймақ. Түрлі атаулар кеңістіігінде идентификаторлар бірдей болуы мүмкін, себебіі сілтемелер шешуші бағдарламадағы идентификатор контексті бойынша жүзеге асырылады, мысалы:
struct Node
{ int Node;
int I;
} Node;
Бұл жағдайда қарсылықтар жоқ,себебі тип атаулары, құрылым айнымалылары мен өрістері атаулардың түрлі кеңістіктеріне қатысты болады.
С++ тілінде атаулар кеңістігінің төрт түрі анықталған , олардың әрбіреуінің шектерінде идентификаторлар әмбебаб болуы керек.
-қолданушымен анықталған типтер, функциялар, айнымалылар (объекттер) идентификаторларға қатысты атаулар кеңістігі және әрекеттердің бір аймақтық шектеріндегі константалардың аталып өтуі. Функциялар идентификатоларынан басқаларының барлығы енгізілген блоктарда қайта анықталуы мүмкін.
бірлестіктер, кластар, құрылымдар, атап өтулер типтерінің атауларын түзетін кеңістік. Бұл атаулар кеңістігінде әрбір осындай идентификатор бір әрекеттер аймағындағы шектерде әмбебап болуы керек.
Атаулардың бөлек атаулары әрбір кластың мүшелерін құрады. Класс мүшесінің аты класс ішінде әмбебап болуы керек, бірақ басқа кластардың мүшелерінің атауларымен бірдей болуы мүмкін.
Белгілер бөлек атаулар кеңістігін түзеді.