Objektno-orijentisano programiranje zasniva se na pet osnovnih principa: apstrakciji, enkapsulaciji (učaurivanju), nasleđivanju, polimorfizmu i ponovnom korišćenju koda.

Polimorfizam

Polimorfizam u prevodu znači "mnogo oblika". Na primer: ista metoda može da deluje različito, u zavisnosti od tipa ili broja parametara koji joj se prosleđuju. Polimorfizam se zasniva na ideji da metoda koja je deklarisana u osnovnoj klasi može da se implementira na više različitih načina u različitim izvedenim klasama

Pod polimorfizmom (polymorphism) u objektno-orijentisanom programiranju podrazumeva se sposobnost programa da se prilagođava tipu podataka koji se upravo obrađuju. Na primer, ako se obrađuje skup geometrijskih figura i treba izračunavati površine tih figura. Površina različitih vrsta figura, kao što su krugovi, pravougaonici i trouglovi, računa se na različite načine, pomoću različitih formula. Polimorfizam obezbeđuje da u programu ne treba za svaku pojedinačnu figuru ispitivati kojoj vrsti pripada i primeniti odgovarajuću formulu. Dovoljno je zatražiti da se izračuna površina date figure, a prepoznavanje vrste figure i primena odgovarajuće formule dešavaju se automatski.

Drugačije rečeno, pri obradi geometrijskih figura treba da postoji klasa figura u kojoj je predviđeno izračunavanje površine figure. Za svaku konkretnu vrstu figura treba da postoji potklasa, a u njoj metoda za izračunavanje površine te vrste figura prema odgovarajućoj formuli a na osnovu dimenzija koje su polja klase. Kada se zatraži izračunavanje površine neke figure koristiće se metoda iz potklase kojoj ta figura pripada.

Treba još uočiti da se u zajedničkoj natklasi figura izračunavanje površine i ne može nikako sprovesti. Dok se ne zna o kakvoj vrsti figura se zapravo radi, ne može da se uradi ništa što bi imalo smisla. Ovakve situacije nisu retke u objektno-orijentisanom programiranju.

Metoda za izračunavanje u natklasi je tada prazna, odnosno, stručno rečeno, ona je apstraktna metoda (abstract method). I za samu natklasu se tada kaže da je apstraktna klasa (abstract class), jer nema smisla stvarati objekte tipa takve klase.

U posmatranom primeru geometrijska figura je apstraktan pojam, jer ne mogu da postoje geometrijske figure kao takve, već samo krugovi, pravougaonici i trouglovi. Pojam geometrijska figura služi samo zato da se objedinjeno iskažu neke zajedničke osobine svih vrsta figura. Na primer, da im se može izračunavati obim i površina.


Na koji način se to realizuje u programu? ( Način na koji to koristimo na vežbama)

1. način koji ćemo raditi na vežbama:

Polimorfizam se realizuje preko virtualnih metoda.
    - za deklaraciju virtuelnih metoda se koristi ključna reč virtual.
    - virtualne metode se mogu reimplementirati u izvedenim klasama (kod njih se koristi ključna reč override).

  1. public class Forumas
  2. {
  3.   public virtual void PrikaziForume() {...}
  4. }
  5. public class Moderator : Forumas
  6. {
  7.   public override void PrikaziForume() {...}
  8. }

// jer moderator vidi dodatne (skrivene potforume) koje ne vidi običan forumaš.

Virtuelna i reimplementirana (overrajdovana ) metoda moraju biti identične, tj. moraju imati:
Exclamation isti naziv,
Exclamation isti modifikator pristupa,
Exclamation isti tip rezultata,
Exclamation iste tipove parametara.


Ako imamo takve dve metode, a želimo da iz izvesene klase pozovemo metodu iz bazne klase, onda tada samo koristimo:  base.ImeMetode(parametri...);


Ukoliko ne želimo da drugi programeri, nasleđjuju neku od klasa, koje smo napravili
--> to možemo učiniti pomoću ključne reči sealed , a takve klase se nazivaju zapečaćene klase.

Zapečaćena (sealed) klasa ne može da se koristi kao bazna klasa bilo koje druge klase.
Sintaksa:
  1. public sealed class ZapecacenaKlasa
  2.     {
  3.         //...
  4.     }


Ponovno korišćenje koda

Radi što efikasnijeg programiranja poželjno je da se jednom napisani programski delovi mogu iskoristiti više puta, i to bez ponovnog pisanja.

U klasičnom, proceduralnom programiranju, to se svodi na upotrebu biblioteka funkcija opšte namene u više programa.

Taj vid ponovnog korišćenja koda postoji i u objektno-orijentisanom programiranju, pri čemu se tu prave biblioteke klasa opšte namene.

Nasleđivanje predstavlja drugi vid ponovnog korišćenja koda. Metode napisane u natklasi nasleđuju se u potklasama, pa ih ne treba ponovo pisati. U potklasama je potrebno napisati samo metode koje obezbeđuju dodatne funkcionalnosti u odnosu na natklasu.


Last modified: Thursday, 5 November 2020, 12:21 AM