Концепти објектно оријентисаног програмирања

Подсетимо се – постоје два основна концепта у развоју програма. Историјски старији је процедурално оријентисано програмирање (то је оно што смо до сада радили!) У процедурално оријентисаном програмирању систем моделујемо поступком који се састоји од корака. Размишљамо, по корацима, како се и када нешто ради. Решење се описује АЛГОРИТМОМ и ДИЈАГРАМОМ ТОКА! Програмер треба да замисли да је процесор и да размишља које све кораке треба процесор да обави како би извршио решење задатог проблема. Како су програми, односно програмски системи постајали сложенији, тимови програмера који раде на развоју софтвера бројнији – време потребно за израду једног програма постало је све веће али је и могућност појаве грешке постајала већа. Због тога је развијен нови концепт – објектно оријентисано програмирање (ООП). У објектно оријентисаном програмирању проблем се разлаже на делове (модуларно програмирање!). У проблему се уочавају објекти који нешто раде. Битно је шта они раде, а не како то раде. Унутрашњост објекта је његово тренутно стање, и решење проблема се своди на описивање начина на који се то стање реализује, као и начина на који се прелази из стања у стање. Споља се над објектом могу вршити акције које мењају или испитују његово тренутно стање. Други објекти дејствују са датим објектом само преко тих акција. – дакле, описују се објекти и везе између њих. Објекти су, у ствари, модули а везе између објеката су неке функције које из једног модула делују на други.

Постоје 4 концепта објектно оријентисаног програмирања који важе у свим објектно оријентисаним језицима, а преклапање оператора, као пети концепт специфичан је само за програмски језик C++:

1. апстракција омогућава да користимо објекат само на основу његових веза са спољним светом и знањем о томе шта објекат ради. Апстракцијом се сматра скуп објеката из система који имају нека заједничка својства, битна са становишта њиховог окружења: дрво, пас, особа, банковни рачун…
2. енкапсулација – реализација неког кориснички дефинисаног типа (а то су ОБЈЕКТИ) треба да буде сакривена од остатка система. Потребно је корисницима дефинисаног типа прецизно дефинисати шта се са датим типом може урадити, а начин како се то тачно ради сакрива се од корисника.
3. наслеђивање – постоји објекат родитељ и објекат наследник. Наследник наслеђује све особине родитеља и дограђује их неким новим или променом постојећих
4. полиморфизам – наслеђени тип се понаша на њему својствен начин, иако се користи као основни тип. У деловима програма могу се користити основни типови, или наслеђени, зависно од ситуације, али кориснику то не представља проблем – он задаје акцију која треба да се изврши, а објекат ту акцију извршава онако како њему одговара. Корисник објекта не мора да зна да ли је објекат основног или изведеног типа!
5. преклапање оператора (специфично за програмски језик C++) – да би типови које је дефинисао програмер били сасвим равноправни са уграђеним типовима, могуће је дефинисати значења оператора која постоје у језику (пример су аритметичке операције комплексних бројева)

Шта се мења преласком на објектно оријентисано програмирање?

Ево неколико напомена о томе шта се мења у размишљању и писању програма на објектно оријентисани начин:

1. објектно оријентисано програмирање уводи другачији начин размишљања у програмирање!
2. У објектно оријентисаном програмирању, много више времена се троши на пројектовање, а мање на саму реализацију (програмирање, кодовање).
3. У објектно оријентисаном програмирању се размишља о проблему који се решава, а не директно о програмском решењу.
4. У објектно оријентисаном програмирању се размишља о деловима система (објектима) који нешто раде, а не о алгоритмима, тј. о томе како се нешто ради.
5. У објектно оријентисаном програмирању, пажња се пребацује са реализације делова програма на међусобне везе између тих делова. Тежња је да се број и интензитет тих веза што више смањи и да се оне строго контролишу.

Циљ објектно оријентисаног програмирања је да смањи интеракцију између софтверских делова.

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се /  Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се /  Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се /  Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се /  Промени )

Повезивање са %s