begin
setcolor(acolor);
rectangle(x,y,x+dx,y+dy);
end;
Qrafik
obyektlərin təsvirinin əsas proqramın yaradılmasına mane olmaması üçün onu
Graphobj modulu kimi formalaşdıraq.
Unit Graphobj;
Interface
{bu hissədə ancaq obyektlərin elanı verilir}
Type TgraphObj=object
………end;
Implementation
{burada bütün metodların təsviri verilir}
Uses Graph;
Constructor TgraphObj.Init;
…………..end;
End.
Obyektlərin istifadəsi
Sahə və alqoritmlərin inkapsulyasiyası ideyasını nəinki ancaq qrafik obyektlərə həm də
bütövlükdə proqrama tətbiq etmək olar. Bir obyekt yaradaq və ona inisializasiya (Init), əsas işin
icrası (Run) və qurtarma (Done) öyrədək.
Init-də ekran qrafik rejimə keçir və qrafik obyektlər görünür. (100 nöqtə, bir xətt, dairə və
düzbucaqlı). Run mərjələsində klaviatura yoxlanır və qrafik obyektlər hərəkət etdirilir. Nəhayət
Done mərhələsində ekran mətn rejiminə keçir və proqramın işi qurtarır. Bu obyekti Thereketgraph
adlandıraq və Hereketgraph modulunda yerləşdirək.
Unit
HereketGraph;
Interface
Type
Thereket = object
Procedure Init;
Procedure Run;
Procedure Done;
End;
Implementation
….
End;
Bu halda əsas proqram çox sadə olacaq.
Program Grafik_obyektler;
Uses hereketgraph;
Var hereket:thereketgraph;
Begin
Hereket.Init;
Hereket.Run;
Hereket.Done;
End.
Göründüyü kimi metodlara müraciət zamanı obyekt tipli dəyişən elan edirik
(Hereket:Thereketgraph) və Həmindəyişən.metod yazırıq.
Destructor sadəcə bir prosedurdur. Adı fərqlidir. Bu constructor-a uyğun yaradılıb, yəni onun
əvəzinə prosedur da yazmaq olar. Sadəcə proqramı bitirən proseduru destructor adlandırmaqla
proqramı daha da oxunaqlı etmək olar. Beləliklə, constructor, virtual və object əsas anlayışlardır.
{Hereket graph modulunu əlavə edirik}
unit hereketgraph;
interface
uses graphobj;
const npoints=100;
type
thereketgraph=object
points:array[1..npoints] of tpoint;
circ:tcircle;
activeobj:integer;
procedure init;
procedure run;
destructor done;
procedure showall;
procedure moveactiveobj(dx,dy:integer);
end;
implementation
uses graph,crt;
procedure thereketgraph.init;
var d,r,err,k:integer;
begin
d:=detect;
initgraph(d,r,'c:\bp\bgi');
err:=graphresult;
if err<>0 then begin grapherrormsg(err);
halt
end;
for k:=1 to npoints do
points[k].init(random(getmaxx),random(getmaxy),random(15)+1);
circ.init(getmaxx div 2, getmaxy div 2, getmaxy div 5, white);
showall;
activeobj:=1;
end;
procedure thereketgraph.run;
var stop:boolean;
const d=5;
begin
stop:=false;
repeat
case readkey of
#27 : stop:=true;
#9 :begin
inc(activeobj);
if activeobj>3 then activeobj:=3;
end;
#0 : case readkey of
#71 :moveactiveobj(-d,-d);
#72 :moveactiveobj(0,-d);
#73 :moveactiveobj(d,-d);
#75 :moveactiveobj(-d,0);
#77 :moveactiveobj(d,0);
#79 :moveactiveobj(-d,d);
#80 :moveactiveobj(0,d);
#81 :moveactiveobj(d,d);
end
end;
showall;
until stop;
end;
destructor thereketgraph.done;
begin
closegraph;
end;
procedure thereketgraph.showall;
var
k:integer;
begin
for k:=1 to npoints do points[k].show;
circ.show;
end;
procedure tgraphapp.moveactiveobj;
begin
if activeobj=1 then circ.moveto(dx,dy);
end;
end.
Mühazirə 3.
Proqramlaşdırma prinsipləri.
Delphi vizual modeli
Delphi proqramların hazırlanması üçün vizual mühitdir. Bu o deməkdir ki, xarici görünüşün
formalaşmasında çox işi siçanın köməyi ilə (lazımi obyektləri formanın üzərində qoymaqla) etmək
olar. Bu əməllər kubiklərdən evciyin qurulmasına bənzəyir. Delphi mühiti proqramların
hazırlanmasını proqramçılar üçün maksimum dərəcədə rahatlaşdırır. Proqramın xarici görünüşünü
düzəltmək prosesi sürətlənir. Bu zaman proramın işləmə məntiqinə diqqət ayırmaq olar və bilavasitə
proqramın riyazi hissəsinin yaradılması ilə məşqul olmaq olar.
Komponentləri yerləşdirməzdən əvvəl bir az nəzəriyyəyə baxaq. Bu Delphinin obyektlərinə,
siniflərinə və komponent modelinə aiddir. Bu əsasdır və onu istənilən proqramçı bilməlidir. Sadə
proqramı hətta meymuna da öyrətmək olar, lakin müstəqil həqiqi proqramlar yaratmaq üçün
proqramlaşdırmanın bütün əsaslarını başa düşək lazımdır. Əks halda siz müxtəlif şablonları
təkrarlamış olacaqsınız və onları dəyişdirə və ya yaxşılaşdıra bilməyəcəksiniz. Bu paraqrafda ən
zəruri biliklər verilir ki, onları praktikada istifadə edəcəyik. Lakin burda hələlik abstrakt
proqramlaşdırma dili istifadə edəcəyik. Növbəti paraqrafda Delphi dili ilə bilavasitə tanış olacağıq.
Prosedur proqramlaşdırma
Proqramlaşdırma dillərinin inkişafı ilə proqramlaşdırma texnologiyaları da inkişaf edib. İlk
proqramlar ancaq mətnlər idi. Belə bir yanaşma ilə çox az iş görmək olardı. Məntiq ancaq şərti
keçidlərlə mümkün idi. Şərti keçid müəyyən şərt daxilində hər hansı əmrə keçməkdir. Xətti
proqramlaşdırma ilə ancaq xətti məntiq yaratmaq olar. Məsələn, proqramlardakı masterlər (Master
Wizard) xətti məntiqə malikdir. Ancaq müəyyən addımları icra edir.
Növbəti addım prosedur yanaşma oldu. Bu yanaşmada proramın hər hansı bir kodu ayrıca
bloklar (prosedurlar) şəklində birləşə bilər. Bundan sonra belə əmrlər blokunu proqramın istənilən
yerindən çağırmaq olar. Məsələn,
Prosedurun başlanğıcı
əmr 1
əmr 2
prosedurun sonu
Nəticədə eyni bir kodu bir proqramda bir neçə dəfə istifadə etmək olar.
Proqramın əvvəli
əmr 1
əmr 2
şərt ödənəndə 1 proseduru icra olunsun
əmr 3
proqramın sonu
Proqramın kodu rahat və anlaşılan oldu. Delphinin atası Pascal, Object Pascal prosedur dillərdir.
Prosedurlar indiyə qədər qalır və hər yerdə tətbiq olunur, ona görə də onları anlamaq vacibdir.
Proseduraya müxtəlif qiymətlər göndərməklə, müxtəlif hesablamalar aparmaq olar. Prosedurları
çağırmaqla onları icra edirlər.
Funksiyalar da proseduradır, ancaq qiymət qaytara bilir, həmin qiymətin tipi də göstərilir, onun
üzərində əməliyyat aparılır.
Obyekt yönümlü proqramlaşdırma
Proqramlaşdırma texnologiyasının inkişafında növbəti addım OYP-nin yaranması oldu.
Burda proqram kodu daha “səthi” deyil və roqramçı nəinki ancaq prosedur və funksiyalarla,
həmçinin bütöv siniflərlə əməliyyatlar aparır.
Sinif –xassələr, üsullar və hadisələr yığımıdır. Bu o deməkdir ki, sinif üsullar, xassələr və
hadisələrdən ibarətdir və onlar da sinfin tam işini təmin edir. Məsələn düymə (button) təsəvvür edək.
O aşağıdakılara malikdir:
1.
Xassələr (rəng, düymə üzərində mətn, mətnin şrifti və s.)
2.
Hadisələr (məsələn, düymə üzərinə basmaq)
3.
Üsullar (düymənin işini təmin edir, məsələn, mətnin yazılması üsulu vəs.)
Dostları ilə paylaş: |