Bu və ya digər proqramlaşdırma dilinin əsasını müəyyən ideya təşkil edir. bu ideya uyğun
proqramın stilinə təsir edir. Tarixən birinci struktur proqram ideyası var idi. Proqramçı hansı
proseduralardan istifadə edəcəyinə qərar verməli idi, sonra isə bu prosedurların realizasiyası üçün
ən yaxşı alqoritm seçməli idi. Prosedur proqramlaşdırmaya tipik misal hələ də mövcudluğunu
saxlayan Fortran dilidir. Prosedur proqramlaşdırmanın çox istifadəsi geniş proqramlaşdırma
kitabxanalarının yaranmasına gətirdi. Onlar kiçik proseduralardan ibarət idi.
Hesablama riyaziyatının inkişafı ilə prosedurlarla yanaşı verilənlərin təşkili istiqamətində də
inkişaf baş verdi. Effektiv mürəkkəb proqramların hazırlanmasında verilənlərin düzgün istifadəsinə
nəzarət olmalıdır. Bu vaxt Algol-60, Pascal, Modula-2, C dilləri yarandı. Bu dillərdə verilənlərin
tiplərinin strukturu inkişaf etdirilib. Bu inkişafın məntiqi nəticəsi modul roqramlaşdırma oldu.
Burada verilənlər və prosedurları modulun içərisində gizlətmək mümkün idi.
Simula -67 –dən başlayaraq yeni obyekt yönümlü proqramlaşdırma istifadə olunmağa
başladı. Onun əsas ideyası verilənlərlə bağlı proseduraları vahid şəkildə -obyektdə birləşdirməkdir.
Nəticədə verilənlər və proseduralar öz müstəqil qiymətlərini iitirirlər. Onların əsas xüsusiyyəti
inkapsulyasiya (birləşdirmədir). Yəni verilənlərin işlənmə alqoritmləri birləşdirilir. OYP modul
proqramlaşdırmanın yeni bir səviyyəsidir. Burada modullar təsadüfi deyil onların mənalarına əsasən
birləşdirilir, birgə istifadə edilir. OYP-ni riyazi hesablamalarda istifadə etmək mənasızdır. OYP
əsasən mürəkkəb strukturlu dialoq rejimində işləyən proqramların yaradılmasında istifadə edilir.
Verilənlər obyektin sahələri, alqoritmlər onun metodları adlanır. Inkapsulyasiya nəticəsində
obyektlər ətraf mühitdən maksimal dərəcədə izolyasiya edilir. Obyektlərdə birləşdirilən alqoritm və
verilənlərin modifikasiyası ümumiyyətlə proqramın korlanmasına gətirir. Ümumiyyətlə, yaxşı olar
ki, qlobal dəyişənlərdən istifadə olunmasın. Varislik prinsipində övlad valideynin xassələrinə malik
olur, lakin özünün də yeni xassələri ola bilər. Polimorfizm qohum obyektlərin xassəsidir, yəni eyni
valideyni olan obyektlərdə oxşar problemləri fərqli üsullarla həll etməkdir. Övladda bu və ya digər
alqoritmi dəyişmək üçün övladda eyni alqoritmi eyni adla verib, daxilində dəyişiklik etmək
lazımdır. Nəticədə eyni alqoritm müxtəlif cür işləyəcək. bu eəl polimorfizmdir.
Pascalda həm də övladların metodlarını virtuallaşdırmaqla valideynlərin də onlara
müraciətlərini mümkün etmək olar. Pascalda OYP-ni izah etmək üçün bir misala baxaq.
Misal. Ekranda br sıra qrafik obyektlər yaradan (nöqtə, dairə, xətt, düzbucaqlı) və bu
şəkilləri ekranda hərəkət etdirməyə imkan verən proqram yaratmaq tələb olunur.
Şəkilləri ekranda sürüşdürmək üçün kursoru idarə edən klavişlər istifadə olunacaq: Home, End,
Pgup, Pgdn və Tab ilə obyekti seçmək olar, Esc ilə proqramdan çıxmaq olar.
Proqramın texniki realizasiyaı üçün iki standart kitabxana Crt və Graph modulları lazım
olacaq.
Obyektin yaradılması
Turbo Pascalda obyektlərin yaradılması üçün üç ehtiyat sözdən istifadə olunur: object, constructor,
destructor və üç
standart direktiv private, public və
virtual.
Obyektin təsviri üçün object sözündən aşağıdakı şəkildə istifadə edilir.
Type Myobject = object
{obyektin sahələri}
{obyektin metodları}
End;
Əgər obyekt hansısa valideyndən törəyirsə, valideynin adı mötərizədə verlilir.
Type Toremeobject = object(Myobject)
… ….
End;
İstənilən obyektin çoxlu sayda törəmələri ola bilər və bu ancaq bir valideynin törəmələri ola bilər və
ierarxik ağac alınacaq. Bizim məsələ üçün valideyn obyekt TGraphobject-dir və bütün digər
obyektlər üçün ortaq olan sahə və metodlar onun ətrafında birləşəcək:
type
tgraphobj=object
private{obyektin sahələri istifadəçidən gizlədiləcək}
x,y:integer; {nişan nöqtəsinin kordinatları}
color:word; {Fiqurun rəngi}
public {obyektin metodları istifadəçiyə açıq olacaq}
constructor Init (ax,ay:integer; acolor:word); {obyektin nümunəsini yaradır}
procedure draw(acolor:word); virtual; {obyekti verilmiş acolor rəngi ilə rəngləyir}
procedure show; {obyekti göstrir və acolor ilə onu rəngləyir}
procedure hide ; {obyekti gizləyir, yəni fonun rəngi ilə onu rəngləyir}
procedure moveto (dx,dy:integer);{obyekti x+dx, y+dy kordinatlı nöqtəyə sürüşdürür}
end; {TGraphobj obyektinin təsvirinin sonu}
Gələcəkdə TgraphObj obyektindən törəmə obyektlər yaradılacaq. Bu obyektlər nöqtə, xətt,
dairə və düzbucaqlının bütün xüsusiyyətlərini realizasiya edəcək. Bu qrafik obyektlərdən
hər biri
ekranda vəziyyəti (x,y sahələri) və rəngi (color sahəsi) ilə xarakterizə olunacaq. Draw metodunun
köməyilə o özünü ekranda əks etdirəcək. Show ilə özünü göstərəcək, Hide ilə gizlədəcək, Moveto
ilə hərəkət edəcək. qrafik obyektin xassələrinin ortaqlığını nəzərə alaraq, biz abstrakt TgraphObj
abstrakt obyektini təsvir edirik. Bu obyekt heç bir konkret fiqurla bağlı deyil. O real fiqurların bütün
ümumi sahə və metodlarını özündə birləşdirir və digər obyektlər üçün valideyn rolunu oynayır.
Obyektin təsvirindəki Private direktivi gizli sahə və metodların təsvirini verir. Bu hissədə
sadlanan obyektin elementlərini proqramçı görmür, əgər bu obyekti o TPU kitabxanası çərçivəsində
alırsa. Elə sahə və metodlar birləşdirilir ki, proqramçı bilavasitə ona giriş ala bilməsin. Bizim
misalda proqramçı nişan nöqtəsinin kordinatlarını (x,y-i) istənilən şəkildə dəyişə bilməz, çünki bu
obyekti hərəkət etdirməyəcək. x və y sahələrini dəyişdirmək üçün obyektin tərkibinə daxil olan Init
və Moveto metodları nəzərdə tutulub. Gizli sahə və metodlar o proqram və modullara açıqdır ki,
orada uyğun obyekt təsvir olunsun. Hesab edəcəyik ki, proqram obyektlərin təsvirinə malik
Graphobj-ni istifadə edəcək. Aydındır ki, real məsələ çərçivəsində obyektin gizli elementlərini
təsvir etmək mütləq deyil. Public direktivi Private direktivinin təsirini ləğv edir, buna görə də ondan