Platnost proměnných

Z MiS
Verze z 5. 4. 2016, 11:19; Spravce (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání


Obsah

Třídní atributy

Typické použití — počítač instancí
public class Auto {
    private static int pocetAut = 0;

    ...

    public Auto() {
        Auto.pocetAut++;
        ...
    }

    ...
}


Instanční atributy


Příklady: Instanční × třídní atributy

Příklad 1 — Škoda Octavia

  • Množství paliva v nádrži je instanční atribut.
    • Jedna Octavia má jiné množství paliva v nádrži než jiná.
    • Nemá smysl mluvit obecně o množství paliva v nádrži Škody Octavia, protože každý konkrétní automobil má množství paliva aktuálně jiné.
  • Doporučený interval výměny svíček je třídní atribut.
    • Interval platí pro všechny automobily daného typu (dané motorizace).
    • Pokud výrobce interval změní, bude platit opět pro všechny automobily daného typu — i ty už vyrobené, i ty, které teprve vyrobíme.

Příklad 2 — Lak na nehty

  • Množství laku v lahvičce je instanční atribut.
    • Koupím-li novou lahvičku, bude plná. Starší lahvička je již skoro vyčerpaná.
    • Nemá smysl mluvit obecně o množství laku, protože hodnota je pro každou lahvičku jiná.
  • Doporučený odlakovač je třídní atribut.
    • Platí pro všechny lahvičky (instance) daného typu laku.
    • Pokud výrobce změní doporučení, bude platit opět pro všechny instance daného typu — i ty už nakoupené, i ty, které teprve vyrobíme/nakoupíme.


Instanční a třídní atributy — obrázek

Vezměme následující kód:

class Zelva {
    int i = 0;
    static int t = 0;

    void f() {
        int lp = 0;
    }
}

První obrázek popisuje stav před vytvořením první instance:

Var static inst1.png

Druhý obrázek popisuje stav po vytvoření první instance:

Var static inst2.png

Třetí obrázek popisuje stav po vytvoření druhé instance:

Var static inst3.png

Lokální proměnné

Úkol — Co je špatně na následujícím kódu?

Kód má počítat celkovou částku na výplaty.

for (Zamestnanec z : zamestnanci) {
    int celkem += z.getCastka();
}
System.out.println(celkem);

Jak kód opravíte?


Související stránky

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje