Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД_жауаптар.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
915.46 Кб
Скачать
  1. Иерархия

Маңызды ықшамда күрделі тапсырманы иерархиялық құрылымның абстракциясы арқылы шешеміз. Иерархияны келесі түрде анықтаймыз:

Иерархия- абстракцияның реттілеуі, олардың деңгейлерге ,бөлінуі. Иерархиялық құрылымның күрделі жүйелерде түрлері: класстың("isa" иерархиясы) құрылымы және нысанның("part of" иерархиясы) құрылымы болып табылады.

Иерархияның негізгі түрі "isa" болып табылады. "isa" жоғарғы мұрагерлік концепсияны тұжырымдайды.Мұрагерлік класстар арасындағы қатынаста мынадай мағына береді(ұрпақтық қатынас): бір класс құрылымдық немесе функциялық басқа бір немесе бірнеше класс бөлігін пайдаланған жағдайда (сәйкесінше, жеке және көпшілік мұрагерлік).

Мұрагерлік класс тармақтары бір немесе бірнеше суперкласстан кейін құралатын абстракцияның иерархиясын құрады.

Жиі жағдайда класс тармақтары жоғарғы класстың компонентін құрап бітіреді немесе көшіріп алады.

Мысалы:

Бақша жүйесінде өсімдіктің түрлерін қарастырамыз.

Әр түрлі дақылдар бөлек жоспарларды сұрайды. Жемістер үшін жоспарлар бір-біріне ұқсас, бірақ көкөніс немесе гүлдер жоспарларынан айырмашылық болады. Егістің жиынынын және тозаңдануын қосып жаңа деңгейде құрамыз.

C++ "жеміс" жоспары

// Бақша типі

typedef unsigned int Yield;

class FruitGrowingPlan : public GrowingPlan {

public:

FruitGrowingPlan(char* name);

virtual ~FruitGrowingPlan();

virtual void establish(Day, Hour, Condition&);

void scheduleHarvest(Day, Hour);

Boolean isHarvested() const;

unsigned daysUntilHarvest() const;

Yield estimatedYield() const;

protected:

Boolean repHarvested;

Yield repYield;

  1. Типтелу

Типтелу - бұл бір класстың орнына басқа класстың қолданылуына қорғаныс.

Типтелу программалау тілінің қабылданған жобалық шешімін орындауға итермелейді.

Программалау тілінде күшті немесе әлсіз типтелу механизмі болады және болмауы да мүмкін.

Мысалы:

Теплицада қолданылатын түрлі сыйымдылықты үлгі абстракциясын қарастырамыз. Ол жерде суға, минерал тыңайтқышқа арналған сыйымдылық бар.Бірақ біріншілері суға арналған, екіншісі сусымалы заттарға арналған. Олар иерархия классын құру үшін жеткілікті ұқсатықтары бар.

Типі:

// Сандар, 0 - 100 %

typedef float Level;

сыйымдылық үшін иерархию классы:

class StorageTank {

public:

StorageTank();

virtual ~StorageTank();

virtual void fill();

virtual void startDraining();

virtual void stopDraining();

Boolean isEmpty() const;

Level level() const;

protected:

...

};

  1. Параллелизм: анықтама, мысалдар.

Автоматтық жүйелер бірнеше оқиғаларды бір мезгілде орындау керек есептер бар. Кейбір жағдайларда бір процессордың ресурстарының есептеу қуаты жетпейді. Әрбір мұндай жағдай үшін әрине бірнеше компьютер немесе көп процессорлы компьютер қолдану қажет болады. Процесс ол жүйедегі іс әрекеттің фундаменталды бірдігі. Әрбір программада кем дегенде бір процесс бар. Ал параллелді системада осындай процестерден бірнеше болады. Бұл процестердің кейбіреулері аз уақыт жұмыс істейді, және бүкіл сеанс бойы жұмыс істейтінтін басқа процестер де бар. Шынайы параллелдік тек көппроцессорлы жүйелерде ғана болады. Ал бір процессор параллелдікті алгоритмді уақыт бойынша бөліп жүргізеді.

Аппараттық белгілерінен басқа біз паралелдікті ресурстар қажеттілігіне байланысты ауыр және жеңіл паралелдік деп бөлуімізге болады. Ауыр процесстер басқаларға тәуелсіз түрде операциялық система арқылы басқарылады. Және оларға қорғалатын жеке адрестік аймақ бөлінеді. Ал жеңіл процестер бір адрестік аймақта болады.

Компьютер көптеген іс-әрекеттерді параллел орындай алады. Мысалы біз компьютер арқылы музыка тындап, интернеттен керекті материал жүктеп және кітап оқып отыра аламыз. Бұның бәрі бір уақытта жүретін процесс және бұл жерден параллелизмді байқай аламыз.

Мысал. ActiveTemperatureSensor класын қарастырайық, ол период сайын температураны өлшеп отыратын болсын. Егер берілген температурадан белгілі бір мөлшерге ауытқу болса, онда ол шақыру функциясына белгі береді. Бұл жерде мұның активті объект екені белгілі және пареллелизмсіз процестің жүруі мүмкін емес. Объектіге бағытталған жобалауда үш түрлі жолмен параллелизмді шешуге болады. Солардың бірін қарастырайық: параллелизм дегеніміз ол кейбір программалық тілдің ішкі қасиетіне жатады. Ada тілінде параллел механизмдердің процестері есеп ретінде шешіледі. Ал Smalltalk программалау тілінде арнайы process деген класс бар барлық активті объектерді мұрагерленетін. Бұлардан да басқа процестерді параллел орындайтын көптеген тілдер бар. Олар Actors, Orient 84/K, ABCL/1.