Објектно-оријентисано програмирање

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

Објектно оријентисано програмирање је парадигма програмирања, која користи објекте као основу за пројектовање рачунарских програма и различитих апликација софтвера. Заснива се на различитим техникама, као што су наслеђивање, модуларност, полиморфизам и енкапсулација.

Решавање проблема парадигмом објектно-оријентисаног програмирања, је врло слично људском начину размишљања и решавању проблема. Састоји се од идентификовања објеката и постављање објеката који ће се користити у одговарајућу секвенцу за решење одређеног проблема. Ради се о дизајну објеката чија ће понашања као јединица и у њиховој међусобној интеракцији, решити одређени проблем. Интеракција између објеката се састоји у размени порука, где одређена порука усмерена према одређеном објекту, покреће енкапсулиране операције у том објекту, чиме се решава део обично ширег и сложенијег проблема. Уопштено гледано, објектно-оријентисано решавање проблема се састоји из четири корака:

  1. идентификовање проблема
  2. идентификовање објеката који су потребни за његово решење
  3. идентификовање порука које ће објекти међусобно слати и примати
  4. креирање секвенце порука објектима, које ће решавати проблем или проблеме.

У парадигми објектно оријентисаног програмирања, објекти су структуре података које представљају одређено и јасно дефинисано знање о спољашњем свету или стварности. Типична организација је у хијерархијске класе, где свака класа објекта поседује информације о особинама објекта које се чувају у инстанцама променљивих и које су повезане (концептом асоцијације) са сваком инстанцом у одређеној класи. Сваки објекат препознаје други објекат преко његовог интерфејса. Подаци и логика сваког објекта су скривени од других објеката. Тиме се омогућава раздвајање имплементације од понашања објекта у интеракцији са другим објектима.

Основне особине објеката су идентитет, стање и понашање. Идентитет представља назив објекта којим се одређени објекат разликује од осталих. Стање објекта је дио прошлости и садашњости које одређују понашање објекта у будућности. Понашање објекта је одређено операцијама које се над објектом могу извршити, а активирање операције се врши поруком.

Свака класа се састоји од:

  • података - чланова
  • објекат - члан
  • функција чланица - метода

Податак члан и објекат члан су атрибути класе, и помоћу њих је описано стање објеката. Објекат је модел ентитета а атрибути су есенцијалне особине ентитета које га описују. Методе дефинишу понашање објеката.

Принципи објектно оријентисаног програмирања[уреди]

  1. Све је објекат
  2. Програм је скуп објеката који задају послове један другом преко слања порука
  3. Сваки објекат посједује сопствену меморију
  4. Сваки објекат припада сопственој класи
  5. Сви објекти исте класе могу примати исте поруке

Темељи објектно оријентисаног програмирања[уреди]

  1. Апстракција и скривање информација
  2. Енкапсулација
  3. Модуларност
  4. Полиморфизам
  5. Везе између класа и насљеђивање

Апстракција је поступак раздвајања битног од небитног. У току овог поступка неопходно је уочити који подаци и везе су битне за дати домен проблема, и оне битне податке имплементирати у класи. Постоје три групе апстракције: апстракција предмета, апстракција процеса и синтетска апстракција (апстракција виртуелне машине).

Скривање података се дефинише на сљедећи начин: све информације о модулу морају бити скривене осим оних које су експлицитно декларисане као јавне. Непосредна реализација чланова класе мора бити недоступна клијенту.

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

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

Полиморфизам је контекстно зависно понашање. Програмске категорије се могу полиморфно понашати су: промјенљиве односно инстанце класе, оператори и методе. Полиморфизам се дијели на универзални и ад хок. Универзални полиморфизам се дијели на параметарски и инклузиони. Ад хок полиморфизам се дијели на преклапање и коерцитивни полиморфизам.

Насљеђивање представља могућност хијерархијске организације класа. Када једна класа наслиједи другу она задржава комплетан садржај класе коју насљеђује, и тај садржај може редефинисати или проширити. Постоји неколико врста насљеђивања.

Објектно оријентисани језици[уреди]

Преведени:

Преведени у бајт код за извршавање на виртуелној машини:

Интерпретирани: