NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 2 - První objektová aplikace v Javě - Hello object world

Minulá lekce, Úvod do objektově orientovaného programování v Javě, nás uvedla do objektově orientovaného programování.

V dnešním tutoriálu se budeme věnovat tomu, jak OOP funguje a vytvoříme si svou první objektovou aplikaci v Javě.

Jak OOP funguje

Snažíme se nasimulovat realitu tak, jak ji jsme zvyklí vnímat. Můžeme tedy říci, že se odpoutáváme od toho, jak program vidí počítač (stroj) a píšeme program spíše z pohledu programátora (člověka). Jako jsme tehdy nahradili assembler lidsky čitelnými matematickými zápisy, nyní jdeme ještě dál a nahradíme i ty. Jde tedy o určitou úroveň abstrakce nad programem. To má značné výhody už jen v tom, že je to pro nás přirozenější a přehlednější.

Základní jednotkou je objekt, který odpovídá nějakému objektu z reálného světa (např. objekt člověk nebo databáze).

Objekty v objektově orientovaném programování - Objektově orientované programování v Javě

Objekt má své atributy a metody.

Atributy

Atributy objektu jsou vlastnosti neboli data, která uchovává (např. u člověka jméno a věk, u databáze heslo). Jedná se o prosté proměnné, se kterými jsme již stokrát pracovali. Někdy o nich hovoříme jako o vnitřním stavu objektu.

Metody

Metody jsou schopnostmi, které umí objekt vykonávat. U člověka by to mohly být metody: jdiDoPrace(), pozdrav() nebo mrkni(). U databáze pridejZaznam() nebo vyhledej()). Metody mohou mít parametry a mohou také vracet nějakou hodnotu. Velmi dobře je známe, používali jsme např. metodu split() na objektu String. String je vlastně objekt, který reprezentuje v realitě nějaký text. Vidíte, že si můžeme jednoduše představit, že jednáme s řetězcem textu, něco mu přikazovat nebo na něm něco nastavovat. Obsahuje metody, které řetězec umí vykonávat (kopírování, mazání, splitování,...). Pole má například atribut length, který značí jeho délku.

Objekty v objektově orientovaném programování - Objektově orientované programování v Javě

V této lekci si vysvětlíme jen úplné základy, tedy jak objekty vytvářet. Dalším tématům OOP budou věnovány další lekce, aby toho nebylo najednou moc 🙂

Třída

S pojmem třída jsme se již také setkali, chápali jsme ji jako soubor příkazů. Třída však umožňuje mnohem více. Třída je vzor, podle kterého se objekty vytváří. Definuje jejich vlastnosti a schopnosti.

Objekt, který se vytvoří podle třídy, se nazývá instance. Instance mají stejné rozhraní jako třída, podle které se vytváří, ale navzájem se liší svými daty (atributy). Mějme například třídu Clovek a od ní si vytvořme instance karel a josef. Obě instance mají jistě ty samé metody a atributy, jako třída (např. jmeno a vek) a metody (jdiDoPrace() a pozdrav()). Ale hodnoty v nich se liší (první instance má v atributu jmeno hodnotu Karel a v atributu vek hodnotu 22, druhá Josef a 45).

Komunikace mezi objekty probíhá pomocí volání metod, díky čemuž je syntaxe přehledná. Volání obvykle vypadá takto: prijemce.jmenoMetody(parametry). Např. karel.pozdrav(sousedka) by mohl způsobit, že instance karel pozdraví instanci sousedka.

První objektová aplikace

Již víme, že objekty mají atributy a metody. Také víme, že k vytvoření objektu vytvoříme nejprve třídu. Ta je vzorem, podle kterého následně tvoříme její instance.

Na začátku kurzu se základními strukturami jazyka Javy jsme si vytvořili program Hello world. Udělejme si nyní podobný program jako úvod do objektově orientovaného programování. Naprogramujme si aplikaci Hello object world!

Vytvoření třídy

Založme si novou Java aplikaci tak, jak jsme to dělali doposud.

V záložce Project klikneme pravým tlačítkem myši na na balík (package) našeho projektu a vybereme z menu položku New -> Java Class:

Přidání nové třídy class k Java projektu v IntelliJ - Objektově orientované programování v Javě

Vytvoříme třídu HelloObjects, ve které obvyklým způsobem vytvoříme hlavní metodu main().

Poté vytvoříme další třídu Zdravic a potvrdíme. Název třídy píšeme vždy notací PascalCase, tedy bez mezer a na rozdíl od proměnných (ty používají camelCase) má každé slovo velké první písmeno, tedy i první. Název je samozřejmě také bez diakritiky, tu v programu používáme maximálně uvnitř textových řetězců, nikoli v identifikátorech.

Vytvoření nové třídy v Javě v IntelliJ - Objektově orientované programování v Javě

Podle této třídy později vytvoříme objekt zdravic, který nás bude umět pozdravit. Vidíme, že se na program již díváme úplně jinak, za každou akci je zodpovědný nějaký objekt, nestačí pouze něco "nabušit" do metody main(). V našem případě vám to může přijít zbytečné, u složitějších aplikací si to budete pochvalovat :)

V našem package přibude další soubor .java a IDE nám ho otevře. K původnímu souboru HelloObjects.java s metodou main() se můžeme vrátit pomocí záložky nebo přes panel Project.

Podívejme se, co nám IDE vygenerovalo a kód si popišme. Následně si do třídy přidáme vlastní metodu pro pozdravení.

package cz.itnetwork;

public class Zdravic {

}

Klíčové slovo package nám označuje tzv. balíček. Stejně, jako se metody sdružují do tříd, tak se třídy sdružují do balíčků. Pokud chceme, aby byla naše třída viditelná i ve výchozí třídě, kde máme metodu main(), musíme ji mít ve stejném balíčku. To zde platí, IDE samo novou třídu vloží do toho samého balíčku, vy místo helloobjects budete mít název své aplikace, pokud jste ji nepojmenovali, bude tam pravděpodobně untitled1.

V package je tedy umístěná samotná třída, která se deklaruje klíčovým slovem class. Třída se jmenuje Zdravic a je prázdná.

Všimněte si, že kód je téměř stejný, jako ten v HelloObjects.java, již tedy rozumíme tomu, co jsme předtím ignorovali. Náš konzolový program byla vlastně třída umístěná v package, která obsahovala jednu metodu main(). Vidíme, že v Javě se v podstatě neobjektově programovat ani nedá, což je jen dobře :)

Metody

Nyní si do třídy Zdravic přidáme metodu pozdrav(), bude veřejně viditelná a nebude mít žádnou návratovou hodnotu ani atributy.

Deklarace metody v Javě je tedy následující:

[modifikátorPřístupu] [návratovýTyp] [názevMetody]([parametry])

Před metodou bude tzv. modifikátor přístupu, v našem případě public (veřejná). Metoda nebude vracet žádnou hodnotu, toho docílíme klíčovým slovem void. Dále bude následovat samotný název metody. Metody píšeme stejně jako proměnné velbloudí notací s malým počátečním písmenem. Závorka s parametry je povinná, my ji necháme prázdnou, protože metoda žádné parametry mít nebude. Do těla metody zapíšeme kód pro výpis na konzoli.

Naše třída bude nyní vypadat takto:

public class Zdravic {

    public void pozdrav() {
        System.out.println("Hello object world!");
    }

}

Zde jsme prozatím skončili, přejdeme do souboru HelloObjects.java.

Nyní si v těle metody main() vytvoříme instanci třídy Zdravic. Bude to tedy ten objekt zdravic, se kterým budeme pracovat. Objekty se ukládají do proměnných, název třídy slouží jako datový typ. Instance má zpravidla název třídy, jen má první písmeno malé. Deklarujme si proměnnou a následně v ní založme novou instanci třídy Zdravic:

Zdravic zdravic;
zdravic = new Zdravic();

Tyto řádky říkají: "Chci proměnnou zdravic, ve které bude instance třídy Zdravic.". S proměnnými jsme vlastně již takto pracovali.

Na druhém řádku je klíčové slovo new, které nám vytvoří novou instanci třídy Zdravic. Tuto instanci přiřadíme do naší proměnné.

Při vytvoření nové instance se zavolá tzv. konstruktor. To je speciální metoda na třídě, proto při vytvoření instance píšeme ty prázdné závorky, jelikož voláme tuto "vytvářecí" metodu. Konstruktor zpravidla obsahuje nějakou inicializaci vnitřního stavu instance (např. dosadí výchozí hodnoty do proměnných). My jsme v kódu žádný konstruktor nedeklarovali, Java si proto vytvořila tzv. implicitní bezparametrický konstruktor. Vytvoření instance objektu je tedy podobné volání metody. Deklaraci můžeme samozřejmě zkrátit na:

Zdravic zdravic = new Zdravic();

Jelikož v proměnné nyní máme opravdu instanci třídy Zdravic, můžeme instanci nechat pozdravit. Zavoláme na ni metodu pozdrav() a to jako zdravic.pozdrav(). Kód metody main() bude tedy nyní vypadat následovně:

        Zdravic zdravic = new Zdravic();
        zdravic.pozdrav();

Program spustíme a v konzoli se nám zobrazí:

Konzolová aplikace
Hello object world!

Máme tedy svou první objektovou aplikaci!

V příští lekci, Atributy a metody v Javě, si vysvětlíme jak přidávat objektům atributy a metodám parametry. Dokončíme svou první objektovou aplikaci.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 2224x (22.97 kB)
Aplikace je včetně zdrojových kódů v jazyce Java

 

Předchozí článek
Úvod do objektově orientovaného programování v Javě
Všechny články v sekci
Objektově orientované programování v Javě
Přeskočit článek
(nedoporučujeme)
Atributy a metody v Javě
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
875 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity