Platnost proměnných

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Třídní proměnné: Přidáno klíčové slovo static.)
(Přidány příklady a podrobnější popis.)
Řádka 1: Řádka 1:
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]]
+
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:Stránky_s_obrázky]]
  
== Třídní proměnné ==
+
== Třídní atributy ==
 
* Popisují vlastnosti celé třídy.
 
* Popisují vlastnosti celé třídy.
* Jsou společné pro všechny objekty (instance) dané třídy.
+
* Jejich hodnota je společná pro všechny objekty (instance) dané třídy.
 
* Jsou k dispozici po celou dobu spuštění programu.
 
* Jsou k dispozici po celou dobu spuštění programu.
 
* Nejsou závislé na existenci instance.
 
* Nejsou závislé na existenci instance.
 
* Označují se klíčovým slovem: <code>static</code>
 
* Označují se klíčovým slovem: <code>static</code>
  
 +
; Typické použití &mdash; počítač instancí
 
  public class Auto {
 
  public class Auto {
 
     [[Java: Modifikátory přístupu|private]] '''static''' int pocetAut = 0;
 
     [[Java: Modifikátory přístupu|private]] '''static''' int pocetAut = 0;
Řádka 21: Řádka 22:
 
  }
 
  }
  
== Instanční proměnné ==
+
 
 +
== Instanční atributy ==
 +
* Popisují vlastnosti konkrétní instance.
 +
* Každá instance má svoji vlastní hodnotu.
 +
* Vytváří se při vytvoření instance a s ní také zanikají, jsou k dispozici po celou dobu existence instance.
 +
* Není potřeba psát žádné klíčové slovo.
 +
 
 +
 
 +
== Příklady: Instanční × třídní atributy ==
 +
<div class="Priklad">
 +
Příklad 1 &mdash; Škoda Octavia
 +
* <code>Množství paliva v nádrži</code> 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é.
 +
* <code>Doporučený interval výměny svíček</code> 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 &mdash; i ty už vyrobené, i ty, které teprve vyrobíme.
 +
</div>
 +
<div class="Priklad">
 +
Příklad 2 &mdash; Lak na nehty
 +
* <code>Množství laku v lahvičce</code> 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á.
 +
* <code>Doporučený odlakovač</code> 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 &mdash; i ty už nakoupené, i ty, které teprve vyrobíme/nakoupíme.
 +
</div>
 +
 
 +
 
 +
== Instanční a třídní atributy &mdash; obrázek ==
 +
 
  
  
 
== Lokální proměnné ==
 
== Lokální proměnné ==
 +
* Pomocné proměnné, které vytváříme v rámci kódu metod.
 +
* Jsou k dispozici pouze v bloku, ve kterém byly vytvořeny (metoda, tělo cyklu, kód podmíněného příkazu,...)
 +
 +
<div class="Priklad">
 +
; Úkol &mdash; 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?
 +
</div>
  
  
 
== Související stránky ==
 
== Související stránky ==
 
* [[Java: Zápis tříd]]
 
* [[Java: Zápis tříd]]

Verze z 5. 4. 2016, 11:12


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

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