Vjezbe 4 -OOP I



Primjer1. Kako se izvorni kod pakira?

Uzmimo primjer napravljen na predavanjima. Imamo tri izvorne datoteke A.java, B.java i Test.java.

  1. Nazovimo recimo taj paket primjer1.naspaket.
  2. Kreiramo direktorij primjer1 i unutar njega direktorij naspaket, kojeg također napravimo. Smjestimo A.java, B.java i Test.java u primjer1\naspaket (ili primjer1/naspaket ako ste na UNIX/Linux sistemu).
  3. Na početku kopiranih datoteka A.java, B.java i Test.java dodamo liniju koda package primjer1.naspaket; . Ovim smo kreirali paket. Klase u paketu mogu se naći ovdje: A.java, B.java i Test.java.

Primjedba:

Ako ne specificiramo paket za našu aplikaciju, ona se nalazi u defaultnom paketu koji nema imena.

Kako se izvorni kod iz paketa prevodi i izvršava?

Kako druge klase koriste kod iz klasa u paketu primjer1.naspaket?

Postoji nekoliko načina:

  1. Na početku datoteke C.java dodamo import primjer1.naspaket.*; ako želimo importirati sve klase iz paketa primjer1.naspaket. Unutar klase C na njih referiramo njihovim imenima npr:
    import primjer1.naspaket.*; class C{ // ... A a =new A(); //... }
  2. Na početku datoteke C.java dodamo import primjer1.naspaket.A; ako želimo importirati samo klasu A iz paketa primjer1.naspaket?. Unutar klase C na A referiramo kao prije
    import primjer1.naspaket.A; class C{ // ... A a =new A(); //... }
  3. Ako nema importa, onda unutar klase C na njih referiramo njihovim punim imenima npr:
    class C{ // ... primjer.naspaket.A a =new primjer1.naspaket.A(); //... }

C. java nalazi se ovdje. Kopirajte je u direktorij u kojem se nalazi primjer1. Zatim prevedite javac C. java. Koje se greške  javljaju? Popravite kod u paketu primjer1.naspaket. Isprobajte ostale mogućnosti 1.-3. gore.

Primjer 2.

Klasa Pravokutnik modelira pravokutnik u Kartezijevoj ravnini. Pravokutnik je potpuno odredjen sa koordinatama donjeg lijevog vrha (x1, y1) i gornjeg desnog vrha (x2, y2). Nekoliko detalja:

Klasa PravTest:



Primjer 3. Klasa PovPravokutnik proširuje klasu  Pravokutnik prerađujući metodu toString() i dodavajući metodu povrsina. Test klasa je PovTest .
Primjer ilustrira nasljeđivanje i prerađivanje metoda; kao i kontrolu pristupa



Primjer 4. Napišite klasu KompleksanBroj koja zadovoljava:



Primjer 5. Napišite klasu Pseudo koja simulira računanje pseudo slučajnih brojeva. Ta se klasa nalazi u paketu pseudo. Novosti u ovom programu su iduće:

Zadaci za DZ.

  1. Proširite klasu Tocka iz Primjera 13 u vježbama 3 do klase Tocka1 koja prerađuje metodu toString(). Napišite i test program.
  2. Proširite klasu Tocka iz Primjera 13 u vjezbama 3 do klase Tocka1 koja ima konstruktor oblika Tocka1 (Tocka1 toc). To je tvz. copy constructor.
  3. Proširite klasu Pravokutnik od Pravokutnik1 koji ima konstruktor Pravokutnik1(Tocka, Tocka).
  4. Klasu iz Tocka.java iz Primjera 13 u vježbama 3 stavite u paket tocka. Proširite tu klasu u istom paketu do klase Tocka1 koja ima konstruktore: Tocka1(), Tocka1(double, double), kao i klasa Tocka, te novi konstruktor Tocka1(double, double, String) gdje je zadnji argument boja točke dana kao string npr. "crvena", "bijela" itd. Dodajte i odgovarajuće metode kao za koordinate.
  5. Napišite klasu koje definira djelatnika u radnoj organizaciji specificirajući njegovo ime i prezime, adresu, rang (0 ako je djelatnik, 1 ako je voditelj), visinu plaće, te odjel u kojem radi. Klasa mora sadržavati prerađenu metodu toString() koja mora "lijepo" ispisivati djelatnika. Napišite i test program koji sadrži polje sa djelatnicima i koji ih lijepo ispisuje.
  6. Napišite i neke druge klase za računanje slučajnih brojeva. Pogledajte i knjigu Knuth: The art of computer programming, Volume 2. Proučite Math.random() iz izvornog koda u src.zip.
  7. Napišite apstraktnu klasu Figura koja sadrzž apstraktne metode translatiraj() i jeliUnutra(). Preradite klasu Pravokutnik iz Primjera 1 tako da je sada podklasa Figure. Neka su klasa Figura i Pravokutnik u paketu figura. Dodajte u taj paket i klasu Krug koja je također podklasa Figure tako da implementirate što je više moguće metoda analognih onima iz klase Pravokutnik. U isti paket dodajte i klasu Test koja testira funkcionalnost vaših klasa.
  8. (5) Napišite podklasu PolarKompleks koja je podklasa klase KompleksanBroj i to tako da dodate novi konstruktor za polarne koordinate, statičku i nestatičke metode za konverziju iz jednog oblika u drugi, te metodu za množenje kompleksnih brojeva u polarnom obliku. Neka se sve "kompleksne klase" nalaze u paketu polar. Dodajte i test program koji je u defaultnom paketu.