Informatika

 

Proceduralno programiranje (npr. u C-u ili Pascalu) zasniva se na promatranju programa kao niza jednostavnih programskih odsječaka - procedura i/ili funkcija. Svaka funkcija je konstruirana tako da obavlja jedan manji zadatak, a cijeli se program sastoji od niza funkcija koje sudjeluju u rješavanju zadataka. U proceduralno strukturiranim jezicima dodaje se niz osnovnih jezičnih konstrukcija, kao što su petlje, grananja i pozivi procedura.

U potpuno objektno orijentiranom jeziku (npr. Java) sve se operacije odvijaju kroz objekte i njihove metode. Objekt je uveden u programiranje promatranjem načina na koji funkcionira stvarni svijet. Mnoge stvari oko nas se mogu jednostavno opisati pomoću objekta.

Da bi se razumjeli osnovni koncepti objektno orijentiranog programiranja, potrebno je prvo odgovoriti na nekoliko pitanja.

1. Što je objekt?

Objekt je naziv za skup svojstava koje možemo objedniti u smislenu cjelinu.

Npr. Geometrijski lik je objekt koji ima svojstva: broj stranica, duljinu pojedine stranice, površinu, opseg.

 

2. Što je razred?

Razred je definicija objekta, pravila koja propisuju od čega je objekt sagrađen, te kakva su njegova svojstva.

Važno: razlika između objekta i razreda! Razred je samo opis, dok je objekt konkretna realizacija napravljena na temelju razreda.

 

3. Što je enkapsulacija?

Enkapsulacija je odvajanje sučelja objekta i same implementacije objekta. Implementacija objekta skrivena iza sučelja. Okolina (drugi objekti) moraju samo znati što objekt radi, a ne i kako radi. Svrha enkapsulacije je da omogući jednostavne promjene oko implementacije objekta, bez mijenjanja sučelja. Druga svrha je da se spriječi druge objekte da postave neku vrijednost unutar objekta na nevažeću vrijednost  i time dovedu objekt u nedefinirano stanje (npr. postavljanje duljine stranice geometrijskog lika na vrijednost -2 ne bi imalo smisla).

 

4. Što je nasljeđivanje?

Nasljeđivanje je svojstvo definiranja razreda na temelju razreda koji su već definirani. Novi razred "nasljeđuje" sve metode i atribute već definiranog razreda, te dodaje neke nove. Npr. razred Kvadrat bi mogo naslijediti razred Geometrijski lik.

5. Što je polimorfizam?

Polimorfizam je svojstvo da se različiti tipova podataka upotrebljavaju koristeći ista sučelja. Polimorfizam omogućuje metodama razreda koji nasljeđuju da pregaze metode u razredu kojeg nasljeđuju. Npr. ako razred Kvadrat nasljeđuje razred Geometrijski lik, u razredu Kvadrat bi se "pregazile" metode za računanje opsega i površine. 

 

 

Primjer OOP-a u programskom jeziku java:

Primjer razreda:

public class GeometrijskiLik {
    private String ime;
    private int brojStranica;

    public GeometrijskiLik GeometrijskiLik(String ime, int brojStranica) {
         this.ime = ime;

         this.brojStranica = brojStranica;


    }
    public String getIme() {
         return this.ime ime;

    }

    public int getBrojStranica() {

           return this.brojStranica;

    }

}

 

GeometrijskiLik je razred. Instanciranjem razreda GeometrijskiLik nastaje objekt.

GeometrijskiLik lik1 = new GeometrijskiLik("Lik1", 4);
GeometrijskiLik lik2 = new GeometrijskiLik (“Lik2", 5 );

 Lik1 i lik2 su objekt, te se nad njima mogu pozvati metode lik.getIme(), te lik.getBrojStranica().

Enkapsulacija je ostvarena postavljanjem ključne riječi private ispred varijable ime, te brojStranica. Drugi objekti ne mogu pristupiti tim varijablama direktno, već preko metoda getIme()  i getBrojStranica(), ali ih ne mogu mijenjati.

 Primjer nasljeđivanja bi bio:

public class Kvadrat extends GeometrijskiLik {

       public Kvadrat() {

          super("kvadrat",4);

      }

 }

 

Razred Kvadrat nasljeđuje razred GeometrijskiLik (ključna riječ extend). U konstrukturu razreda Kvadrat poziva se konstruktor razreda GeometrijskiLik (ključnom riječi super). Razred Kvadrat ne definira metode getIme() i getBrojStranica() - on ih je nasljedio od razreda GeometrijskiLik. Instanciramo li objekt kvadrat:

Kvadrat kvadrat = new Kvadrat();

pozivanje metode kvadrat.getBrojStranica() bi vratilo 4.

 

Ako se razred Kvadrat modificira:

 

public class Kvadrat extends GeometrijskiLik {

       public Kvadrat() {

          super("kvadrat",4);

      }

         public getBrojStranica() {

              return 4;

        }

  }

 

Metoda getBrojStranica() je primjer polimorfizma. Metoda u razredu Kvadrat "pregazila" je metodu u  razredu GeometrijskiLik. Obje metode imaju isti oblik i istu povratnu vrijednost, ali je način implemetacije drugačiji.

 

 

Imate pitanje? Postavite ga ovdje! Postavite pitanje
Komentari (1)


gost kaže:

25.01.2012
Glasovi: +0

Napišite komentar

busy
Ključne riječi:

Ažurirano (Petak, 20 Ožujak 2009 17:52)

 

Istaknite svoj oglas i povećajte posjećenost do 6 puta

Stranica Moje Instrukcije za vrijeme školske godine bilježi preko 100 000 posjeta mjesečno, stoga nemojte propustiti priliku i popunite svoje slobodne termine s nama.

Imate objavljen oglas, istaknite ga:

  1. prijavite se na stranicu
  2. na oglasu kliknete na "Istaknite svoj oglas"
  3. sljedite jednostavne upute

Detaljniji opis i cjenik

classroom

Pišite lekcije i povećajte posjećenost svog oglasa

Pišite kratke lekcije i pomognite djeci u njihovoj potrazi za znanjem, a vaš oglas će biti prikazan u vrhu lekcije koju ste napisali. Na taj način možete i jednostavno dogovoriti instrukcije umjesto da vas traže preko tražilice u moru ostalih instruktora.

Detaljnije

Predajte novi oglas Istaknite svoj oglas i povećajte posjećenost do 6 puta

Novo! Imate pitanje? Postavite ga ovdje! Postavite pitanje Instruktori, odgovarajte na pitanja, jer su odgovori i komentari povezani sa Vašim oglasom
Trenutno aktivnih Gostiju: 106