4 - Polymorfismus, dědičnost, generické typy

Tvary

Zlepšete kód třídy

class Obdelnik {
    int sirka;
    int delka;
 
    Obdelnik(int s, int d) {
        sirka = s;
        delka = d;
    }
 
    public double obsah() {
        return sirka * delka;
    }
 
    public int vratSirku() {
        return sirka;
    }
 
    public int vratDelku() {
        return delka;
    }
 
    public void nastavSirku(int s) {
        sirka = s;
    }
 
    public void nastavDelku(int d) {
        delka = d;
    }
}
 
class Ctverec {
    int strana;
 
    Ctverec(int s) {
        strana = s;
    }
 
    public double vratObsah() {
        return strana * strana;
    }
 
    public void nastavStranu(int s) {
        strana = s;
    }
 
    public int vratStranu() {
        return strana;
    }
}
 
class Kruh {
    int polomer;
 
    Kruh(int p) {
        polomer = p;
    }
 
    public double obsahKruhu() {
        return Math.PI * polomer * polomer;
    }
 
    public void polomer(int p) {
        polomer = p;
    }
}

Zlomek

Implementujte třídy NemennyZlomek a ModifikovatelnyZlomek podle interface Zlomek.

  • Lze interface rozšířit?
  • Lze interface nahradit abstraktní třídou?

interface Zlomek {
    int vratCitatel();
 
    int vratJmenovatel();
}

Účet

Zlepšete kód třídy

class Ucet {
    final boolean bezPoplatku;
    final boolean sKonstantnimPoplatkem;
    final int vysePoplatku;
    final int poplatekZaPohyb;
    int pocetPohybu;
    int zustatek;
 
    void vlozit(int kolik) {
        zustatek += kolik;
        pocetPohybu++;
    }
 
    void vybrat(int kolik) {
        if (zustatek >= kolik) {
            zustatek -= kolik;
            pocetPohybu++;
        }
    }
 
    void prevest(int kolik, Ucet kam) {
        if (zustatek >= kolik) {
            zustatek -= kolik;
            kam.zustatek += kolik;            
			pocetPohybu++;
            kam.pocetPohybu++;
        }
    }
 
    void zaplatitPoplatky() {
        if (bezPoplatku) return;
        if (sKonstantnimPoplatkem) zustatek -= vysePoplatku;
        else {
            zustatek -= poplatekZaPohyb * pocetPohybu;
            pocetPohybu = 0;
        }
    }
 
    Ucet(boolean bez, boolean sKonstantnim, int poplatek, int zaPohyb) {
        bezPoplatku = bez;
        sKonstantnimPoplatkem = sKonstantnim;
        vysePoplatku = poplatek;
        poplatekZaPohyb = zaPohyb;
    }
}

Úloha na cvičení - spojový seznam

(pokračování ze cvičení 3)

Upravte uzel spojového seznamu tak, aby uchovával generický typ E.

Implementujte iterátor nad spojovým seznamem NodeListIterator. Tato třída bude inicializována parametrem typu Node<E> a bude implementovat generické rozhraní java.util.Iterator.

Svoji třídu LinkedList upravte, aby implementovala generické rozhraní java.util.List.

Použijte vytvořenou implementaci LinkedList v úloze ze 2. cvičení pro implementaci košíku.

courses/b6b36omo/labs/lab04.txt · Last modified: 2018/10/03 11:13 (external edit)