May 3, 2020

ОБЪЕКТІГЕ-БАҒЫТТАЛҒАН БАҒДАРЛАМАЛАУ

4.1 Объектіге-бағытталған бағдарламалаудың әдістемесі

Объектіге бағдарланған бағдарламалау – бұл бағдарламалық жабдықты, қандай да болмасын кластың өкілі болып табылатын, объектілердің жиынтығы түрінде құратын бағдарламалау методологиясы.

Объектіге бағдарланған жобалау – бұл құрылатын ақпараттық жүйенің (немесе бағдарламалық жабдықтың) барлық статикалық және динамикалық модельдерін объектілі декомпозициялау процесі мен модельдердің логикалық, физикалық тұрғыдан беру тәсілдері негізінде жобалау методологиясы.

Объектіге бағдарланған талдау – бұл жобаланатын жүйеге қойылатын талаптар, пәндік облыстағы анықталған кластар мен объектілер тұрғысынан қарастырылатын методология. Объектіге бағдарланған ұстанымның концептуалдық негіздеріне объектіге бағдарланған ұстанымның моделі жатады. Объектілік модельдеудің негізгі элементтері: абстаркциялау, инкапсуляция, модульділік және иерархия. Қосымша элементтері: типтелу, паралеллизм және тұрақтылық.

Объектіге-бағытталған бағдарламалауды қолданып жазылған бағдарлама бір-бірімен қарым – қатынаста болатын объектіден тұрады. Объектіні бағдарламалық жүзеге асыру- олардың өңдеу процедуралары мен берілгендерін біріктіру деген сөз. Турбо Паскальда Object типі бар, оны record құрылымды типінің жалпыламасы деп есептеуге болады. Тұрақсыз объек типін объект экземпляры деп атайды.

Type
  Location=obgect
  x,y:integer;
   Procedure init( initX, 
   InitY: integer);
  Function getX: integer;
  Function getY: integer;
End;

Обьект резервтегі object_end сөздерінің көмегімен сипатталады. Олардың арасында әдістермен  бөлімдердің сипаттамасы бар. Келтірілген мысалда объект графикалық координаталардың белгілерін сақтау үшін екі бөлімнен, берілген объектілердің әдістері сипатталған процедура мен екі функциялардан құралған. Объектітиптердің сипатталауының басқа сипатталудан айырмашылығы – ол бағдарламалық бірліктің  (бағдарлама, модуль) ең жоғарғы сатысында тұрады. Әдістермен функциялар, процедуралардың сипатталу бөлімінде мұндай сипаттау болмайды. Резевтегі private сөзі объект бөлімдерін екі рет алмайды. Келесі мысалда X,Y айнымалысына location объектілі типінің getX, getY әдістері арқылы ғана кіреді.

Мысалы:

Type
     Location= object
          Procedure init(initX, 
          initY : integer);
          Function getX: integer;
          Function getY : integer;
     Private      X, Y : integer;
     End;

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

Мысалы :

Procedure Location.init(initX, 
initY : integer);
Begin
         X:= initX;
         Y:= initY;
End;
Function Location. getX: integer;
Begin
       GetX:=X;
End;
Function Location.getY : integer;
Begin
GetY := Y;
End;

        Объект сипатталып болғаннан кейін прграммада оның экземплярын қолдануға болады. Яғни, берілген объектілі типтерінің айнымалысын :

     Var

         Grmarker : location;

 

4.2 Кластар мен объектілер. Әдістер спецификасы (функция, процедура) және деректер.

С++ тілінің негізгі ұғымдарының бірі – класс болып табылады. Класс дегеніміз – құрамында мүшелері (айнымалылары) мен тәсілдері (функциялары) бар тіл құрылымы. Кластық құрылым – бағдарламалаушының өзі анықтайтын тип. С++ тілінде объектіні анықтау үшін алдымен оның форматын class түйінді сөзімен белгілеу керек. Кластың анықталуы құрылымның (struct) анықталуына ұқсайды. Құрылымның кластан айырмашылығы – оның құрамындағы барлық мүшелер мен тәсілдердің ашық сипатталуында жатыр.

Қазіргі уақытта бағдарламалуда 3 концепция белгіленген:

  • объектілі бағытталған бағдарламалау; (ОБП)
  • унификацияланған модельдеу тілі (UML)
  • бағдарламалық қамтамаларды құру арнайы жабдықтары.

 

Объект

Өмірде объект ретінде компанияның бөлімдерін – бухгалтерия, сату бөлімі, кадр бөлімі т.б. алуға болады. Компанияның бөлімдерге бөлінуі оны құрылымдық ұйымдстырудың маңызды бөлігі болып табылады.

Бөлімдердің арасында олардың орындайтын қызметтері үйлестіріледі және әр бөлім өзіне тиісті ғана ақпараттармен жұмыс атқарады: бухгалтерияда – еңбек жалақысымен, сату бөлімінде — әрбір маманға байланысты ақпараттармен т.б.

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

 

Объектілер және класстар

Айнымалы өз типіне қандай қатынаста болса, объект те өз класына сондай қатынаста.Класс анықтамасы class қызметші сөзінен басталып, класс есімі жазылады.

Құрылым сияқты, класс денесі фигуралық жақшаға алынып, «нүктелі үтір» белгісімен аяқталады.ОБП –дың негізгі ерекшелігі берілгендерді жасыра алуы.

Бұл терминнің мағынасы мынада: берілгендер класс ішінде орналасқан және кластан тыс орналасқан функциялардың санкциясыз қолданылуынан қорғалған. Егер кейбір берілгендерді қорғау керек болса, онда оларды private қызметші сөзі бар класс бөлігінде орналастыру керек. Мұндай берілгендер тек класс ішінде ғана қолданылады. Public қызметші сөзімен сипатталушы берілгендер класстан тыс та қолданылады.

Класстың ішіндеқолданылады (жабық)

Класстан тыс (ашық)қолданылады

Класс құрамына кіретін функциялар класс әдістері болып табылады.
Класс ішіндегі берілгендер мүшелер немесе класс өрістері деп аталады.

Келесі мысалды қарастырайық:

// smallobj. Сpp
#include
class smallobj {
  private:
    int somedata;
  public:
    void setdata(int d) {
      somedata = d;
    }
  void showdata() {
    cout << “өрістіңмәні = “ 
    << somedata << endl;
  }
};
int main() {
  smallobj s1, s2;
  s1.setdata(1066);
  s2.setdata(1776);
  s1.showdata();
  s2.showdata();
  return 0;
}

setdata( ) и showdata( ) функциялары классішінде анықталған, яғни функция коды класс анықтамасында орналасқан. Осындай түрде анықталған класс әдісі кірістірілген анықтама болып табылады. main ( ) фуекциясында s1, s2 екіобъектісі анықталған. Объектіні анықтау объектіні сақтауға қажетті жады бөлу болып табылады. Объектесімін класс әдісімен байланыстыру үшін нүкте (.) операциясын қолданады. Нүкте операциясы класс мүшесін алуоперациясы деп аталады. Кейбір объектілі бағытталған бағдарламалау тілдерінде объект әдісін шақыруды хабарламалар деп атайды.

 

4.3 Объектіге бағытталған бағдарламалау

4.3.1 Инкапсуляция. Полиморфизм. Мұрагерлік. ОБП технологиясы.

 

ОБП технологиясының негізгі төрт сипаттамасы бар:

 инкапсуляция;

 мұрагерлік;

 полиморфизм;

 типтердің абстакциясы.

 

Абстракциялау – бұл қандай да болмасын объектіні, өзге объектілерден ажырататынбелгілері, сипаттамалары және т.б. арқылы бөліп алу, жалпы абстракциялау объектінің сыртқы ерекшеліктеріне негізделеді. Объектіге бағдарланған ұстанымда, берілген объектінің дұрыс абстракциялануы, жобалаудың негізгі міндеттерінің бірі болып саналады.Инкапсуляция – бұл объектінің, өзінің ішкі элементерінің, бір бірінен ажыратылу процесі. Бұл процесс кезінде объектінің ішкі құрылымдары мен оқиғалары бір- бірінен дұрыс ажыратылады.

 

Инкапсуляция объектінің интерфейсін қорғау үшін қолданылады немесе объектілік ұстанымда класстың ресурстарын, тек оның өзінің ғана пайдалануын қолдайды. Абстракциялау мен инкапсуляция бірін бірі толықтырады.

 

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

 

Иерархия – бұл жүйедегі абстракцияланудың бір- біріне бағынышты түрде реттеліп орналасуын тағайындайды. Бұл күрделі жүйедегі класстардың құрылымы (иерархиясы).

Мысалы, жай және көп қабылдаушылықты айтуға болады.

Типтелу – бұл абстракцияға байланысты класстарды бір бірінен ажырату үшін қойылатын шектеулер.

 

Паралеллизм – бұл объектінің актив және пассив түрде болуын көрсетеді.

 

Тұрақтылық – бұл объектінің өмір сүру уақытын көрсетеді.

Объектіге бағдарланған ұстанымның негізгі түсініктері: объект, класс.

Объект класстың экземпляры тұрғысынан қарастырылады. Объектінің күйі, оқиғасы және жеке қасиеттері болады. Объектіге әсер етуді әдіс деп атайды. Класс қабылдаушылық пен инкапсуляция және полиморфизмді (абстракцияны) қанағаттандыратын құрылымдық жиынтық тип ретінде қабылданған..

Объектіге бағдарланған анализ бен жобалау әдістері модельдеу тілі мен модельдеу процестерінің сипаттамаларынан тұрады.

Инкапсуляцияда бағдарлама бірлігі ретінде мәліметтер және функциялар тобының бірлестігі қарастырылады. Объектіде мәліметтер қорғалған болып саналады, егер мәліметтер мен функция-мүшелер жабық немесе қорғалған деп айтылатын болса, онда олар бағдарламаның басқа бөлігінен көрінбейтін болады. Бағдарлама сенімді жұмыс істеуі үшін объектінің өрісін тікелей пайдалану қажет емес. Сондықтан мұндайда оның мазмұнын ашық тәсілдерді шақыру арқылы қалыптастыру керек.

Белгілі бір класс ішінен ішкі класс құрастыру мұрагерлік болып табылады. Мұрагерлік кезінде бір объектінің атрибуттары мен қасиеттерін екіншісінің ием-денуіне мүмкіндік беріледі. Егер бұрынғы кластан аз ғана айырмашылығы бар жаңа класс құрғымыз келсе, онда бастапқы кластың бұрынғы айнымалылары мен тәсілдерін қайтадан сипаттап жазу қажет емес. Сонда базалық класс аталық, ал жаңадан пайда болған класс – оның ұрпағы (туындысы) деп аталады. Ұрпақ кластың, қажет болса, өз құрамына жаңа айнымалылар мен тәсілдер қосу мүмкіндігі бар. Мұрагерлікөз кезегінде объектілердің иерархиясын құрастыруға жағдай туғызады, соның нәтижесінде жалпыдан жалқыға көше алады, ол объектіні нақтылайды, айқындайды.

 

Полиморфизмде кластың бір атаулы функция-мүшесі әр түрлі, бірақ өзара логикалық байланысқан мақсаттарда пайдаланылады. Мысалы, sum(x,y) функ-циясы х + у қосындысын табады делік. Аргументтерінің типіне қарай функция әр түрлі типтегі мәнді қайтара алады. Бүтін немесе нақты типті х пен у айны-малылары үшін атаулары әр түрлі екі функцияны тағайындаудың орнына бір sum(x,y) функциясын сипаттау тиімді болады. Мұндағы + амалы х пен у типте-ріне тәуелді болады.

 

4.3.2 Берілгендер жүйесі, визуалды жобалау, қасиеттер, оқиғалар.

 

Виртуалды жобалау мен оларды шақыратын процедуралар арасындағы байланыс бағдарламаны орындау барысында орнатылады. Бұл соңғы байланыс деп аталады. Оның алғашқы байланыстан айырмашылығы ол компеляция кезінде орнатылады. Виртуалды объектіні сипаттауда әдістің атынан кейін резервтегі virtual сөзі қолданылады. Туынды мен түбірлік объектінің виртуалды әдістерінің аттары бір- біріне сәйкес келуі керек. Виртуалды әдістері бар объектінің экземплярын инициализациялау арнайы әдіс – конструктордың көмегімен орындалады. Конструктор объект өрісіне алғашқы белгілерді иелендіреді және объектіні инициялизациялау кезіндегі керекті іс-әрекеттерді  орындайды. Әдіс- конструктор атында procedure сөзі  constructor сөзімен алмасады. Конструктор іс-әрекетіне қарама- қарсы іс- әрекет тағы да бір арнайы әдіс деструкторды орындайды. Ол destructor сөзімен сипатталады.

Статикалық әдiс  - дегеніміз статикалық айнымалыларда бағдарламаның немесе процедураның іске қосылып жұмыс істегеннен бастап жадыдан адресі анықталып, бағдарлама немесе процедура жұмысын аяқтағанша айнымалы тек сол адресте сақталуды айтамыз. Мысалы: var  бөліміне жазылған айнымалыларды статикалық айнымалыларға жатқызамыз.

 

Қасиеттер мен оқиғалар

Айналаға қарап, өмірдің көптеген заттарын байқауға болады. Мысалы,  ит, үстел, теледидар, автомобиль. Мұнда кейбір геометриялық фигураларды да жатқызуға болады. Мысалы, шеңбер, тіктөртбұрыш және т.б. Қоршаған ортаның объектілерін екі типке бөлуге болады: олардың бәрінің қалпы және мінез – құлқы болады. Мысалы, автомобильдің қалпы бар (түсі, жүру жылдамдығы, типі және дөңгелек көлемі) және мінез – құлқы (тежеуі, жылдамдатуы).  Шеңбердің өзіне тән қасиеттері бар. Мысалы, орталық координаттары, радиусы, түсі. Және де өзіне тән мінез – құлқы (салу, орын алмастыру, түсін өзгерту).

6-сурет. Жалпы белгіленген объектінің бағдарламалық бейнесі.

Қасиеті – идентификаторы бар, белгілі бір мән. бағдарламалық объектілердің мінез – құлқын әдісарқылы іске асырады. Оқиға  бұл объектімен байланысқан астыртын бағдарлама (процедура). Сонымен, объект дегеніміз – бұл құрамында әдіс пен қасиеті бар бағдарламалық бірлік ( сурет).

 

4.4 Бағдарламалық қамтаманы жобалау

Бағдарламалау технологиясы, бұл- бағдарламалық жабдықтарды жасау процесінде қолданылатын қолданылатын арнайы әдістер мен құралдардың жиынтығы.

Электрондық-есептеуіш машиналар алғаш қолданыла бастаған кезеңнен бастап қазіргі уақытқа дейін оларға арналған бағдарламалар жазу негізгі мәселелердің бірі болып саналады. Бағдарламалық жабдықтың өмірлік циклы деп, оны құру туралы идея пайда болған кезден бастап, оны жасаған фирманың бағдарламалық жабдықты әрі қарай қолдап жетілдіруі тоқтатылғанға дейінгі уақытты айтады.

Бағдарламаның өмірлік циклының құрылымы ISO IEC 12207: 1995 Information Technologe - Software Life Cycle Processes (Информационные технологии - Процессы жизненного цикла программногообеспечения) халықаралық стандартымен анықталған, мұндағы ISO – International Organization for Standardization (Международная организация по стандартизации) және ІЕС - International Electrotechnical Commission (Международная комиссия по электротехнике).

Аталған стандарт бойынша бағдарламалық жабдықты құру келесі процесстерден тұрады:

- даярлық жұмыстары;

- болашақ жүйеге немесе бағдарламаға қойылатын талаптарды анықтау;

- болашақ жүйенің немесе бағдарламаның архитектурасын жобалау;

- бағдарламаға қойылатын талаптарға талдау (анализ) жасау;

- бағдарламалық жабдықты детальды жобалау;

- бағдарламалық жабдықтың кодын жасау және тестілеу;

- бағдарламалық жабдықты жүйеге кірістіру;

- бағдарламалық жабдықты құжаттау;

- бағдарламалық жабдықты қолдап отыру.

 

Бағдарламалау технологиясының даму кезеңдерінің бастапқысы,с

тихиялы бағдарламалау кезеңі болып табылады. Бұл кезеңде, қазіргі жоғары деңгейдегі бағдарламалау тілдері болмағандықтан бағдарламалар машиналық тілде жазылды, мысалы, 1958 жылы академик С. А. Лебедевтің басшылығымен жасалған, М-20

есептеулерге арналған электронды есептеуіш машинасы номерленген командалардан тұратын бағдарламаны орындай алатын болды.