Konstruktori, geteri i seteri – primeri (Java)

Strana 2 od 4 · Objektno programiranje – primeri

Zadaci u kojima objekat sam „čuva“ svoje podatke: konstruktor postavlja početne vrednosti, privatni atributi se menjaju samo preko metoda, a toString() opisuje objekat.

Podsetnik na delove klase koje koristimo u ovim zadacima:

class Ucenik {
    private String ime;       // private: van klase se ne može direktno menjati
    private int razred;

    Ucenik(String ime, int razred) {   // konstruktor – poziva se sa new
        this.ime = ime;                // this.ime je atribut, ime je parametar
        this.razred = razred;
    }

    String getIme() { return ime; }    // geter – čita vrednost

    void setRazred(int razred) {       // seter – menja vrednost, uz proveru
        if (razred >= 1 && razred <= 8) this.razred = razred;
    }

    public String toString() { return ime + ", " + razred + ". razred"; }
}
Pre nego što počneš: pročitaj lekcije Klase i objekti u Javi, Objekti i metode.
Kako da vežbaš: napiši klasu i program sam/a, pokreni ga na primeru iz zadatka, pa tek onda otvori uputstvo, a na kraju rešenje. Sva rešenja su u Javi; pomoćne klase su u istom fajlu (bez reči public), pa se program pokreće kao jedan fajl.
ZADATAK 01Težina: Lako

Učenik i prosek ocena

Napravi klasu Ucenik sa atributima ime i tri ocene (iz matematike, srpskog i informatike) i konstruktorom koji ih postavlja. Dodaj metodu prosek() i metodu toString(). U main učitaj podatke za dva učenika i ispiši ih, a zatim ime učenika sa većim prosekom.

Primer

Ulaz

Ana 5 4 5
Ivan 4 4 3

Izlaz

Ana, prosek 4.67
Ivan, prosek 3.67
Bolji prosek: Ana
ZADATAK 02Težina: Lako

Štedna kasica (bankovni račun)

Napravi klasu Racun sa privatnim atributima vlasnik i stanje. Konstruktor prima ime vlasnika, a početno stanje je 0. Metoda uplati(iznos) povećava stanje, a isplati(iznos) ga smanjuje samo ako ima dovoljno novca – inače ispisuje poruku i ne menja stanje. Učitaj ime, a zatim niz naloga oblika U 500 (uplata) ili I 200 (isplata), do naloga K (kraj). Na kraju ispiši stanje.

Primer

Ulaz

Mila
U 500
I 200
I 900
U 100
K

Izlaz

Nema dovoljno novca za isplatu 900
Mila: stanje 400
ZADATAK 03Težina: Srednje teško

Pravougaonik sa dva konstruktora

Napravi klasu Pravougaonik sa stranicama a i b i dva konstruktora: bez parametara (pravi kvadrat 1×1) i sa dva parametra. Dodaj metode obim(), povrsina() i jeKvadrat(). Učitaj stranice drugog pravougaonika i ispiši podatke za oba.

Primer

Ulaz

4 4

Izlaz

1.0 x 1.0: O = 4.0, P = 1.0, kvadrat
4.0 x 4.0: O = 16.0, P = 16.0, kvadrat
ZADATAK 04Težina: Srednje teško

Termometar sa proverom (seter)

Klasa Termometar čuva temperaturu u °C. Seter setTemperatura(t) prihvata samo vrednosti od −50 do 60; za druge vrednosti ispisuje „Neispravno merenje“ i zadržava staru vrednost. Dodaj geter i metodu uFarenhajtima() (F = C·9/5 + 32). Učitaj n merenja i posle svakog ispiši trenutnu temperaturu u °C i °F.

Primer

Ulaz

3
21.5
99
-3

Izlaz

21.5 C = 70.7 F
Neispravno merenje: 99.0
21.5 C = 70.7 F
-3.0 C = 26.6 F
ZADATAK 05Težina: Teže

Razlomak

Napravi klasu Razlomak sa brojiocem i imeniocem. Konstruktor razlomak odmah skraćuje (pomoću NZD). Dodaj metodu saberi(Razlomak drugi) koja vraća novi razlomak – zbir, i metodu toString() koja vraća oblik a/b. Učitaj dva razlomka i ispiši ih i njihov zbir.

Primer

Ulaz

2 4
1 3

Izlaz

1/2
1/3
1/2 + 1/3 = 5/6
Česte greške i saveti
  • Konstruktor nema povratni tip (ni void) i zove se isto kao klasa.
  • Kada se parametar zove isto kao atribut, atributu se pristupa sa this.ime; bez this menja se samo parametar.
  • Seter je pravo mesto za proveru podataka: npr. visina ne može biti negativna, ocena mora biti od 1 do 5.
  • Ako napišeš konstruktor sa parametrima, Java više ne pravi prazan konstruktor new Klasa() – dodaj ga sam ako ti treba.

Proveri znanje

Otvori kviz

Mini kviz: konstruktori

1. Kada se izvršava konstruktor?




2. Zašto atribut pravimo private?




3. Šta radi this.x = x; u konstruktoru?