Lekce 5 – Tvorba tříd
Osnova
- tvorba vlastních tříd (
class) - konstruktor
- vytváření instancí třídy (operátor
new) - vlastnosti (property), getter a setter
- metoda
toString() - viditelnost tříd, metod a fieldů
public– viditelné odkudkoliprivate– viditelné pouze z vlastní třídy- později:
protected– viditelné z package a z odděděných tříd - později: „package protected“ nebo „default“ – viditelné z package
- dokumentace tříd v základní knihovně Javy: Java SE 21 JavaDoc
- java.lang.String
- java.util.Objects
- java.io.PrintStream (Objekty
System.outaSystem.errjsou typujava.io.PrintStream.)
Zápis metody či fieldu
<modifikátor viditelnosti> [static] <datový typ> názevFieldu [= hodnota];
<modifikátor viditelnosti> [static] <návratový typ> názevMetody() {
}
Návratový typ je datový typ (primitivní typ nebo třída) nebo void.
Tip
- generování kódu (třeba gettery a settery) v IntelliJ Idea:
- Windows, Linux: Alt+Insert
- Apple: Command+N nebo Control+Enter
- menu Code → Generate…
- konfigurace IntelliJ Idea, aby na Windows správně vypisovala české znaky v konzoli: menu
Help→Edit Custom VM Options…, na konec přidat následující řádek:-Dfile.encoding=UTF-8
Cvičení 1
- Použij repository j1-lekce05 jako šablonu, vytvoř si z něj repository ve svém účtu a to si naklonuj k sobě na počítač.
- Při přidávání nových vlastností nemusíš provádět kontrolu vstupu.
- Do třídy
Osobapřidej jako vlastnost (property) dvě e-mailové adresy – pracovní e-mail a soukromý e-mail. Oba budou typuString. - Vyzkoušej k testovací osobě přidat jeden nebo oba dva e-maily.
- Vytvoř novou třídu
Adresa, která bude osahovat vlastnosti (všechny typuString):ulice– bude obsahovat název ulice a čísla domů, např.Národní 1/23castObce– bude obsahovat (volitelně) část obce, např.Černý Mostobec– bude obsahovat název obce, např.Prahapsc– bude obsahovat PSČ, např.11000
- Do třídy
Osobapřidej vlastnost (property)adresatypuAdresa. - Vyzkoušej k testovací osobě přidat adresu.
Bonus
- Přidej kontroly vstupů, například:
- e-mailová adrese nesmí být prázdná
- e-mailová adresa musí obsahovat
@a. - ulice, obec a PSČ nesmí být prázdné
- PSČ musí obsahovat právě 5 znaků
- Do třídy
Adresapřidej metodutoString(), která vrátí adresu jako řetězec ve formátuulice, PSČ obecneboulice, část obce, PSČ obec. - Přidej do třídy
Osobametodupublic String getKontakty(), která vrátí všechny kontakty osoby (e-maily a telefonní číslo) v jednom řetězci.
Úkol
Z této lekce je 3. domácí úkol.