Objektno-orijentisano programiranje – razlika između verzija

Uklonjeni sadržaj Dodani sadržaj
SieBot (razgovor | doprinos)
Xqbot (razgovor | doprinos)
m robot Mijenja: mn:Объект хандалтат програмчлал; kozmetičke promjene
Red 1:
'''Objektno orijentisano programiranje''' (OOP) u [[Računarstvo i informatika|računarstvu]] je jedna od [[Programska paradigma|programskih paradigmi]]. Od ranih [[1980|1980-tih]] pa do danas ova paradigma je postala najuticajnija paradigma u komercijalnom razvoju [[softver|softvera]]a. [[Programski jezik|Programski jezici]] poput [[C++]] i [[Java programski jezik]] su svojom popularnošću utvrdili vodeći status OOP-a kao ''de facto'' obaveznog pristupa pri razvoju softvera danas, te i jezici koji tradicionalno nisu bili objektno orijentirani su naknadno dodali OOP koncepte (npr. [[Visual Basic]], [[Pascal programski jezik]] itd.).
 
== Osnovni principi ==
* '''[[Klasa (računari)|Klasa]]''' ([[Engleski jezik|en.]] ''class'') sadrži opis (definiciju) ''nečega'', npr. ''klasa Osoba''. Ovaj opis sadrži informaciju (npr. ime, godište, spol) i ponašanje, ili funkcionalnost (npr. [[metoda]] umri()). Ona je osnovica modularnosti i strukture objektno-orijentisanog programa. Kao takva treba biti poznata osobama koje nisu programeri, ali su upoznati sa okvirom problema koji treba riješiti [[Računarski program|računarskim programom]] i [[izvorni kod]] klase treba (po mogućnosti) biti cijelovit i nezavisan (''opisati coupling''). Samo sa takvom modularnošću klasa je u stanju da odgovara aspektu problema koji program treba da riješi i istovremeno pojednostavi odnos (mapiranje) između problema i programa.
* '''[[Objekat (računari)|Objekat]]''' ([[Engleski jezik|en.]] ''object'') ili instanca je jedinica klase, koji postoji sa određenom informacijom (tzv. '''stanje''' ili [[Engleski jezik|en.]] ''[http://en.wikipedia.org/wiki/State_(computer_science) state]''), npr. <code>Mujo</code> instanca <code>Osobe</code> je ''runtime'' reprezentacija Osobe u programskom prostoru. Svaki objekat ima samo svoju informaciju (stanje) koje može biti dijeljeno između više instanci, što se u računarstvu zove ''[[reentrant]]''. Tako npr. naš Mujo objekat bi imao
:* <code>ime::"Mujo Tokić"</code>
:* <code>spol::"Muški"</code>
:* <code>godiste::"1962"</code>.
* '''[[Zatvorenost]]''' ([[Engleski jezik|en.]] ''encapsulation'') je koncept po kojem je informacija u klasi zaštićena od direktnog pristupa i jedini način da se promjeni informacija je kroz utemeljene metode. Tako npr. ako napravimo metodu <code>ideNaPosao()</code>, kojom Mujo ide na posao biciklom, onda kad on kupi auto i ide autom na posao, ta promjena je skrivena unutar metode koja samo prikaže rezultat (tj. da je na putu na posao a ne čime ide).
* '''[[Nasljedstvo (računari)|Nasljedstvo]]''' ([[Engleski jezik|en.]] ''inheritance'') je koncept po kojem se može definisati klasna hijerarhija, tj. obiteljska loza klase gdje jedna klasa može da proširi (''extend'') drugu klasu. Tako u našem primjeru možemo definisati klasu ''Muškarac'' koja proširuje klasu ''Osoba'' i definiše novu metodu <code>preselioNaAhiret()</code>, te klasu ''Ženu'' koja također proširuje klasu ''Osoba'' ali ima metodu <code>preselilaNaAhiret()</code>. I ''Muškarac'' i ''Žena'' nasljeđuju činjenike ime, spol i godište, te metodu, tj. ponašanje umri() (i muškarci i žene umiru) ali se samo objekat muškarca <code>preselioNaAhiret()</code> dok se žena <code>preselilaNaAhiret()</code>.
Red 15:
 
== Također pogledajte ==
* [[Računarska dizajn šema]]
== Razvoj objektno orjentisanih programskih jezika ==
 
Red 61:
Najbólji način za razumijevanje šta je to objektno orjentisano programiranje je da se razumiju razlike između strukturalnog i objektno orijentisanog programiranja. A te razlike se fundamentalne.
 
# Strukturalno programiranje:
o Zadaci se uvijek u manje razvojene korake razgradjuju
o Top-Down izrada
o Podaci u poredju sa funkcijama igraju podredjenu ulogu
 
# Objektno orijentisani razvoj:
 
o Fundament grade objekti a ne funkcije i procedure
Red 74:
o Objekti su u stvari struktira podataka, koje imaju jedan poseban odnos, koji je u metodama utvrdjen
 
# Dan Ingals (smalltalk veteran):
 
Ključna razlika između klasičniog proceduralnog programiranja i objektno orjentisanog programiranja je nepostojanje jasne podele na podatke i funkcije/operacije koje treba nad podacima izvršiti.
Red 82:
umesto:
 
podatak A (broj)
funkcija smanji_za_jedan(broj)
pa se obrada vrsi zvanjem fukcije smanji_za_broj(A)
Red 94:
jednostavno mu kazemo A.smanji_za_jedan
 
[[categoryKategorija:Programiranje]]
 
[[af:Objekgeoriënteerde programmering]]
Red 130:
[[lv:Objektorientētā programmēšana]]
[[mk:Објектно-ориентирано програмирање]]
[[mn:Объект Хандалтатхандалтат Програмчлалпрограмчлал]]
[[ms:Pengaturcaraan berorientasi objek]]
[[nl:Objectgeoriënteerd]]