Кластар иерархиясы, мұрагерлік, полиморфизм курстық жұмыс
Мазмұны
І.Кіріспе.........................3
ІІ. Негізгі бөлім
1.1.Кластар иерархиясы.............................4
1.2. Кластар және Delphi – дің обектілері.....................7
2.1.Мұрагерлік.........................7
2.2.Полиморфизм.................. 10
3.Кластарды хабарлау...............................19
ІІІ.Қорытынды.............24
Пайдаланған әдебиеттер...........................25
Жұмыс түрі: Курстық жұмыс
Жұмыс көлемі: 24 бет
Пәні: Соңғы қосылған курстық жұмыстар
-----------------------------------------------------------------------------------
КУРСТЫҚ ЖҰМЫСТЫҢ ҚЫСҚАРТЫЛҒАН МӘТІНІ
Мазмұны
І.Кіріспе.........................3
ІІ. Негізгі бөлім
1.1.Кластар иерархиясы.............................4
1.2. Кластар және Delphi – дің обектілері.....................7
2.1.Мұрагерлік.........................7
2.2.Полиморфизм.................. 10
3.Кластарды хабарлау...............................19
ІІІ.Қорытынды.............24
Пайдаланған әдебиеттер...........................25
Кіріспе
Программалау технологияларының негізгі бағыттарының бірі – обьектіге бағытталған бағдарламалау
Бұл тәжірибе алудың мақсаты студенттердің информатика, программалау технологиялары, компьютерлік
Жалпы обьектіге бағытталған бағдарламалау тәсілдерінің ерекшелігі, алдын ала құрылып
1.1 Кластар иерархиясы
Object Pascal тіліндегі кластар деп өрістен, әдістен және қасиеттерден
Type
TmyClass=class(TObject)
Field:integer;
…
End;
Var
MyClass:TmyClass;
Begin
…
MyClass^.Fied:=0; // Қате! Ол былай жазылуы тиіс:
MyClass.Fied:=0;
…
End.
Туынды класс бір базалық кластан артық класқа мұра ете
Object Pascal құрамындағы барлық кластар TObject класының ең түпкі
Негізінде Delphi – де қолданылатын кластар мен компоненттің түрлері
1- сурет. VCL иерархиялық база класы.
VCL кітапханасында кластар жай мұрагерлік механизмінің класы ретінде қолданылады.
2- сурет. VCL – кітапханасындағы иерархиялық класс.
TObject класы VCL кітапханадағы барлық обьектінің сызбаларын инкапсуляциялайды. Егерде
Жаңа кластың жариялануы Type секциясында орындалады.
TPersistent класы өзінің Tobject ата – анасының мүмкіндіктерін кеңейтеді:
TComponent класы өз кезегіндегі, класты құраушының ортасымен әрекеттесіп, оны
TControl класы файлдармен және класты құраушының ортасымен ғана жұмыс
Ал оның ұрпағы TWinControl Windows терезелерін де құра алады
Ішкі орналасуындағы айырмашылыққа қарамастан қысқа ShortString және ұзын String
Обьектінің бетіне Canvas қасиеті сәйкес келеді. Обьектінің бетіне графикалық
1. Кластар және Delphi-дің обьектілері
Интерфейс орындалуына Delphi-дің кластар кітапханасы қолданылады, соның ішінде әртүрлі
Жобалау кезінде Delphi қосымшасының фоормалары программаның мәтініне қажетті обьектілерді
Type
TForm1=class(TForm)
Private
{Private declarations}
Public
{Public declarations}
End;
Var
Form1:TForm1
Кластар – бұл күрделі программаларды жеңілдету және оның сапасын
2.1 Мұрагерлік
Объекті бағдарланған программалауда екінші «діңгек» болып мұрагерлік саналады. Бұл
Мұрагерлік – обьектіге бағытталған бағдарламалаудың басты механизмдерінің бірі. Оның
Мұрагерлік дегеніміз – программалық жабдықтауда негізгі кластан туынды класты
Негізгі кластан туынды класс, ал туынды кластан жаңа туынды
пайда болады. Туынды кластан негізгі кластың жабық элементтеріне рұқсат
Жаңа класты жобалай отырып алдын ала оның обьектілері қандай
Түрлі класс обьектілері мен кластардың өздері алдын ала құрастырған
Кез келген класс басқа кластан туындайды. Ол үшін оны
TchildClass=Class(TParentClass)
Туындаған кластан автоматты түрде өзінің ата – анасының өрісі,
TObject Pascal – дың барлық кластары жалғыз ата –
TaClass=Class(Tobject)
TаClass=Class
Мұрагерлік принципі TОbject класынан оның ұрпақтарына қарай дами отырып,
Обьектіге бағытталған бағдарламаның мұрагерлік қасиеті бұрыннан анықталған кластарға жаңа
Туындысын жариялағанда алғы буынның атын міндетті түрде көрсету қажет.
3 - суретте Delphi – дегі кластар тармағы келтірілген.
3 – сурет. Delphi – дегі кластар тармағы
2.2 Полиморфизм
Полиморфизм – бұл бір атты екі немесе одан да
Полиморфизм – бұл мағынасы ұқсас мәселелерді әртүрлі тәсілмен шешетін
Object Pascal тілінде полиморфизм тек жоғарыда сипатталған мұрагерлік механизмі
Полиморфизм концепциясы әр әдістің обьектіге және сол уақытта әдістің
Сонымен қатар, полиморфизм операторларға да қолданылады. Барлық программалау тілдерінде
Полиморфизмнің қолдануына ең жақсы мысал ретінде Delphi ортасын қолданамыз.
Полиморфизм - әртүрлі кластарға жататын әдістерге бір атауды қолдану
Үш класс анықталсын дейік, оның біреуі екеуіне негізгі болады.
Type
// негізгі класс
TPerson = class
Fname:string; // аты
Constructor Create(name:string);
Function info:string; virtual;
End;
TStud = Class(TPerson)
Fgr:integer; // группа номері
Constructor Create(name:string; gr:integer);
Function info:string; override;
End;
TProf = class(TPerson)
Fdep:integer; // кафедра атауы
Constructor Create(name:string; dep:string);
Function info:string; override;
End;
Әрбір осы кластың info әдісі анықталған. Негізгі класта virtual
Жарнама әдісі кішігірім класқа виртуалдық әдісті өзінің жеке меншігіне
Әрбір кішігірім кластың өзінің info әдісі анықталған.
Function TPerson.info:string;
Begin
Result:=’’;
End;
Function TPerson.info:string;
Begin
Result:fname + ‘гр.’+inttostr(fgr);
End;
Function TPerson.info:string;
Begin
Result:fname + ‘каф.’+fdep;
End;
Сол сияқты екі класта негізгіден шыққандықтан, мұғалімдер мен студенттердің
List:array[1..SZL] of TPerson;
Тізімді мынандай тәсілмен хабарлауға болады, себебі оған Object
Массив элементтері арқылы студенттер мен мұғалімдердің тізімін шығару info
St:=’’;
For i:=1 to SZL do //
If list[i] NIL
Then st:=st+list[i]. info+#13;
ShowMessage(st);
Программаның жұмыс істеу барысында әрбір массив элементі TStud және
Келесі программа жоғарыда көрсетілген кластардың TPerson, TStud және Tprof
4 - сурет. Полиморфизм программасының сұхбат терезесі.
Unit polimor_;
Interfase
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Type
TForm1 = class(TForm)
Edit1:TEdit;
Edit2:Edit;
GrupBox1:TGrupBox;
Radiobutton1:TRadiobutton;
Radiobutton2:TRadiobutton;
Label1:TLabel;
Label2:TLabel;
Button1:TButton;
Button2:TButton;
Procedure Button1Click(Sender:TObject);
Procedure Button2Click(Sender:TObject);
Private
{Private declarations}
Public
{Public declarations}
End;
Type
// негізгі класс
TPerson = class
Fname:=string; // аты
Constructor Create(name:string);
Function info:string; virtual;
End;
// студент класы
TStud = class(TPerson)
fGr:integer; // гриппа номірі
constructor Create(name:string; gr:integer);
function info:string; override;
end;
// мұғалім класы
TProf = class(TPerson)
Fdep:string; // кафедра атауы
Constructor Create(name:string; dep:integer);
Function info:string; override;
End;
Const
SZL = 10; // тізім өлшемі
Var
Form1:TForm1;
List:array[1..SZL] of TPerson; // тізім
n:integer = 0;
implementation
{$R * DFM}
Constructor TPerson.Create(name:string);
Begin
Fname:=name;
End;
Constructor TStud.Create(name:string; gr:integer);
Begin
Inherited Create(name); // негізгі кластың конструкторын шақыру
fGr:=gr;
end;
Constructor TStud.Create(name:string; dep:integer);
Begin
Inherited Create(name); // негізгі кластың конструкторын шақыру
fDep:=dep;
end;
function TPerson.Info:string;
begin
result:=fname + ‘гр.’ +inttostr(fGr);
end;
function TPerson.Info:string;
begin
result:=fname + ‘каф.’ +inttostr(dep);
end;
// Қосу батырмасын шерту
Procedure TForm1.Button1Click(Sender:TObject);
Begin
If n
// тізімге обьектті қосу
N:=n+1;
If Radiobutton1.Chesced
Then // TStud обьектін құру
List[n]:=TStud.Create(edit1.text,strtoint(edit1.text));
Else // TProf обьектін құру
List[n]:=TProf.Create(edit1.text,edit2.text));
// кірістіру алаңын тазарту
Edit1.text:=’’;
Edit2.text:=’’;
Edit1.SetFocus; //
End;
Else Showmessage(‘тізім толықтырылды!’);
End;
Procedure TForm1.Button2Click(Sender:TObject);
Var
I:integer; // индекс
St:string; // тізім
Begin
For i:=1 to SZL do
If list[i]NIL then st:=st+list[i].info+#13;
ShowMessage(‘тізім’+#13+st);
End;
End.
TForm1.Button1Click процедурасы Қосу(Button1) кнопкасын басу арқылы жіберіліп, list[n] TStud
TForm1.Button2Click процедурасы Тізімі (Button2) ) кнопкасын басу арқылы жіберіледі.
Property IntegerValue:Integer read IntField write SetField;
End;
Егер қасиет тек оқу немесе жазу үшін ғана қажет
Шыныда да, ол қасиеттің өзінің типіндей мәліметтерден қандай да
3. Кластарды хабарлау
Жаңадан құрылатын кез келген класс төмендегідей қызметші сөздермен анықталатын
Секциялар класты сипаттау элементтерінің көрінетін бөлігін анықтайды. Public секциясы
Published секциясы тек стандартты емес компоненттерді жасауда пайдаланылады. Delphi
Private секциясы көріну бөлігін ең төменгі бөлігіне дейін кішірейтеді:
Жабық элементтердің сипатталуы осы кластың ішіндегі, яғни класс сипатталған
Private секциясында хабарланған элемент, егер ол басқа модульде орналасқан
Automated секциясы OLE обьектілерін автоматтандыру интерфейсінде қосылатын қасиеттер мен
Object Pascal тілінде кез келген секцияны бірнеше рет, яғни
Unit Unit1;
Uses Controls, Forms;
Type
TForm1 = class(TForm)
Button1:TButton;
Private
FintField:integer;
Procedure SetValue(Value:integer);
Function GetValue:integer
Published
Property IntField:read GetValue write SetValue
Protected
Procedure proc1;
Public
Procedure proc2;
End;
Var
Form1:TForm1;
Implementation
Procedure TForm1.Proc1;
Button1.Color:=clBtnFace;
FIntField:=0;
IntField:=0;
Proc1;
Proc2;
End;
Begin
Form1.Button1.Color:=clBtnFace;
Form1.FlintField:=0;
Form1.IntField:=0;
Form1.Proc1; // Бұл жазу қате!
Form1.Proc2;
End;
Unit Unit2;
Interface
Uses Controls, Unit1;
Type
TForm2 = class(TForm1)
Button2:TButton;
Procedure Button2Click(Sender:TObject);
End;
Var
Form2:TForm2;
Implementation
Procedure TForm2.Button2Click(Sender:TObject);
Begin
Form1.Button1.Сolor:=clBtnFace;
Form1.FlintField:=0; // Бұл жазу қате!
Form1.IntField:=0;
Proc1;
Proc2;
End;
Begin
Form1.Button1.Color:=clBtnFace;
Form1.FlintField:=0; // Бұл жазу қате!
Form1.IntField:=0;
Form1.Proc1; // Бұл жазу қате!
Form1.Proc2;
End;
Класс – ұрпақты хабарлауда класс элементтерінен бір бөлігінен басқа
Type
TForm2 = class(TForm2)
………..
Public
Procedure Proc1;
………..
End;
Осындай хабарлаудан кейін Unit2 модулін былай шақыруға болады:
Form2.Proc1;
Private секциясына алмастыру жасағаннан кейін хабарлау элементі ұрпақтарына көрінбейді(егер
Класс модульдің тек интерфейстік бөлігінде немесе жүзеге асырудың бастапқы
Қорытынды
Оқып – танысып тәжірибе алу – болашақ мамандықтарды оқыту,
Тәжірибе алу барысында студенттер Delphi программалау ортасымен, MathCad пен
Кластар – бұл күрделі программаларды жеңілдету және оның сапасын
Полиморфизм концепциясы әр әдістің обьектіге және сол уақытта әдістің
Мұрагерлік - обьектіге бағытталған бағдарламалаудың басты механизмдерінің бірі. Оның
Жалпы, қазіргі уақытта Delphi, MathCad, Maple туралы алған білімдердің
Пайдаланылған әдебиеттер
http://www.delphi king dom.com. delphi hall.narod.ru
Н. Культин «Основы программирования в Delphi7»
.В. В. Фаронов «Delphi6»
Борис Корпов «Delphi» специальный справочник
Халықова.К.З «Программалау тілдерін оқыту», 2005ж
6.Дантеман Джефф, Мишел Джим. Программирование в среде Delphi
25