
- •Программалық қамтамасыз етудiң күрделiгi: анықтама, мысалдар.
- •Қарапайым программалық жүйелердің 4 мысалын келтіріңіз.
- •Күрделi программалық жүйелердің 4 мысалын келтіріңіз.
- •Программалық қамтамасыз етудiң күрделiгiнiң себебтері.
- •Күрделi жүйелердің белгiлері.
- •Декомпозиция, алгоритмдік декомпозиция, объектті бағыттылған декомпозиция: анықтама, мысалдар.
- •Абстракция: анықтама, мысалдар.
- •Иерархия: анықтама, мысалдар.
- •Программалық жобалау қандай элементтерден тұрады?
- •Oop, ood және ооа: анықтама, айырмашылықтары.
- •Программалаудың негiзгi парадигмалары: олардың ерекшелiктері.
- •Абстрактциялау: анықтама, мысалдар.
- •Инкапсуляция
- •Модулдік
- •Иерархия
- •Типтелу
- •Параллелизм: анықтама, мысалдар.
- •Сақталатындық: анықтама, мысалдар.
- •Объектiлердiң мысалдарын келтірiңiз.
- •Объекттiң күйі және тәртібі: анықтама, мысалдар.
- •Байланысқа қатысатын объектiлердiң рөлдері: анықтамалар, мысалдар. (актер, сервер, агент)
- •Агрегация: анықтама, мысалдар.
- •Кластардың мысалдарын келтірiңiз.
- •Кластардың интерфейсі және реализациясы: анықтама, мысалдар.
- •Кластардың арасындағы қатынастар: мысалдар. (ассоциация, мұрагерлік, агрегация, пайдалану, метакласс)
- •Классикалық категориялау, концептуалды кластерлеу, түптұлғалар теориясы. Осы тәсiлдерден қандайы жақсы және нелiктен?
- •Аж жобада белгiлеу жүйесі не үшiн қажет?
- •Аж логикалық және физикалық үлгiлері: анықтама, мысалдар.
- •Аж статикалық және динамикалық үлгiлері: анықтама, мысалдар.
- •Кластар диаграммасы: тағайындау, мысал.
- •(1)Класстар диаграммасындағы кластың графикалық суретінің нұсқалары
- •Кооперация диаграммасы: тағайындау, мысал.
- •Жобалаудың микропроцессi: анықтама, мысалдар.
- •Жобалаудың макропроцессi: анықтама, мысалдар.
- •Тәуекелдердi басқару: анықтама, мысалдар.
- •Аж өңдеушiлердiң рөлдері.
- •Аж релиздерді басқару
- •Аж тестілеу
- •Аж әзiрлеу кезінде қайтадан пайдалану.
- •Программалық өнiмнің сапасын өлшеу.
- •Аж документациясын әзiрлеу.
Программалаудың негiзгi парадигмалары: олардың ерекшелiктері.
Программалау парадигмалары – бұл программаларды жазу стилін анықтайтын идеялар мен түсініктер жүйесі. «Программалау парадигмалары» терминін бір ғана анықтамамен түсіндіру алі де болса мүмкін болмай тұр. Бұл терминге әр автор әртүрлі анықтамалар беруде.
Дэниель Бобровтың стаиясында парадигма «программисттің ойындағы программалау стилі» деп жазылған. Ал Питер Вингер «кейбір шарттармен тексерілген программалау тілінің классификациясының заңдары» деп анықтама береді.
Дженкинс пен Глазко «көбінесе программисттер бір ғана программамен және бір ғана стилге сүйене отырып жұмыс жасайды. Олар өздерінің алдында қолданған парадигмасында ғана программалайды. Сөйтіп, мақсатқа жетудің альтернативті шешімдерін шетке ысырып қояды». Бобров пен Стефик программалау стиліне былай деп түсініктеме берді: «Бұл осы стильде жазылған, программаны түсінікті ететін тиімді программалау тілін таңдау мен нақты бір принциптерге негізделген программа құру». Осы авторлар төменде абстракцияларымен бірге көрсетілген 5 программалау парадигмаларын айқындады:
Процедураға – бағытталған алгоритмдер
Объектіге – бағытталған класстар мен объектілер
Логикаға – бағытталған есептеу предикаттары терминдерінде жиі --------------- кездесетін мақсаттар
Ережеге бағытталған «егер-онда» ережесі
Шектеуге бағытталған инвариантты байланыстар
Қандай да бір программалау стилін практикалық қолданудың барлық саласында ең жақсысы деп таңдай мүмкін емес. Мысалы, білім базасын жобалағанда ережеге бағытталған парадигмасы тиімдірек, ал есептеу мақсаттарында – процедураға – бағытталған тиімді. Объектіге –бағытталған стиль көп қосымшалары шеңберде ең қолайлысы болып табылады. Шынымен де бұл парадигма басқа парадигмалар негізделетін архитектуралық фундамент қызметін атқарады.
Әр программалау парадигмаларының өз концептуалды базасы бар. Объектіге – бағытталған стильдің концептуалды базасы – объектілік модель болып табылады. Ол 4 негізгі элементтен тұрады:
Абстракция;
Инкапсулляция;
Модуль;
Иерархия.
Абстрактциялау: анықтама, мысалдар.
Абстракция барлық басқа объектілердің түрлерінен кейбір объектілердің заттық харектеристикасын бөліп қарасыра отырып, бақылаушы тарапынан оның концептуалды шекарасын анықтайды.
Абстракциялау - күрделі тапсырмаларды шешуде қолданылатын негізгі әдістердің бірі болып табылады.
Абстракциялау объектінің сыртқы қасиеттеріне көңіл аударады және іс-әрекеттің заттық артықшылықтарын заттық емес қасиеттерін бөуге мүмкіндік береді. Абельсон мен Суссман объект интерфейсі тек іс-әрекет аспектілерінен ғана тұрса, онда байланыстардың минимизация принципіне сүйене отырып бұлай бөлудің мағынасы мен ұйымдастыруын абстракция барьері деп атады.
Сейдвиц мен Старктың пікірінше «пәндер аймағының реалиясына дәлме – дәл сәйкес келетін объектіден бастап, өмір сүруге құқығы жоқ объектілерге дейін толық абстрациялар спектрі бар».
Абстракция түрлері:
Абстрация - Объект пәндер аймағының кейбір мән мазмұнының пайдалы үлгісін ұсынады
Мінез-құлық абстракциясы Объект жалпылама көпшілік операциялардан тұрады
Виртуальді машиналар абстракциясы - Объект басқарудың неғұрлым жоғарғы деңгейімен бірге қолданылатын, немесе өздері төмен деңгейдегі операциялар жиынын қолданатын операцияларды топтастырады
Туынды абстракция Объект бір – бірімен ешқандай байланыспайтын операциялар жиынынан тұрады.
Мысал: Гидропоникті қолданатын жылыжай шаруашылығында өсімдіктер құмсыз, гравиясыз және басқа да топырақсыз ылғандандырылған ерітіндіде өсіріледі. Парниктік қондырғының жұмыс кестесін басқару – өсіру стадиясынан және өсірілетін өсімдіктің түріне байланысты жауапкершілігі өте мол жұмыс. Температура, ылғалдылық, жарық, қышқылдық (рН көрсеткішімен) және ылғалдандырғыш заттардың концентрациясын – барлық факторларды бақылап отыру керек. Үлкен шаруашылықта бұл тапсырманы шешуде көрсетілген факторларды бақылап және реттеп отыратын автоматты жүйелерді қолданады. Былайша айтқанда, автоматтандырудың мақсаты адамның минималды қатысуымен өсірудің кестесін сақтауға қол жеткізу.
Мұндай тапсырмада кілттік абстракцияның бірі – көрсеткіш. Көрсеткіштің бірнеше түрі белгілі. Өнімге әсер ететіннің бәрі өлшеулі болу керек, сол себепті бізде су мен ауа температурасының, ылғалдылықтың, рН, жарықтың және нәрлендіретін заттардың концентрациясының көрсеткіштері болуы керек. Сыр көзден қарағанда температура көрсеткіші – бұл орналасқан жердегі температураны өлшейтін объект. Біз көрсеткіш орналасқан жеріндегі температураны білуі және оны сұраныс бойынша хабарлап тұру керек деп шешеміз. Клиент көрсеткішке қандай әрекет ете алады? Клиент көрсеткіштен ағымдағы температураны ала алады деген шешімді қабылдаймыз. Бұл жобаның С++ тілінде шешеміз:
// Температура по Фаренгейту
typedef float Temperature;
// Число, однозначно определяющее положение датчика
typedef unsigned int Location;
class TemperatureSensor {
public:
TemperatureSensor (Location);
~TemperatureSensor();
void calibrate(Temperature actualTemperature);
Temperature currentTemperature() const;
private:
... };
Мұнда типті анықтауда Temperature и Location операторлары оңай типтер үшін ыңғайлы псевонимдерді енгізеді, ол абстракциямызды пәндер аймағы тілінде жазуға мүмкіндік береді.
Мұнда клиент температураны өз қалауы бойынша бере алады. Егер клиент температура мәнін енгізбесе, мысалы қажет температура мәнін бермесе не болады? Жобалау барысында қандай да бір шешім қабылдап: температура өзгерісін шексіз интервал деп есептеп біз бұл сұрақты шешуіміз керек.
Клиент серверге функцияны береді, ал сервер керек кезінде сол функцияны шақырады. Мұнда былай жазылады:
class ActiveTemperatureSensor {
public:
ActiveTemperatureSensor (Location,
void (*f)(Location, Temperature));
~ActiveTemperatureSensor();
void calibrate(Temperature actualTemperature);
void establishSetpoint(Temperature setpoint,
Temperature delta);
Temperature currentTemperature() const;
private:
... };
ActiveTemperatureSensor класының өз міндетін орындауы оның ішкі көрсетілімдерінен тұрады және басқа клиенттерді қызықтырмауы керек. Бұл функция – мүшесінің және жабық бөлігінің іске асырылуын анықтайды.