Predavanje 2 - Osnove OOP-a


  1. Uvod
  2. Osnovni principi OOP programiranja u Javi
  3. Primjer
  4. Kompletan program s figurama
  5. java.lang.Object
  6. Napomene

1. Uvod

Nastavljamo diskusiju osnova objektno-orijentiranog programiranja. U idućih nekoliko predavanja razradit ćemo detalje.

Podsjetimo se kako funkcionira standardno, proceduralno programiranje, na primjer u programskom jeziku C. Program započinje izvršavanjem funkcije main koja izvršava postavljeni zadatak pozivanjem drugih funkcija. Program završava kad se izvrše sve instrukcije funkcije main. Osnovni građevni blok programa je, dakle, funkcija. Postavljeni zadatak rješava se tako da se razbije na niz manjih zadaća od kojih se svaka može implementirati u jednoj funkciji. Cijeli program je niz funkcijskih poziva. U takvom stilu programiranja (proceduralno orijentirano programiranje) prvorazrednu ulogu imaju algoritmi, koji su implementirani u funkcijama, dok je značenje podataka drugorazredno.

U objektno orijentiranom programiranju osnovnu ulogu imaju objekti koji sadrže i podatke i funkcije (= metode). Program se konstruira kao skup objekata koji međusobno komuniciraju. Podaci koje objekt sadrži predstavljaju njegovo stanje, dok pomoću metoda on to stanje može mijenjati i komunicirati s drugim objektima.

Dakle, u osnovi svega je objekt koji:

Stoga je sav izvorni kod podijeljen u klase koje se nalaze u istoj ili različitim izvornim datotekama (s ekstenzijom .java).


2. Osnovni principi OOP programiranja u Javi

Vrlo su jednostavni i objašnjeni na primjeru niže:

  1. apstrakcija:
  2. enkapsulacija:
  3. nasljeđivanje:
  4. polimorfizam:

3. Primjer

Klasa geometrijska figura može apstrahirati sve geometrijske figure u ravnini (kružnice, kvadrate, pravokutnike, dužine, ...). Recimo klasa Figura može biti modelirana ovako:


 1  class Figura {
 2   // podatak
 3      int boja_Figure;
 4
 5   // metode
 6      void  nacrtaj() {
 7          // implementacija
 8      }
 9
10      void  nacrtaj(int boja) {
11          // implementacija
12      }
13
14      String ime_figure(){
15          // implemetnacija
16      }
17   }

Komentari:

4. Kompletan program s figurama

Program se sastoji od četiri izvorne datoteke KorisnikFigure.java Figura.java, Kvadrat.java, te Krug.java.

Program se prevodi naredbom
         javac KorisnikFigure.java
   
a izvršava naredbom
         java KorisnikFigure 
   

Proučite što program radi te koje principe OOP-a možemo na njemu prepoznati. Korisno je komparirati jezike. Za one koje zanima isti program ali u C++-u i upute kako se prevodi nalaze se ovdje ovdje. C++ je jezik temeljen na C-u i sintaksa će vam biti vrlo bliska.

5. java.lang.Object

Sve klase (i sistemske i naše) u Javi su direktno ili indirektno izvedene iz ove klase. Štoviše, ako se eksplicitno ne specificira nadklasa dane klase, onda je ona uvijek java.lang.Object. Npr. HelloWorld zapravo se prevodi kao:


1  class HelloWorld extends Object{
2
3     public static void main(String[] args){
4
5         System.out.println("Hello, World");
6
7         }
8  }

Mi ćemo često prerađivati metodu

 
   String toString()
    
  
klase Object koja vraća reprezentaciju našeg objekta u obliku stringa. Proučite iz Java API što je defaultna implementacija ove metode. (Vidite niže kako naći dokumentaciju.)

Kasnije u radu sa dretvama (eng. threads) upoznat ćemo i neke druge metode te klase.

6. Napomene

1. Ako ste dokumentaciju instalirali u C:\docs, ona u web pregledniku otvorite file:///C:/docs/api/index.html da vidite dokumentaciju o svim klasama i paketima koje čine Java API. Ovo ćete jako puno koristiti u ovom kolegiju. Ista dokumentacija se on-line može vidjeti na http://java.sun.com/j2se/1.3/docs/api/.

2. Glavna stranica dokumentacije je file:///C:/docs/index.html i ako se spustite niže do linka Java 2 Platform API Specification (NO FRAMES) doći ćete isto na file:///C:/docs/api/index.html.

3. Pretpostavimo da ste Java SDK instalirali u C:\java. Onda se u tom direktoriju nalazi datoteka src.zip. Otpakirajte je. Ona sadrži izvorni kod za Java API. Često je interesantno vidjeti kako su neke sistemske klase implementirane. Java spada u otvoreno računarstvo!

4. Precizne specifikacije jezika mogu se besplatno čitati ili skinuti sa inteneta u HTML ili PDF formatu http://java.sun.com/docs/books/jls/index.html.

Mnoštvo besplatnih knjiga u Javi može se naći http://java.sun.com/docs/index.html.


Početak
Predavanja