Лекция. Модульдік программалау концепциясы 4 страница
Олардың MS DOS, Windows операциялық жүйелерінде жұмыс істеу мүмкіндіктері жеткілікті.
C++ тілі де процедуралық тіл, бірақ онда ОБП тілінің ерекшеліктері кең түрде қарастырылған. ОБП тілінде қолданылатын негізгі ұйымдар: класс, объект, оқиға, қасиеттер мен әдістер. Бұл ұғымдар:
объект - құрылымы класс типі арқылы сипатталатын айнымалы;
оқиға - объект жағдайының өзгеруі; қасиеттер - объект сипаттамалары (параметрлері); әдіс - класс элементтерін іздейтін команда не процедура, функция.
класс - пайдаланушы анықтайтын тип. Тип қасиеттер мен әдістерді бірге қосып сипаттайды. Программада осы кластың жеке даналары дайындалады. ОБП-да класс үшін мұрагерлік, инкапсуляция және полиморфизм принциптері енгізілген. Мұрагерлік — программада негізгі класс типінің туынды иерархиялық класта сақталуы, т.б.
Тілде жадпен жұмыс істеуге арналған арнайы конструктор, деструктор функциялары да бар. Конструктор класс типті айнымалы үшін жадтан арнайы орын бөледі, деструктор бөлінген жадты тазалайды.
Мысал үшін фигуралық объектілерді қарастырайық. Мұндағы класс – геометриялық фигуралар типі. Класс жазық және кеңістіктегі у фигуралар болып екі ішкі класқа бөлінеді (C тілінде оларды м ұ рагер типтер деп атайды). Жазық фигуралар класы төбелері бар (мысалы, үшбұрыш, төртбұрыш) және төбелерсіз (мысалы, шеңбер, эллипс) болып екі ішкі класка бөлінеді (олар иерархиялық м ұ рагер типтер).
|
|
Оқиға - фигурамен жұмыс жағдайы.
Объектінің қасиеттері: боялу түсі, ұзындығы, ені және т.с.с. ОБП тілінде негізгі кластар программа түрінде дайындалған соң, олар арнайы кітапханалық (каталогтық) файлдарда сақталып қойылады. Мұрагерлік класты пайдаланып программа құруда негізгі класқа арнайы сілтеме орнатып, программалау процесін көп жеңілдетуге болады (себебі, ол Турбо Паскальда sin () функциясына арналған кітапханалық файлды пайдалану сияқты жұмыс істейді).
Бейсик, Паскаль, Си сияқты дәстүрлi программалау тiлдерiнде күрделi, үлкен программаларды дайындаудың кемшiлiгi – ол үшiн программалаушылар тобының көп күш жұмсауы қажет болатын. Программалауды жеңiлдету үшiн 80 – жылдары жаңа объект, класс (оbject, class) ұғымдары енгiзiлiп, объектiлi – бағдарлы программалау (ОБП) тәсiлi негiзге алынды. ОБП – Турбо Паскальда қолданылатын процедуралық және құрылымдық программалаудың және модуль құрудың дамытылған түрi. Ол берiлгендердi белгiлi бiр абстракциялық деңгейде көрсетiп, модульдiк программалауды пайдаланады. Мысалы, Visual Basic программалау жүйесi объектiлi программалау негiзiнде визуальды түрде құрылған. Паскальдың ОБП тәсiлiн пайдаланып құрылған жаңа нұсқасы Object Pascal (Объектiлi Паскаль) деп аталады. Delphi осы тiлдiң негiзiнде дайындалған. Объектiлi программалаудың ыңғайсыздығы – онда дәстүрлi программалау тәсiлдерiн пайдалана бермейдi, бiрақ ондағы көп қиындықтар арнайы тәсiлдердi пайдалану арқылы тез шешiлген.
|
|
ОБП тiлiнiң дәстүрлi программалау тiлдерiнен өзгешiлiгi – типте өрiстерге қоса, қасиеттер және әдiстер де сипатталады:
өрiстер – Турбо Паскальдағы жазу (record) типiнiң өрiстерi сияқты;
қасиеттер – объект сипаттамалары;
әдiстер – кластың өрiстерi мен қасиеттерiн өңдейтiн процедуралар мен функциялар.
Kласс – жоғарыда көрсетiлген құрылымды (өрiстер, қасиеттер және әдiстерден тұратын) тип. Яғни, класс әдеттегi Паскаль типiнiң кеңейтiлген түрi. Класс типi арқылы сипатталған айнымалы объект (нысан) деп аталады.
|
|
Жүйе объект үшiн жадтың динамикалық облысынан арнайы орын қалдырады. Яғни, шын мәнiнде, объект жай айнымалы емес, ол - жадтың динамикалық облысының кездейсоқ адресiн сақтайтын көрсеткiш. Бiрақ программада оған Турбо Паскальда пайданылатын көрсеткiш белгiсi ( ^ ) енгiзiлмей жазылады.
Объект құрылған кезде автоматты түрде конструктор (constructor) деп аталатын әдiс шақырылып, ол объектiнi динамикалық облыста орналастырады, динамикалық жадтан объектiнi арнайы деструктор (destructor) әдiсi жояды.
Сонымен, ОБП - да пайдаланылатын объект сөзiнiң екi мағынасы бар: айнымалы (абстрактты, дерексiз объект) және нақты объект (мысалы, формада орнатылған компонент, геометриялық дене, т.с.с.). Delphi – де бiрiншi объект нақты класс данасын анықтайды.
Класқа иерархиялық (бағынышты, жоғарыдан төмен) кластардың енуi де мүмкiн. Мысалы, геометриялық фигуралар класы жазық фигуралар және кеңiстiк фигуралары болатын екi iшкi кластық фигураларға бөлiнедi. Ал жазық фигуралар класы төбелерi бар (үшбұрыш, көпбұрыш) және төбелерсiз (шеңбер, эллипс) болып екi iшкi класқа бөлiнедi. Объектiлi программалауда барлық кластар иерархиялық түрде негiзгi TObject класынан тарайды (TObject ® TPersistent ® TComponent ® …). әдетте негiзгi класты аталық, бағыныңқы кластарды туынды не сәбилiк кластар деп атайды (TObject – барлық кластардың арғы атасы, TComponent – барлық иерархиялық компоненттердiң жоғарғысы (компонент деп TComponent класының мұрагерi болатын класс данасын атайды)). әр ұрпақ өзiнiң аталық класының мүмкiндiктерiн (өрiстерiнiң, қасиеттерiнiң, әдiстерiнiң сипаттамаларын) қабылдайды. Мысалы, TObject класының Create (бастапқы мән меншiктеу (инициалдау)) әдiсi барлық туынды кластарға тиiстi (TObject класында конструктор Create деп аталады). әр ұрпақ өзiне қосымша жаңа мүмкiндiктер (сипаттамалар) қосып, келесi ұрпақтарға беруi мүмкiн.
|
|
Delphi-де класс атауын T әрпiнен бастау келiсiлген. Формаға енгiзiлген компонент данасы сандық индекс қосылған класс атауын алады.
Туынды кластың сипатталу түрi:
type <туынды класс атауы>=class (<негiзгi класс атауы>);
<класс мүшелерiнiң тiзiмi>
end;
var <объект> : <класс атауы>;
мұндағы класс мүшелерi - өрiстер, қасиеттер және әдiстер.
Мысалы,
type TForm1 = class (TForm)
Button1 : TButton;
Label1 : TLabel;
Procedure Button1Click ( Sender : TObject);
end;
var Form1 : TForm1;
TForm1 = class (TForm) жазуы TForm класының үлгiсiмен құрылатын жаңа (туынды) TForm1 класын анықтайды. Form1 : TForm1 жолындағы Form1 айнымалысы - класс да насы
Программаны дайындау барысында Delphi модульдiң Interface бөлiмiнеформаға енгiзiлген компо нент тер мен оқиғасы таңдалған әд i стерд i сипаттауды автоматты түрдеенгiзедi, әдiстердi iске асыру нұсқаулары модульдiң implementation бөлiмiне қолдан жазылады.
Жалпы, Delphi – де класс деп өзiне ұқсас даналарды дайындау үшiн үлг i түрiнде алынатын, толық түрде дайындалған программа үзiндiсiн де атайды. Программалаушы бұрын дайындалған класс данасының көшiрмесiн түрлi программаларға енгiзiп, программалауды және оның көлемiн көп жең i лдету i не болады.
Delphi құрамына жүздеген дайын кластар енгiзiлген. әр компонент қатаң түрде тек бiр класқа ғана тиiстi. Мысалы,
Delphi – де форма (TForm) компонентi – Forma класына ти i ст i, осы типтi айнымалы (Form1) – класс объ ект i с i. Класс бөлiгi ретiнде сипатталып, қажет болса, модульдiң Implementation (iске асыру) бөлiгiнде жазылатын сәйкес процедура - әд i с. Мысалы, procedure TForm1.Button1Click – әд i с.
Форма iшiне орналастырылған TEdit компонентiнiң Edit1 данасын (объектiсiн) екi рет шерткен кезде пайда болатын оқиғаны өңде у i ш әд i с i не (процедурасына) мысал:
procedure TForm1.Edit1Click(Sender : TObject);
begin
Edit1.Text := ‘Сiз редакциялау өрiсiн екi рет шерттiңiз‘;
end;
Программаны iске қосу командасы берiлген соң компилятор автоматты түрде негiзгi модульге енгiзiлген төмендегi екi әдiстi орындайды:
Application.CreateForm(TForm1, Form1);
Application.Run;
Бүлардың бiрiншiсi жадта Form1 объектiсiн құрады (объект i н i инициал дайды), екiншiсi Application объектiсiне қосымшаның негiзгi формасын iске қосуға нұсқау бередi (Run). Жоғарыда жазылған процедураның орындалу нәтижесiнде форманың Edit1 өрiсiне оның Text қасиетiне меншiктелген мәтiн жазылады.
Ескерту. Белгiсiз жағдайда программада қасиет орнату командасын иерархиялық түрде жазу қажет, мысалы:
Form1.Button1.FontSize:=14;
Мүндағы иерархияның бiрiншi объектiсi – форма (Form1), екiншi объект – формада орнатылған Button1 түймесi, үшiншi объект – түйменiң шрифт қасиет i; команда – форманың Button1 объектiсiне енгiзiлген FontSize (шрифт өлшемi) айнымалысына 14 мәнiн меншiктеу. Яғни, объектiлер арасына қойылатын нүкте сәйкес иерархиялық объектiге с i лтеме.
М ұ рагерл i к . Инкапсуляция . Полиморфизм
ОБП – да класс үшiн мұрагерл i к , инкапсуляция және поли морфизм принциптерi енгiзiлген.
Мұрагерлiк - программада негiзгi класс типiнiң туынды иерархиялық кластарда да сақталуы.Мысалы, автомобиль жеңiл және жүк машинасы болып бөлiнедi. Олардың жұмыс iстеу жағдайына байланысты, сипаттамаларына ортақ және бөлек өрiстер, қасиеттер мен әдiстер енгiзiлуi мүмкiн. Бiрақ, әр қайсысына жеке – жеке типтi толық анықтау үнемдi емес. Бiрiнiң типiн аталық етiп қабылдап, екiншiсiне қосымша қасиеттердi енгiзу жеткiлiктi. Delphi – дiң барлық кластары TОbject класына мрагер.
Инкапсуляция (iшiнде, бiртұтас) – классөрiстерiн, қасиеттерiнжәнеәдiстерiн бiрiктiрiп, бiртұтас түрiнде қарастыру мүмкiндiгi. Инкапсуляция класты программаның қалған бөлiктерiнен бөлiп алып, нақты есептi шешу үшiн пайдалануға мүмкiндiк туғызатын принцип. Мысалы, TForm класы өз бойында Windows – терезенi дайындау үшiн барлық қажеттiлердi iшiнде сақтайды (өзiнде инкапсулдайды).
Полиморфизм (көп түрлiлiк) – мұрагер кластардың аталық класқа енгiзiлген әдiс атауы бойынша басқа қасиеттер енгiзiлген ұқсас есептi шешуiне болатындығы, яғни түрлi кластарда әр түрлi әрекеттердi орындайтын әдiстерге бiрдей атау беру мүмкiндiгi.
Бақылау сұрақтары
1. Объектiлi-бағдарлы программалау дегенiмiз не?
2. Қандай құрылымдық тип класс (class) арқылы сипатталады?
3. Инкапсуляция дегеніміз не?
4. Полиморфизмді қалай түсінесің?
5. Мұрагерлік деп нені айтады?
6-лекция. Негізгі түсініктер мен енгізу ортасы және программаларды орындау механизмі
Жоспар:
1. Компьютердің логикалық схемасы.
2. Есептеу құралдарының негізгі түрлері.
3. Машиналық тіл және ассембілер тілі туралы түсінік.
4. Операциялық жүйелердің функциональдық қызметі.
5. Программалау, компиляция және программаны орындау ортасы, модульдерді
қолдану
1.Орындалатын программа ЭВМ жадында сақталады.
2.Барлық информациялар: машиналық командалар, сандар, әріптер, символдар, ұяшық адрестері т.б. екілік кодтар түрінде орындайды.
3.ЭВМ программаны процессордың негізгі алгоритміне сүйеніп орындайды.
4.Екілік кодтар арасындағы амалдар екілік жүйе ережелеріне сай орындалады.
ЭВМ информацияны (екілік кодтарды) тетіктерге магистральмен жібереді, адресі бойынша қай ұяшықтан қандай информацияны алу немесе жадтың қай ұяшығына информацияны жазу керектігін және сол сияқты команда кодына қарап қай амалды орындау керектігін анықтайды. Магистраль 16 өткізгіш сымдардан тұрады да, сымдар бойымен бір мезгілде екілік кодтың барлық разрядтары беріледі. Белгілі бір сымға екілік кодтың тек белгілі разряды ғана сәйкес келеді және бұл разряд тек өзіне сай сыммен беріледі: 1-сыммен-кіші разряд, 2-сыммен-келесі разряд т.с.с.
Мысалы, 1011 коды былай беріледі: 1-сымға жоғарғы кернеу, 2-сымға жоғарғы кернеу, 3-сымға төменгі кернеу, 4-сымға жоғарғы кернеу беріледі, ал қалған сымдарға төменгі кернеу беріледі (сан кодтары 16 орынға дейін нөлдермен толықтырылып жазылады).
Бұдан соң компьютер кернеудің болуы немесе болмауы арқылы кодталған информацияларды өңдеуге көшеді. Бұл үшін логикалық элементтер деп аталатын арнаулы электронды тетіктер пайдаланылады.
1-кіріс
|
|
1-сурет 2-сурет
Енді осындай қарапайым логикалық элементтермен танысайық.
А) ЕМЕС, элементінің бір кірісі мен бір шығысы ғана бар. Егер элементтің кірісінде сигнал болса, шығысында сигнал болмайды, ал егер кірісінде сигнал болмаса, онда шығысында сигнал әр уақытта да бар болады. Элементтің атауының өзі (ЕМЕС) оның осы қасиетінінен туған. 2-кесте
|
1-сурет пен 2-кесте ар-
Дата добавления: 2019-02-12; просмотров: 520; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!