Fəsil 3: Obyekt yönümlü proqramlaşdırma nədir?

Obyekt yönümlü proqramlaşdırma (OOP) bir proqramlaşdırma probleminin həlli ortaq bir obyektlərin toplusu olaraq modelləşdirildiyi bir paradiqma və ya bir proqramlaşdırma nümunəsidir. Obyektlər bir-birlərinə mesaj göndərməklə birlikdə işləyirlər. Böyük, mürəkkəb problemlərlə məşğul olmaq üçün ən uyğun.

Bir obyekt həm statusa (və ya xüsusiyyətlərə və ya atributlara) və davranışa sahib bir varlıqdır. Başqa sözlə, bir obyekt məlumatları və bu məlumatlarla işləyən funksiyaları kapsülləşdirir. Məlumatlar ümumiyyətlə digər obyektlərdən gizlidir, buna görə məlumatlara yalnız obyektin funksiyaları (və ya metodları) təsir göstərə bilər.

Bir obyekt nümunəsi bir avtomobildir. Avtomobilin atributları var (məsələn, rəng, ölçü, çəki, yanacaq tutumu, sərnişin sayı və s.). Bir avtomobilin üsulları ilə təmsil olunan davranış var (məsələn, mühərriki işə salmaq, sola / sağa dönmək, sürətləndirmək, dayandırmaq, silecekləri işə salmaq və s.).

Sinif, özünün nümunələrini yaratmaq üçün şablon olaraq istifadə olunan xüsusi bir obyekt növüdür. Bunu peçenye (və ya əşyalar) istehsal edən bir çerez kəsici kimi düşünün.

Bir sinif başqa bir sinfin (onun ana sinifinin) atributlarını və davranışlarını miras ala bilər və bu davranışı (yəni metodlarınızı) özü üçün dəyişdirə və ya uyğunlaşdıra bilər. Bu, polimorfizm anlayışına gətirib çıxarır. Polimorfizm o deməkdir ki, mesaj alındıqda obyektin sinfinə əsasən düzgün metod adlanır. Bu üsul ana elementə aid ola bilər və ya bu sinif üçün uyğunlaşdırıla bilər.

Polimorfizmin bir nümunəsidir:

Smalltalk ilə bir sinif yalnız bir sinifdən miras qala bilər. Bəzi OOP dillərində bir sinif bir neçə sinifdən miras qala bilər. Buna çoxlu miras deyilir. Çoxlu miras çox mürəkkəbdir, buna görə ümumiyyətlə yol verilmir. Birdən çox miras haqqında danışmayacağıq.

Vərəsəlik OOP'un vacib bir cəhətidir, ancaq proqram yaratmaq üçün yeganə yol deyil. Vərəsəlik əvəzinə kompozisiya və ya məcmu istifadə edilə bilər. Bir sinif bir şey miras almadan digər siniflərin nümunələrini ehtiva edə bilər. Bu "a" əlaqədardır: A sinif üzvü olaraq B sinfinə sahibdir. Vərəsəlik istifadə edərkən, B sinfi bir növ A sinif obyektidir. Bu "bir növ" münasibətdir. Bunu nümunələrlə izah edək ...

Avtomobil bir növ motorlu nəqliyyat vasitəsidir (ana sinif). Motosikletdir. Bu motorlu qayıq. Elə bir təyyarə. Bunların hər biri bir nəqliyyat vasitəsinin xüsusiyyətlərini və davranışlarını miras ala bilər. Bununla birlikdə, ana sinifin xüsusiyyətlərini və metodlarını da düzəldə bilərsiniz.

Avtomobilin bir hissəsi kimi digər obyektlər və ya siniflər var, məs. B. mühərrik, təkərlər, sükan və s. Bu siniflərdən heç bir şey miras almır.

Bir obyektin atributları (obyektin məlumatları) misal dəyişənlər tərəfindən sintaktik olaraq təmsil olunur. Nümunə dəyişənləri xarici dünyadan gizlədildiyi üçün ümumiyyətlə getter metodlarını (bir misal dəyişəninin dəyərini əldə edin) və müəyyənləşdirmə metodlarını (misal dəyişəninin dəyərini təyin və ya dəyişdir) yaradırsınız.

Pharo-da nümunə dəyişənləri sinif tərifində yaradılır, məsələn:

Ölçü alt sinif: # Dəqiqə NümunəVariable Adlar: 'Saniyə Nanos' Sinif Dəyişən Adlar: '' HovuzD lüğətlər: 'XronologiyaKonstants' Paketi: 'Kernel-Chronologie'

#Time sinifində (#Time-dakı hash vaxtı kiçik bir danışıq simvolu kimi göstərir) iki misal dəyişən var: "saniyə" və "nanos". Obyektin metodları, obyektin gizli və daxili vəziyyətini təmsil edən bu dəyişənləri emal edir.

# Saat sinfi # Maqnitlik sinifindən əldə edilir və ya onu götürür. Alternativ olaraq, Miqyaslılıq sinifini Zaman sinifinin alt sinifləri adlandıra bilərsiniz. Bu tipik kiçik bir danışıq dilidir.

Bir obyekt C və Paskal kimi sadə prosedur proqramlaşdırma dillərində istifadə olunan ənənəvi modul konsepsiyasına bənzəyir. Bir modul bir məlumat quruluşunu və struktur üzərində işləyən funksiyaları ehtiva edir. Ancaq məlumatlar gizlədilmir. Hər kəs məlumatları əldə edə bilər. Ən əsası, modullar digər modullardan miras qala bilməz.

Obyektlər ümumiyyətlə modullardan daha incədir. Bu, onları kompleks sistemlərin modelləşdirilməsi üçün ideal hala gətirir.

Demək belə oldu. Bu obyekt yönümlü proqramlaşdırmaya girişinizdir. Bu maraqlı mövzunu dərinləşdirmək istəyirsinizsə, məsələn OOP və Smalltalk ilə əlaqəli bir çox kitab və material var:

  • Alec Sharp'a əsaslanan Smalltalk
  • Chamond Liu tərəfindən hazırlanmış kiçik əşyalar, obyektlər və dizayn
  • Stefan Ducasse, Dimitris Chloupis, Nikolay Hess, Dmitri Zagidulinin nümunəsindən istifadə edən Pharo