Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

15. diel - Diár s databázou v Jave - Záznam, databáza a diár

V predchádzajúcom cvičení, Riešené úlohy k 12. lekcii OOP v Jave, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V dnešnom tutoriále si do ArrayListu skúsime uložiť objekty.

Najprv som chcel urobiť databázu používateľov, ale používateľa sme tu už niekoľkokrát mali. Keďže sme sa nedávno naučili dátum a čas, naprogramujeme si diár. Do databázy budeme ukladať jednotlivé záznamy a vždy vypíšeme ten dnešný a zajtrajší. Databáza to nebude samozrejme tá v tom pravom slova zmysle (na to ešte nemáme skúsenosti), ale bude sa jednať práve o ArrayList v operačnej pamäti počítača. Bude umožňovať záznamy pridávať, hľadať ich podľa dátumu a mazať podľa dátumu a času. Založme si nový projekt, ktorý nepomenujeme Diar (budeme toto meno potrebovať pre triedu) ale napr. Poznamkovac, to bude názov našej výslednej aplikácie.

Hlavnú triedu Main.java pomenujeme na Poznamkovac.java. Môžeme to urobiť cez kontextovú ponuku (pravým kliknutím na súbor Main.java -> Refactor -> Rename) prípadne ručne premenujeme súbor a potom aj názov triedy (samozrejme bez prípony) vo vnútri kódu.

Záznam

Najprv si urobme triedu, ktorej inštancie budeme ukladať. Nazvime ju Zaznam. Záznam v diári sa bude viazať k nejakému dátumu a času. Tiež bude obsahovať nejaký text. Záznam teda bude niečo ako 12. ledna 2013 - Vyvenčit psa. To je asi všetko, trieda môže vyzerať takto:

Trieda v podstate slúži len na záznam dát a nemá žiadne metódy (až na konštruktor a metódu toString() a nejaké tie gettery/settery). Funkcionalitu ako takú ale neponúka. Bystrejší si určite všimli, že metóda toString() nijako neformátuje dátum a čas. K tomu sa neskôr ešte vrátime. Okomentovávať v lekcii nebudem, v prípade potreby si potom môžete stiahnuť celý hotový projekt aj s komentármi.

Databáza

Pretože program bude o niečo zložitejší, rozdelíme ho do viacerých objektov (vrstiev). Záznam máme, teraz si vytvoríme objekt Databaze, v ktorej budú záznamy uložené. Opäť bude mať privátnu kolekciu ArrayList, ako mal Losovac. Ten bude teraz typu Zaznam. Diár bude umožňovať záznamy pridávať, mazať a vyhľadávať podľa dátumu. K projektu teda pridáme triedu Databaze. Bude veľmi podobná minulej triede Losovac:

Všimnite si použitie "diamond operátora" pri vytváraní novej inštancie ArrayList. Od Javy 7 nemusíme generický typ uvádzať 2x, ale stačí ho uviesť iba pri deklarácii premennej a špicatej zátvorky môžeme druhýkrát už ponechať prázdne. Tiež si povedzme, že keby sme špicaté zátvorky nenapísali vôbec a ArrayList deklarovali aj inicializovali bez uvedenia generického typu, položky by sa ukladali ako typ Object. Museli by sme ich vždy na naše zaznamy ručne prevádzať. Ďalej v seriáli si ukážeme, ako by sa to robilo a listy ešte potom stretnete pri kolekciách.

Trieda Databaze teda slúži iba na manipuláciu s dátami. Obsahuje vnútornú kolekciu zaznamy, tá sa inicializuje v konštruktore. Mohli by sme použiť aj inicializáciu bez konštruktora priamo pri deklarácii vo forme:

Dodajme triede metódy na pridanie, vymazanie a vyhľadanie záznamu.

Pridanie záznamu by malo byť jasné:

Budeme si musieť pridať aj import:

Ako druhú metódu pridajme nájdenie záznamov v daný deň. Metóda bude vracať kolekciu ArrayList nájdených záznamov, pretože ich pre ten deň môže byť v databáze viac. Záznamy budeme môcť vyhľadávať podľa dátumu i času alebo len podľa dátumu. Môžeme tak nájsť záznamy v konkrétny deň bez ohľadu na to, v akú sú hodinu. Podľa čoho budeme chcieť vyhľadávať bude udávať parameter dleCasu typu boolean. Pokiaľ bude mať hodnotu false, hľadáme len podľa dátumu bez ohľadu na čas. Kolekciu ArrayList si najskôr vytvoríme a potom do neho pridávame záznamy, ktoré zodpovedajú hľadanému dátumu. Zodpovedať musí buď celý dátum a čas (ak hľadáme aj podľa času) alebo len dátum (ak hľadáme len podľa dátumu). Naplnený ArrayList s nájdenými záznamami vrátime:

Nakoniec pridáme vymazanie záznamov v určitú dobu. To urobíme pomocou metódy najdiZaznamy() a nájdené záznamy jednoducho proiterujeme az kolekcie ArrayList odstránime. Budeme mazať podľa presného dátumu i času, 2. parameter pri metóde najdiZaznamy() bude teda na hodnote true:

Diár

Teraz si pridáme k projektu poslednú triedu, bude to samotný diár. Nazvime ju Diar. Ten už bude obsahovať metódy na komunikáciu s užívateľom. Všimnite si, ako aplikáciu rozdeľujeme a jednotlivé jej časti zapuzdrujeme. Kolekcia ArrayList je zapuzdrená v databáze, ktorá nad ním postavila ďalšie metódy pre bezpečnú manipuláciu s jeho obsahom. Samotnú databázu teraz vložíme do diára. Tým oddelíme logiku a prácu s dátami od komunikácie s užívateľom a ďalšími vstupmi/výstupmi programu. Trieda Diar teda bude komunikovať s užívateľom a dáta od neho odovzdá databázu.

Pridajme si privátnu inštanciu databázy, ktorú si vytvoríme v konštruktore. Podobne pridajme aj inštanciu triedy Scanner, ktorú budeme v triede potrebovať:

V ďalšej lekcii, Diár s databázou v Jave - Metódy diára, výnimky a final , sa pozrieme na metódy triedy Diar, krátko pozeráme na výnimky a kľúčové slovo final.


 

Predchádzajúci článok
Riešené úlohy k 12. lekcii OOP v Jave
Všetky články v sekcii
Objektovo orientované programovanie v Jave
Preskočiť článok
(neodporúčame)
Diár s databázou v Jave - Metódy diára, výnimky a final
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
1 hlasov
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 sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity