Апстракција (објектно-оријентисано програмирање)

Из Википедије, слободне енциклопедије
Jump to navigation Jump to search

У програмирању, апстракција се огледа у одабиру параметара приликом моделовања предмета или појмова који су битни за даљу обраду.[1] Конкретније, у објектно-оријентисаном програмирању се односи на могућност да се дата класа прогласи за апстрактну класу.[2]

Објашњење[уреди]

Под апстракцијом се подразмева занемаривање небитних детаља објеката у зависности од потреба.[1] Приликом описивања неког система, апстракција бeлежи само оне његове особине које могу имати значај за даљи рад, тако да се програмер фокусира на мање концепата у току рада.[2][3] Приликом апстраховања, апстракција мора бити добро дефинисана тако да остале апстракције могу бити изведене из ње.[3] У објектно-оријентисаном програмирању, апстракције су најчешће репрезентоване управо класама.[3]

На пример, за програм који бележи учлањење људи у библиотеке, од свих особина сваког члана, потребни су само лични подаци попут имена, адресе и броја личне карте, док остале особине нису од интереса за рад програма.[1] На основу тога се може формирати и задата класа Члан која би имала те податке, са неки својим методама попут УпишиЧлана и слично, у зависности од потреба програма:

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;
};

Изнад је класа написана на програмском језику C++. Дакле, била нам је потребна класа преко које би утврдили који члан је уписан и који су његови подаци. Због тога су нам од интереса били само ти одређени атрибути, што представља апстракцију у овом случају.

Апстракција у објектно-оријентисаним језицима[уреди]

Као што је речено, апстракција се исказује кроз класе које користе готово сви објектно-оријентисани језици. Што се тиче језика попут C++ и Java, апстракција се огледа и кроз могућност стварања апстрактних класа.[1][2] Апстрактне класе су такве да се не могу инстанцирати, односно не могу се стварати објектни који су типа тих класа.[1] Користе се да би се из њих даље могле извести конкретне класе које се могу инстанцирати.[1]

Пример за апстрактне класе би била класа геометријских тела. За апстрактан појам геометријска фигура, нема смисла питати колика јој је површина. Ипак, како постоје разне геометријске фигуре попут правоугаоника и кругова, а њима се може израчунати површина, тада би у конкретној класи геометријских фигура таква метода била проглашена за апстрактном методом (abstract method) или чистом виртуелном методом (pure virtual method). Ово је омогућено у програмским језицима попут C++, па се у свакој изведеној класи та метода наслеђује и може се изменити и поново дефинисати. У програмском језику C++ ово се постиже тако што се у класи да само декларација методе, без дефиниције и на њу дода '= 0', а сама метода је виртуелна са модификатором 'virtual' на почетку декларације.[1][3] Када класа поседује бар једну апстрактну методу, тада је она апстрактна класа.[1][4]

Пример за апстрактну класу у програмском језику C++ би био:

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

Референце[уреди]

  1. 1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 Краус, Ласло (2016). Програмски језик С++ са решеним задацима. Београд: Академска мисао. ISBN 978-86-7466-582-4. 
  2. 2,0 2,1 2,2 „Summary Of Object-Oriented Programming (OOP) Concepts In Java”. Javajee. Приступљено 28. 1. 2018. 
  3. 3,0 3,1 3,2 3,3 Erickson, Carl (2009). Object Oriented Programming (PDF). Atomic Object, LLC. стр. 17. Приступљено 28. 1. 2018. 
  4. ^ „Abstract class”. cppreference. Приступљено 28. 1. 2018. 

Литература[уреди]

Спољашње везе[уреди]