Razlika između verzija stranice "Objektno orijentirano programiranje"

[nepregledana izmjena][pregledana izmjena]
Uklonjeni sadržaj Dodani sadržaj
MA NE VALJA I .
m Vraćene izmjene korisnika 89.146.151.253 (razgovor) na posljednju izmjenu korisnika Munjanes
Red 1:
{{Nedostaju izvori}}
'''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]]a. [[Programski jezik|Programski jezici]] poput [[C++]] i [[Java programski jezik|Java programskog jezika]] 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.).
== NE VALJA OVO NISTA NE CITAJ !!!!!!! ==
 
== 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>.
* '''[[Računarska apstrakcija|Apstrakcija]]''' ([[Engleski jezik|en.]] ''abstraction'') je pojednostavljivanje karakteristika objekta, gdje se zanemaruju detalji i uzimaju se samo zajedničke karakteristike klase. Npr. Mujo Tokić je ćelav ali ta karakteristika nije opisana ni u klasi ''Osoba'' ni u klasi ''Muškarac''.
* '''[[Polimorfizam]]''' ([[Engleski jezik|en.]] ''polymorphism'') je karakteristika klase čije ponašanje se mijenja ovisno o implementaciji. Tako u našem primjeru, metoda <code>sahrana()</code> može biti implementirana kao ''ukopavanje'', ''kremiranje'' ili ''mumifikacija''.
 
U biti klasa je poput arhitektonskog nacrta zgrade, po kojoj graditelj ([[kompajler]] i [[linker]]), tj. izvođač radova (''runtime'') je u stanju da izgradi objekat te zgrade.
 
== Također pogledajte ==
* [[Računarska dizajn šema]]