Апстракција (објектно-оријентисано програмирање)У програмирању, апстракција се огледа у одабиру параметара приликом моделовања предмета или појмова који су битни за даљу обраду.[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; //Апстрактна метода
};
Референце
Литература
Спољашње везе
|
Portal di Ensiklopedia Dunia