Apstrakcija (objektno-orijentisano programiranje)

S Vikipedije, slobodne enciklopedije

U programiranju, apstrakcija se ogleda u odabiru parametara prilikom modelovanja predmeta ili pojmova koji su bitni za dalju obradu.[1] Konkretnije, u objektno-orijentisanom programiranju se odnosi na mogućnost da se data klasa proglasi za apstraktnu klasu.[2]

Objašnjenje[uredi | uredi izvor]

Pod apstrakcijom se podrazmeva zanemarivanje nebitnih detalja objekata u zavisnosti od potreba.[1] Prilikom opisivanja nekog sistema, apstrakcija beleži samo one njegove osobine koje mogu imati značaj za dalji rad, tako da se programer fokusira na manje koncepata u toku rada.[2][3] Prilikom apstrahovanja, apstrakcija mora biti dobro definisana tako da ostale apstrakcije mogu biti izvedene iz nje.[3] U objektno-orijentisanom programiranju, apstrakcije su najčešće reprezentovane upravo klasama.[3]

Na primer, za program koji beleži učlanjenje ljudi u biblioteke, od svih osobina svakog člana, potrebni su samo lični podaci poput imena, adrese i broja lične karte, dok ostale osobine nisu od interesa za rad programa.[1] Na osnovu toga se može formirati i zadata klasa Član koja bi imala te podatke, sa neki svojim metodama poput UpišiČlana i slično, u zavisnosti od potreba programa:

class Clan { //Класа члана библиотеке
public:
   Clan(strin i, string a, int b) : ime(i), adresa(a), BRLK(b) { upisan = false; } //Конструктор
   void upisiClana() { upisan = true; }
   void ispisiClana() { upisan = false; }
   friend ostream& operator<<(ostream& os, const Clan& c) { 
          os << c.ime << ' ' << c.adresa << ' ' << c.BRLK;
          if (c.upisan) 
              os << " upisan";
          else 
              os << " nije upisan";
          return os;
   }
private:
   string ime, adresa;
   int BRLK;
   bool upisan;
};

Iznad je klasa napisana na programskom jeziku C++. Dakle, bila nam je potrebna klasa preko koje bi utvrdili koji član je upisan i koji su njegovi podaci. Zbog toga su nam od interesa bili samo ti određeni atributi, što predstavlja apstrakciju u ovom slučaju.

Apstrakcija u objektno-orijentisanim jezicima[uredi | uredi izvor]

Kao što je rečeno, apstrakcija se iskazuje kroz klase koje koriste gotovo svi objektno-orijentisani jezici. Što se tiče jezika poput C++ i Java, apstrakcija se ogleda i kroz mogućnost stvaranja apstraktnih klasa.[1][2] Apstraktne klase su takve da se ne mogu instancirati, odnosno ne mogu se stvarati objektni koji su tipa tih klasa.[1] Koriste se da bi se iz njih dalje mogle izvesti konkretne klase koje se mogu instancirati.[1]

Primer za apstraktne klase bi bila klasa geometrijskih tela. Za apstraktan pojam geometrijska figura, nema smisla pitati kolika joj je površina. Ipak, kako postoje razne geometrijske figure poput pravougaonika i krugova, a njima se može izračunati površina, tada bi u konkretnoj klasi geometrijskih figura takva metoda bila proglašena za apstraktnom metodom (abstract method) ili čistom virtuelnom metodom (pure virtual method). Ovo je omogućeno u programskim jezicima poput C++, pa se u svakoj izvedenoj klasi ta metoda nasleđuje i može se izmeniti i ponovo definisati. U programskom jeziku C++ ovo se postiže tako što se u klasi da samo deklaracija metode, bez definicije i na nju doda '= 0', a sama metoda je virtuelna sa modifikatorom 'virtual' na početku deklaracije.[1][3] Kada klasa poseduje bar jednu apstraktnu metodu, tada je ona apstraktna klasa.[1][4]

Primer za apstraktnu klasu u programskom jeziku C++ bi bio:

class Osn { //Апстрактна класа
public:
   virtual void g(); //Обична виртуелна метода
   virtual void f() = 0; //Апстрактна метода
};

Reference[uredi | uredi izvor]

  1. ^ a b v g d đ e ž Kraus, Laslo (2016). Programski jezik S++ sa rešenim zadacima. Beograd: Akademska misao. ISBN 978-86-7466-582-4. 
  2. ^ a b v „Summary Of Object-Oriented Programming (OOP) Concepts In Java”. Javajee. Pristupljeno 28. 1. 2018. 
  3. ^ a b v g Erickson, Carl (2009). Object Oriented Programming (PDF). Atomic Object, LLC. str. 17. Pristupljeno 28. 1. 2018. 
  4. ^ „Abstract class”. cppreference. Pristupljeno 28. 1. 2018. 

Literatura[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]