Objektno orijentirano programiranje (OOP) jeste programska paradigma zasnovana na konceptu "objekata", koji mogu sadržavati podatke i kod: podaci u obliku polja (često poznati kao atributi ili svojstva), i koda, u formi procedura (često poznatih kao metoda).
Osobina objekata je da vlastite procedure objekta mogu pristupiti i često mijenjati svoja polja podataka (objekti imaju pojam this
ili self
). U objektno orijentiranom programiranju, računarski programi su dizajnirani iz objekata koji međusobno djeluju jedan s drugim.[1][2] Programski jeziki OOP-a su različiti, ali najpopularniji među njima su oni zasnovani na klasama, što znači da su objekti instance klasa, što također određuje njihove tipove.
Veći dio najpoznatijih programskih jezika (kao što su C++, Java, Python, itd.) su višestruke paradigme te podržavaju objektno orijentirano progrmairanje u većem ili manjem stepenu, obično u kombinaciji sa imperativnim i/ili proceduralnim programiranje. Značajni objektno orijentirani jezici su među ostalim: (redoslijed prema TIOBE indeksu) Java, C++, C#, Python, R, PHP, Visual Basic.NET, JavaScript, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Kotlin, Common Lisp, MATLAB i Smalltalk.
Objektno orijentirano programiranje koristi objekte, ali nisu sve povezane tehnike i strukture podržane direktno u jezicima koji tvrde da podržavaju OOP. Značajke navedene u nastavku uobičajene su među jezicima koji se smatraju da su snažno klasno i objektno orijentirani (ili višestruke paradigme sa podrškom za OOP), sa značajnim izuzecima pobrojanim.[3][4][5][6]
Modularno programiranje podržava omogućavanje grupisanja procedura u datotekama i modulima za organizacijske svrhe. Moduli su imenski prostori tako da identifikatori u jednom modulu neće imati konflikt sa procedurom ili variablom koja dijeli isto ime u drugoj datoteci ili modulu.
Jezici koji podržavaju objektno orijentirano programiranje (OOP) obično podržavaju nasljeđivanje za ponovnu upotrebu i proširivost koda u obliku klase ili prototipova. Oni koji koriste klase podržavaju dva glavna koncepta:
Objects sometimes correspond to things found in the real world. For example, a graphics program may have objects such as "circle", "square", "menu". An online shopping system might have objects such as "shopping cart", "customer", and "product".[7] Sometimes objects represent more abstract entities, like an object that represents an open file, or an object that provides the service of translating measurements from U.S. customary to metric.
Objektno orijentirano programiranje nije više od klasa i objekata; to je čitava programska paradigma zasnovana na 'objektima' (strukture podataka) koji sadrže polja podataka i metode. Bitno je to razumjeti; korištenje klasa za organiziranje gomile nepovezanih metoda zajedno nije objektna orijentacija.
Junade Ali, Mastering PHP Design Patterns[8]
Za svaki objekt se kaže da je instanca određene klase (naprimjer, objekt čiji je naziv postavljen "Amar" može biti instanca klase Zaposlenik). Postupci u objektno orijentiranom programiranju poznati su kao metode; varijable su poznate i kao polja, članovi, atributi ili svojstva. To dovodi do sljedećih izraza:
Objektima se pristupa nekako poput varijabli sa složenom unutrašnjom strukturom, a u mnogim su jezicima učinkovito pokazivači], služeći kao stvarne reference na jednu instancu spomenutog objekta u memoriji unutar hrpe ili stoga. Oni pružaju sloj apstrakcija koji se može koristiti za odvajanje unutarnjeg od vanjskog koda. Vanjski kôd može koristiti objekt pozivanjem određene metode instance s određenim skupom ulaznih parametara, čitanjem varijable instance ili pisanjem u varijablu instance. Objekti se kreiraju pozivanjem posebne vrste metode u klasi poznatoj kao konstruktor. Program može stvoriti mnogo primjeraka iste klase dok se izvodi, a koji djeluju nezavisno. Ovo je jednostavan način da se isti postupci koriste na različitim skupovima podataka.
Objektno orijentirano programiranje koje koristi klase ponekad se naziva klasno programiranje, dok prototipno programiranje obično ne koristi klase. Kao rezultat toga, značajno različita, ali analogna terminologija koristi se za definisanje pojmova objekt i instanca.
U nekim se jezicima klase i objekti mogu sastaviti koristeći druge koncepte poput osobina i mixina.
|journal=
(pomoć)
Perhaps the greatest strength of an object-oriented approach to development is that it offers a mechanism that captures a model of the real world.Šablon:Sonderholliday