Абстракциялау
Абстракция – объектіні қарастыруға және қолдануға қажетті маңызды мінездеме.
Абстракция деңгейлері:
- өзін-зі ұстау абстракциясы;
- виртуалды машинаның абстракциясы;
- ерікті абстракция;
- бар болу абстракциясы.
Клиент-объект – басқа объектілердің ресурстарын қолданатын объект.
Контракт – объект-сервердің объект-клиент алдындағы міндетін анықтайды.
Контрактімен орындалатын барлық перация сигнатурамен сипатталады, оған параметрлер типі мен қайтарылатын мәннің параметрі.
Протокол – объектіге қатысты және басқа объектілерге қатысты орындалатын операциялар жиынтығы. Ол абстракцияның сыртқы қозғалысын сипаттайды.
Абстракцияның инварианты – орындалатын шарттардың логикалық жиынтығы.
Операцияның алғышарты – операциямен жоспарланатын инварианттар.
Кейінгі шартты операциялар – операциялармен орындалатын инварианттар.
Инварианттың өзгеруі абстракциямен байласынты контрактыны бұзады. Егер алғышарт бұзылса – клиент, егер кейінгі шарт бұзылса – сервер кінәлі болады. Осындай жағдайда ерекше жағдайлар қарастырылады.
2. Қолжетімділікті шектеу (инкапсуляция)
Қолжетімдікті шектеу абстракциялар арасында кедергі орнатады. Осы принципке сәйкес интерфейс және іске асыру ұғымдары енгізіледі.
Интерфейс объектінің сыртқы көрінісіне шектеу салады және өзін-өзі ұстау абстракциясын көрсетеді.
Іске асыру нәтижеге жету механизмін сипаттайды және абстракциялы бейнені көрсетеді.
3. Модульділік
Модульділік –логикалық байланысқан абстракцияларды модульге топтастыру мақсатында бағдарламаны бөліктерге бөлу және модульдер арасында байланыстарды азайту.
Модульдік принципі әр түрлі деңгейде қолданылады. Бағдарламаны келесі құрамды бөліктерге бөлу:
4. Иерархия
Иерархия – абстракцияның бөлінген және реттелген жүйесі.
Иерархияның екі түрі белгілі:
- Тектілік (класстар иерархиясы);
«Типі» байланыс сөзі қолданылады.
- агрегациялау(объектілер иерархиясы);
«Бар болу» байланыс сөзі қолданылады.
Стандартты тектіліктің екі түрі бар:
- таксономия (қасиеттердің тектелуі );
- партномия (бөліктердің тектелуі).
С++ стандартты тектелу осы екі типті біріктіреді.
Көп жағдайда келесі мәселе туындайды – екі класс арасында қатынасты қалай іске асыру.
Тектіліктің мақсаты:
1) специализация үшін (ішкі типтердің туындауы үшін);
2) спецификация үшін;
3) конструкциялау үшін. Базалық класста жаңадан құрылған класста орындалатын әрекеттер көрсетіледі (яғни жаңа класста базалық әрекетті орындау керек болса).
Мысалы, тізімге негізіндегі жиын.
Тізім – private() спецификаторымен тектелетін базалық класс.
4) кеңейтілу үшін. Жаңа құрылатын класста қажетті
функциялар қосылады немесе интерфейс
кеңейтіледі.
Мысалы, жаңа класста жолдарға арналған интерфейс қосылады.
5) шектеу үшін. Мысалы, тектің негізінде стекті ұйымдастыру.
DEQUE – стек үшін базалық класс (LR екі ұшы бар кезек)
6) араластыру үшін. Жиындық тектілік жағдайы. Бірдей базалық класстар әр түрлі комбинацияда тектелуі мүмкін.
С++ тектілік нұсқалары:
7) жалғыз тектілік. Базалық класс біреу ғана, тектілік қатынасы ағаш түрінде көрсетіледі.
8) жиындық тектілік. Базалық класстар бірнеше, қатынас ациклдық граф түрінде беріледі.
Тектілік мәселелері:
1) көшірілетін базалық класстың өрістері (мысалы үшін В класы);
2) әдістердің және конструкторлардың көшірілуі.
3.Типизация
Типизация – программалау тілінің алғашқы деңгейінің операцияларына класстардың өзара ауысуын шектеу.
Типизиция деңгейіне қарай программалау тілі үш түрге бөлінеді:
- қатаң типизацияланған (Pascal, Ada);
- қатаң емес типизацияланған (java, c++);
- типтелген емес (Smalltalk).
Типизация деңгейімен полиморфизмді жүзеге асыру мүмкіндігі байланысты. Қатаң типтелген тілдерге миноморфизм сәйкес. Басқалар үшін – полиморфизм.
Полиморфизм – әр түрлі класстар объектілерімен жұмыс істеуге бір атауды қолдану мүмкіндігі.
Полиморфизмнің екі түрі қарастырылған:
- қарапайым («класс» типті жалғыз параметр қолданылуы мүмкін);
- жиындық (бірнеше параметрді қолдана алады).
4. Параллельділік
Параллельділік – объектінің актив және пассив жағдайында болу қасиеті.
Объектіге бағытталан програмалаудағы негізгі параллельділік ол үдеріс пен объектінің арасындағы қатынас болып табылады.
Үдеріс – рет-ретімен орындалатын әрекетер тізбегі. Үдерістің төмендегідей түрлері бар:
- тізбектей – бір уақытта бір ғана үдеріс жүргізіледі;
- квазипараллельді – бір уақытта көп үрдістер болуы мүмкін, бірақ орындалатыны біреуі ғана.
- параллельді
ОБП тілдерінің параллельділікті қолданатындар келесі түрге бөлінеді:
- ортогональды – параллельділік құралдары объектілі қатысты емес. (мысалы, Smalltalk80, Concurrent C++).
- біртекті – объектілер параллелінің бір типті болуы.
Параллельділіктің басқа да түрлерінің болуы мүмкін.
Объектінің үдерісті құрылымы:
- статистикалық;
- жалғызүдерісті (мысалы, Actor);
- көпүдерісті ;
- квазипараллельді (мысалы, Hybrid);
- параллельді;
- динамикалық (мысалы, S80);
Параллель объектілердің өзара қатынасы және жүзеге асырылуы төмендегідей жүргізіледі:
- объектіні құру;
- белсендіру;
- синхрондау;
- хабарлама алмасу.
Синхрондау механизмдері:
- Хоар мониторлары – берілімдерді жіберу мүмкінідігін қамтамасыз ететін жоғары деңгейлі механизм;
- Дейкстр семафорлары – ресурстарға қол жеткізу құралдары;
- рандеву – негізгі міндеті есептерді синхрондау (Ada-да жүзеге асырылыған).
Хабаралмасу механизмдері:
- жадының ортақ бөлігі;
- хабарламаны жіберу және қабылдау (тепе-теңдік, бағытталған);
- процедураны алыстан шақыру («клиент-сервер» қағидасымен бағыну).
5.Тұрақтылық
Тұрақтылық – объектінің өзінен жоғары тұрған объектіге тәуелсіз қолданылуы.
Тұрақтылық деңгейлері:
- өрнектің мәнін есептегендегі аралық нәтижелер (өрнек есептелу барысында ғана болады);
- локальды айнымалылар;
- глобальды айнымалылар;
- программаны сынақтау арасындағы объектілер;
- программа версиялары арасындағы объектілер;
- бағдарлама болмаған кездегі объектілер.
10 Программисттың логикалық мәдениетінің информатика-математикалық негіздері
Верификация мен валидацияның негізгі міндеті бағдарламалық қамсызданудың сапасын қадағалау және оның қателерін табуға бағытталған. Мақсаты бір болғанымен тексеру барысында әдістерінде, ережелерінде айырмашылықтары бар.
Верификация жұмыс барысында жасалған артефакттардың бұған дейін жасалған немесе негізге алынған артефакттарға сәйкестігін және олардың ережелерге және стандарттарға сәйкестігін тексереді. Верификация стандарттың нормалары арасында сәйкестігін, ПО қатысты қойлатын талапқа сәйкестігін, жобалық шешілуі, бастапқы кодының, қолданылған құжаттардың сәйкестігін тексереді. Сонымен қатар қойылған талаптар, құжаттар және коды аталып отырған мемлекеттің нормалары мен стандарттарына сай екендігін тексереді.
1. Программаның спецификациясын құру үшін түрлі айнымалы болуы қажет: енгізу, программалық, шығару айнымалылары.
Енгізу айнымалылары алғашқы деректерді, программалық айнымалылары арқылы нәтижелерді, ал шығару айнымалылары соңғы нәтижелерді, беруге арналған. Осы айнымалылар сәйкес векторларды топатаса алады:
- мәндері алғашқы кезеңде белгілі болатын және программаны орындау кезінде өзгермейтін енгізу айнымалыларынан тұратын енгізу векторы. Х=( х1, х2,..., хк );
- мәндері программаның орындалу барысында арлық жағдайда айқындалатын, программалық айнымалылардан тұратын орындалу векторы; Y= (y, y2,…, y1 );
- мәндері программаның соңғы жағдайында айқындалатын, шығару айнымалыларынан тұратын шығару векторы, Z=(z1,z2,…, zm).
Программа Р үшін енгізу векторлары мәндерінің жиыны inp(p), орындалу векторлар мәндерінің жиыны ran (p), шығару векторлары мәдерінің жиыны out(p) арқылы белгіленеді. Осы жиында бос емес, яғни,
Inp(p)
Сәйкесінше, әр программалық бірлік рt, tn, үшін бос емес жиын inp (p)6 out (p1), белгілеуге болады.Мұнда,
Ip (p1)=inp out(pn) = out (p)
Сонымен қатар, үшін
Inp(p1) ran (p), out(p1) ran(p)
Егер осы векторлардыңмәнін анықтайтын функция val болса, онда:
Val (x) =,val (y) = , val (x)=,
Мұнда inp (p), out (p).
Енгізу векторының мәні туралы және Р програмасының бастапқы жағдайын анықтайтын ір(х) тұжырымды алғышарт деп атайды яғни, ір (х): inp (p) {0,1},
Мұнда 0- логикалық “жалған” мән, ал, 1- логикалық “ақиқат” мән.
Енгізу және шығару векторларының байланысы туралы және программаның аралық жағдайын анықтайтын rp(x,y), t=2,n- 1
Тұжырымды аралықшарттар деп атайды, яғни,
Rp1(x,y): inp (p) {0,1}
Достарыңызбен бөлісу: |