Java: Zápis tříd
m (→Návratová hodnota metody: Doplněno, že po return se již nepokračuje dál...) |
(→Konstruktor: Upraven příklad volání více konstruktorů - základní je lepší mít plnohodnotný (se všemi atributy)) |
||
Řádka 117: | Řádka 117: | ||
<div class="Poznamka"> | <div class="Poznamka"> | ||
; Poznámky | ; Poznámky | ||
− | |||
* Pokud nezapíšeme žádný konstruktor, překladač vytvoří automaticky konstruktor bez parametrů. | * Pokud nezapíšeme žádný konstruktor, překladač vytvoří automaticky konstruktor bez parametrů. | ||
+ | * Můžeme použít více konstruktorů, které se budou lišit počtem či typem parametrů (nebo obojím). | ||
* Z jednoho konstruktoru můžeme vyvolat jiný konstruktor. Musíme to však provést jako první příkaz konstruktoru: | * Z jednoho konstruktoru můžeme vyvolat jiný konstruktor. Musíme to však provést jako první příkaz konstruktoru: | ||
this(''parametry''); | this(''parametry''); | ||
Řádka 127: | Řádka 127: | ||
public class Zbozi { | public class Zbozi { | ||
String nazev; | String nazev; | ||
− | + | int pocet; | |
− | int | + | |
... | ... | ||
''// První konstruktor'' | ''// První konstruktor'' | ||
− | public Zbozi(String nazev) { | + | public Zbozi(String nazev, int pocet) { |
this.nazev = nazev; | this.nazev = nazev; | ||
− | this. | + | this.pocet = pocet; |
− | + | ||
} | } | ||
''// Druhý konstruktor'' | ''// Druhý konstruktor'' | ||
− | public Zbozi(String nazev | + | public Zbozi(String nazev) { |
− | this(nazev); // volání druhého konstruktoru | + | this(nazev, 1); // volání druhého konstruktoru — jako počet se použije hodnota 1 |
− | + | } | |
− | + | ||
} | } | ||
Řádka 148: | Řádka 145: | ||
Zbozi z1 = new Zbozi("Klavír"); | Zbozi z1 = new Zbozi("Klavír"); | ||
String nazev = "Kaktus"; | String nazev = "Kaktus"; | ||
− | Zbozi z2 = new Zbozi(nazev, | + | Zbozi z2 = new Zbozi(nazev, 5); |
== Použití třídy == | == Použití třídy == |
Aktuální verze z 4. 9. 2024, 20:58
Java je objektově orientovaný jazyk. Chování systému (a tedy algoritmus) popisujeme jako komunikaci mezi objekty, které mají vlastnosti (atributy) a posílají si zprávy.
Zde uvádíme pouze syntaxi zápisu v Javě s minimem teorie. Více o OOP a jeho principech a konstruktech viz Objektově_orientované_programování.
Při zápisu programu v Javě se budeme řídit dohodnutými konvencemi pro zápis kódu.
Obsah |
Třída
Třída představuje „předpis“ pro tvorbu objektů. Ve třídě je tedy popsáno:
- jaké vlastnosti mají objekty dané třídy (často se používá termín „atribut“)
- a na jaké zprávy umí objekty dané třídy reagovat.
public class MojeTrida { // // popis vlastností (atributů) třídy // // popis zpráv (metod, které na zprávy reagují) // }
Atributy
Nebo také vlastnosti popisují stav objektu. Z reálného objektu si vybíráme pouze ty vlastnosti, které jsou pro náš systém důležité.
Třeba třída Automobil
bude mít v nějakém systému jako vlastnost jmenoVlastnika
a nebude mít žádnou vlastnost, popisující výkon motoru. Pro náš systém je to tak vhodné. Jiný systém může u automobilu sledovat výkon a ne jméno vlastníka.
Zápis atributu:
- může být modifikátor přístupu
- datový typ
- název
Příklad:
int delka; public String jmeno;
Tedy ve třídě:
public class Zbozi { String nazev; TypZachazeni omezeni; int cena; ... }
Zprávy/metody
- Metoda popisuje, co se má stát, když objektu někdo pošle zprávu.
- Například popisuje, jak má panáček zareagovat, když mu někdo pošle zprávu
moveRight
.
Syntaxe:
modifikátor_přístupu návratový_typ nazevMetody ( parametry_oddělené_čárkou ) { popis, co se má dělat v reakci na metodu }
Příklady:
public void act() { ... } public int distanceTo(Enemy enemy) { ... } protected double ujetaVzdalenost() { ... } private void pridejPanacka(int sloupec) { ... }
- Zápis volání („spuštění“) metod viz kapitola Volání metod.
Parametr metody
- U některých zpráv je třeba uvést doplňující informace. Ty uvádíme formou parametrů metody.
- Parametry píšeme do závorek za název metody a uvádíme vždy datový typ a název parametru.
- Příklad
Metody s parametry:
public void nastavDelku(int novaDelka) { this.delka = novaDelka; // Používám hodnotu parametru. } public void naloz(Zbozi coNalozit, double hmotnostKusu, int pocetKusu) { System.out.println("Naloženo: "+pocetKusu+" kusů zboží: "+coNalozit+".") ... }
Takovou metodu pak voláme:
Lod lod = new Lod(); lod.nastavDelku(35); double hmostnostKontejneru = 30.8; lod.naloz("Kontejner", hmotnostKontejneru, 8);
Návratová hodnota metody
- Pokud má metoda návratový typ jiný než
void
, tak na konci potřebujeme vrátit výsledek. - Použijeme klíčové slovo
return
. - Jakmile použijeme
return
, metoda okamžitě skončí a dále se nepokračuje.
- Příklad
public double ujetaVzdalenost() { double vysledek = 0; // ... tady nějak spočítám výsledek... ;) return vysledek; }
Konstruktor
- Konstruktor třídy popisuje, co se má stát při vytvoření nové instance třídy.
- Můžeme si ho představit jako „metodu“, která se volá při zavolání operátoru
new
.
- Syntaxe
public class NazevTridy { // Tady je konstruktor: modifikátor_přístupu NazevTridy(parametry) { // ... Co se má dít... } // ... Další metody }
- Poznámky
- Pokud nezapíšeme žádný konstruktor, překladač vytvoří automaticky konstruktor bez parametrů.
- Můžeme použít více konstruktorů, které se budou lišit počtem či typem parametrů (nebo obojím).
- Z jednoho konstruktoru můžeme vyvolat jiný konstruktor. Musíme to však provést jako první příkaz konstruktoru:
this(parametry);
- Příklad
Třída Zbozi
s konstruktory:
public class Zbozi { String nazev; int pocet; ... // První konstruktor public Zbozi(String nazev, int pocet) { this.nazev = nazev; this.pocet = pocet; } // Druhý konstruktor public Zbozi(String nazev) { this(nazev, 1); // volání druhého konstruktoru — jako počet se použije hodnota 1 } }
Vytvoření instance třídy Zbozi
(viz #Vytvoření instance):
Zbozi z1 = new Zbozi("Klavír"); String nazev = "Kaktus"; Zbozi z2 = new Zbozi(nazev, 5);
Použití třídy
Vytvoření instance
- Obecně
new NazevTridy(hodnoty_parametrů_konstruktoru)
- Například:
Automobil a1 = new Automobil(5);
Volání metod
- Volání metody instance nebo též zaslání zprávy instanci znamená, že spustíme kód, který je v metodě připraven.
- Příkazy zapsané v metodě se tedy provedou a metoda případně vrátí návratovou hodnotu.
Syntaxe:
instance_třídy.nazevMetody ( hodnoty_parametrů );
Příklady:
this.act();
int vzdalenost = panacek.distanceTo(this);
double celkem; celkem = this.ujetaVzdalenost();
this.getWorld().pridejPanacka(3);
Obdelnik o = new Obdelnik(5, 4); o.posun(10, 10); System.out.println(o.plocha());
Přístup k atributům
o.poziceX = 10; System.out.println(o.poziceY);
Přístup k atributům je ovlivněn modifikátory přístupu.
Shrnutí
Jaké pojmy byste měli znát?
- třída
- instance třídy, objekt
- atribut
- metody
- konstruktor
- parametry
- návratová hodnota
Související stránky
Další zdroje
- Pitner Tomáš. Programování v jazyce Java. 2003. Dostupné z: http://www.fi.muni.cz/~tomp/slides/pb162/printable.html