Uvod u Objektno orijentisano programiranje - OOP [Objašnjen]

Sunday, March 13, 2016


Većina programaskih jezika kreiranih i korištenih u poslijednjih 30 godina se nazivaju objektno orijantisani programski jezici. Kada pišemo aplikaciju u jeziku koji je objektno orijantisan mi manje više razlažemo naš kod na manje logički zavisne i nezavisne cjeline. Svaki objektat ili klasa imaju svoja obilježja/atribute i funkcije te ti objekti komuniciraju jedan sa drugim kada je to potrebno..

Po nekoj formalnoj definiciji objektno orijentisano programiranje je koncept u kojem jedan ili više objekta međusobno rade na rješavanju istih problema. Najpopularniji objektno orijentisani jezici su: Java, C#, C++, PHP, JavaScript/TypeScript, Ruby...

OOP najviše smisla poprima kada imamo potrebu za preslikavanjem stvari iz realnog svijeta u našim aplikacijama, pa tako ako želimo opisati studenta (sa ne objektno orijentisanim pristupom) bit će nam potrebno nekoliko varijabli ... kada želimo još jednog također još nekoliko, pa ni to nije veliki problem, ali šta ako imamo potrebu da kreiramo čitav razred tada nailazimo na problem optimizacije i skoro da je modularnost takvog projekta nemoguća. Upravo u ovakvim situacijama OOP dolazi da riješi i olakšava čitavu priču oko rada takve aplikacije.

Koraci u objektno orijentisanom pristupu bi bio da kreiramo klasu po imenu Student sa svim atributima koji karakterišu njega, nakon toga sa funkcijama članicama možemo opisati radnju i ponašanje našeg objekta student... sada kada nam god zatreba novi student radimo instance i objekte klase student i imamo modularan i optimizovan rad sa podacima u samoj aplikaciji.

OOP je ideja koja je podržana od strane većine programskih jezika i skoro da je nemoguće zamisliti moderne aplikacije bez OOP-a. Također OOP uveliko pomaže pri segmentiranju problema i podjeli većeg problema na niz manjih i samim tim olakšava pristup rješavanju različitih problema na koje nailazimo u projektima koje kreiramo.

Jedna stvar koju za početak treba da razjasnimo je razlika između klase i objekta, ova dva pojma čine suštinu OOP-a.

Klasa je složeni tip podatka, korisnički definisana koja predstavlja "templejt" prema kojem kreiramo objekte. Također možemo reći da je klasa definicija i opis onoga što predstavlja, sama po sebi nema posebnu funkciju kao npr. nacrt za gradnju kuće u njemu imamo definisane sve potrebne stvari kako će naša kuća izgledati, koje će funkcije imati, te kakve će osobine imati, kako će se ponašati u određenim uslovima... ali na kraju krajeva to je samo nacrt koji nam je jako koristan, ali ne možemo u njemu stanovati. Pa nam je tako potrebna instanca te klase tj kuća.

Svaka klasa ima dvije ključne stvari, a to su: atributi i njeno ponašanje (funkcije/metode).

Pa tako npr. klasa "čovjek" bi kao atribute imala: ime, godine, visinu, težinu, spol.. itd, dok ponašanje ili funkcije/metode te klase bi bile: hoda, jede, skače, spava, priča, gleda... itd.

OOP je donijelo modularnost u razvoj aplikacija, pa tako ako kreiramo klasu čovjek sa svim potrebnim atributima i funkcijama, nama klasa ne znači puno ako mi te vrijednosti ne inicijaliziramo, a da bi smo to uradili potreban nam je objekat tj. instanca te klase. Pa tako mi sada možemo imati više instanci jedne klase svaka sa svojim vrijednosti atributa koje klasa kuća/čovjek/student/automobil... zahtjeva da budu definisane.

A ovako bi to u kodu izgledalo:



Objekt je instanca klase i kreiran je na osnovu njene definicije, isto kao što i kreiramo kuću na osnovu nacrta i sada ako želimo možemo kreirati više kuća po istom nacrtu. One mogu biti specifične sa svojim pojedinostima ili će biti identične na nama ostaje da odlučimo po našim potrebama.

Ključne tri stvari koje OOP čine mogućim su:

  • Enkapsulacija (Učahurenje), određenih dijelova koda tj. ograničavanje njihove dostupnosti. Dopuštamo da se do tih funkcija dolazi preko jasno definisanih ulaznih tačaka.
  • Nasljeđivanje, podrazumijeva identifikaciju zajedničkih osobina većeg broja entiteta i uveliko olakšava programiranje jer gubimo potrebu da iste atribute pišemo nekoliko puta.
  • Polimorfizam (Više obličje) pojava da se objekt može javiti u više oblika, a ovo sve je moguće preko nasljeđivanja
... o kojima ću pisati u sljedećim blog postovima, o svakom detaljno i posebno.

Nadam se da vam je ovaj blog post približio osnovnu ideju i primarnu ulogu i važnost objektno orijentisanog programiranja, te se nadam da ste nešto novo naučili.

Pozdrav! Almir Vuk | AV Development | http://almirvuk.blogspot.ba/

You Might Also Like

0 comments