Java: Zápis tříd

Z MiS
Přejít na: navigace, hledání


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:

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:

Příklad:

int delka;
public String jmeno;

Tedy ve třídě:

public class Zbozi {
   String nazev;
   TypZachazeni omezeni;
   int cena;
   ...
}

Zprávy/metody

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) { ... }

Parametr metody

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

Příklad
public double ujetaVzdalenost() {
	double vysledek = 0;
	
	// ... tady nějak spočítám výsledek... ;)
	
	return vysledek;
}

Konstruktor

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

new NazevTridy(hodnoty_parametrů_konstruktoru)
Automobil a1 = new Automobil(5);

Volání metod

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.

POZOR! Přistupovat k atributům třídy z jiných tříd porušuje dobré zvyklosti objektově orientovaného programování!


Shrnutí

Jaké pojmy byste měli znát?


Související stránky


Další zdroje

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