Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde

Cvičení k 3. lekci OOP v Javě

Java Objektově orientované programování Cvičení k 3. lekci OOP v Javě American English version English version

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Následující 3 cvičení vám pomohou procvičit znalosti objektově orientovaného programování v Javě z minulé lekce. Ve vlastním zájmu se je pokuste vyřešit sami. Pod článkem máte pro kontrolu řešení ke stažení. Ale pozor, jakmile se na něj podíváte bez vyřešení příkladů, ztrácí pro vás cvičení smysl a nic se nenaučíte :)

Pokud si opravdu nebudete vědět rady, podívejte se raději znovu do minulého tutoriálu a pokuste se na to přijít.

Ohlasy studentů

Jednoduchý příklad

Naprogramujte aplikaci, která obsluhuje člověka. Člověk má jméno a únavu, která je zpočátku 0. Může uběhnout určitou vzdálenost a také spát určitou dobu. Běháním se jeho únava zvyšuje (1 jednotka únavy na 1 km), spaním se snižuje (10 jednotek únavy na 1 hodinu). Navrhněte třídu tak, aby se únava nikdy nemohla dostat z rozmezí 0-20 jednotek. Samozřejmě vám k tomu pomůže zapouzdření, únava určitě nebude veřejným atributem.

Program vyzkoušíte tak, že necháte člověk 3x uběhnout 10 km. Třetí uběhnutí by se nemělo povést. Když člověka necháte po druhém uběhnutí hodinu spát, zvládne i třetí běh.

Na úvod vypište instanci člověka. Definujte mu metodu toString() tak, aby se vypsalo jeho jméno a věk.

Ukázka obrazovky programu:

Konzolová aplikace
Karel Nový (25)
Jsem příliš unavený

public class Clovek {
}

Středně pokročilý příklad

Naprogramujte za pomoci OOP generátor náhodných vět. Nechte ho vygenerovat 10 vět a tyto věty vypište do konzole.

Svůj generátor vybavte následující slovní zásobou:

  • Podměty: jednorožec, programátor, manažer, hroch, T-rex
  • Přísudky: spal, ležel, vařil, uklízel, derivoval
  • Přívlastky: modrý, velký, hubený, nejlepší, automatizovaný
  • Příslovce: rychle, s oblibou, hodně, málo, se zpožděním
  • Příslovečná určení místa: pod stolem, v lese, u babičky, v práci, na stole

Ukázka obrazovky programu:

Konzolová aplikace
velký programátor s oblibou spal u babičky
automatizovaný manažer málo uklízel v lese
hubený hroch hodně derivoval pod stolem
hubený manažer s oblibou derivoval v lese
automatizovaný jednorožec rychle vařil pod stolem
modrý T-rex s oblibou derivoval na stole
nejlepší manažer s oblibou spal u babičky
automatizovaný T-rex s oblibou vařil u babičky
automatizovaný T-rex s oblibou uklízel u babičky
hubený programátor rychle vařil v práci

import java.util.Random;
public class GeneratorVet {
}

Pokročilý příklad

Naprogramujte aplikaci, ve které figuruje auto a garáž. U auta evidujte SPZ a jeho barvu, u garáže evidujte jaké auto je v ní zaparkované (ne jen jeho SPZ, ale opravdu celé auto). Nechte auto s SPZ "123ABC" zaparkovat do garáže (pomocí jeho metody zaparkuj()) a poté nechte vypsat garáž, která při svém výpisu vypíše i auto v ní zaparkované.

Ukázka obrazovky programu:

Konzolová aplikace
V garáži je auto: 123ABC

public class Auto {
}
public class Garaz {
}

 

Stáhnout

Staženo 824x (62.17 kB)
Aplikace je včetně zdrojových kódů v jazyce java

 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
8 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity (9)

 

 

Komentáře
Zobrazit starší komentáře (26)

Avatar
Josef Pospíšil:25. června 16:03

ještě bez těch - 1

public class TvoricVet {
    // definování jednotlivých polí pro náhodné věty
    private String[] jaky = {"velký", "automatizovaný", "hubený", "modrý", "nejlepší"};
    private String[] kdo = {"programátor", "manažer", "hroch", "jednorožec", "T-rex"};
    private String[] jak = {"s oblibou", "málo", "hodně", "rychle"};
    private String[] delal = {"spal", "uklízel", "derivoval", "vařil"};
    private String[] kde = {"u babičky", "v lese", "pod stolem", "na stole", "v práci"};
    // definování generátoru náhody
    private Random random = new Random();

    /**
     * Metoda pro generátor náhodných vět dle zadaných slov
     * @return náhodnou větu
     */
    public String vytvorVetu(){
        return String.format(jaky[random.nextInt(jaky.length)] + " "
                + kdo[random.nextInt(kdo.length)] + " "
                + jak[random.nextInt(jak.length)] + " "
                + delal[random.nextInt(delal.length)] + " "
                + kde[random.nextInt(kde.length)]);
    }
}
 
Odpovědět 25. června 16:03
Avatar
Maroš Škumát:10. srpna 22:02

Stále mi to vyhadzuje chybu keď to pustím a neviem prečo

public class Veta {
    private final String[] slovesa = {"upratoval","kričal","lietal","behal","spal","varil","búchal","padal"};
    private final String[] prislovkySposobu = {"nerád","rýchlo","pomaly","zle","hlasno","zlým spôsobom"};
    private final String[] pridMena = {"pekný","chorý","hluchý","jebavý","mantavý","šikovný"};
    private final String[] podstMena = {"programátor","pes","strom","voda","jednorožec","mobil"};
    private final String[] prislovkyMiesta = {"v práci","doma","na ceste","v obchode","vo vani","na stoličke"};
    private Random random;

    private String generatorSlov(String[] pole)
    {
        int i = random.nextInt(pole.length);
        String slovo = pole[i];
        return slovo;
    }
    public String nahVeta()
    {
        return String.format("%s %s %s %s %s", generatorSlov(pridMena),generatorSlov(podstMena),generatorSlov(prislovkySposobu),generatorSlov(slovesa),generatorSlov(prislovkyMiesta));
    }

}
public class GenerátorNahViet {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Veta veta = new Veta();
        for(int i = 0; i < 10; i++)
        {
            System.out.println(veta.nahVeta());
        }

    }

}
 
Odpovědět 10. srpna 22:02
Avatar
Josef Pospíšil:19. září 8:30

Při odevzdání prvního příkladu mi to hodí zase chybu. Kód jede, jak tu, tak v netbeans, ale při odevzdání neprojde. Stejná jak u minulého cvičení, nevím čím to je.

 
Odpovědět 19. září 8:30
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Josef Pospíšil
David Čápka:19. září 11:51

Pokud ti příklad neprojde, tak vypisuje něco jiného, než je v zadání. Výstup musí být úplně totožný s ukázkovou obrazovkou, mělo by to být napsané i v chybové hlášce.

Odpovědět 19. září 11:51
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Josef Pospíšil
David Čápka:19. září 11:54

Máš tam jiná slova než v ukázce, program to proto nemůže ověřit. Použij ta samá slova jako jsou v ukázkové obrazovce. Na upřesnění zadání pracujeme, je s tím hodně práce, na odevzdávání pracujeme již měsíce a ještě nějaký měsíc to bude trvat, než bude vše dokonalé. Je to poměrně komplexní problematika.

Editováno 19. září 11:54
Odpovědět 19. září 11:54
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
Josef Pospíšil:19. září 12:48

Dobře, děkuju ti za odpověď, dělal jsem to jak se ten výstup líbil víc mě. Podívám se na to a popřípadě překopu

 
Odpovědět 19. září 12:48
Avatar
Vitaliy Lyubachivskyy:26. září 20:09

Ahoj, potřeboval bych nějak schválit druhý příklad. Program mi to nebere i když to pořád zkouším dokola.
Díky

Odpovědět 26. září 20:09
Nejlepší je překonávat nemožné.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Vitaliy Lyubachivskyy
David Čápka:26. září 20:18

Přečti si prosím komentáře výše.

Odpovědět 26. září 20:18
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Vitaliy Lyubachivskyy:26. září 20:29

Nebo jestli by to nešlo stáhnout třeba jenom na pět nebo tři řádky. Byla by to větší šance trefit.

Odpovědět 26. září 20:29
Nejlepší je překonávat nemožné.
Avatar
Vitaliy Lyubachivskyy:26. září 20:37

Tak hotovo, už mi to vzalo. Díky

Odpovědět  +1 26. září 20:37
Nejlepší je překonávat nemožné.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 36. Zobrazit vše