Při programování se snažte vyhýbat opakování kódu vhodným využíváním metod.
Například si budete moci věimnout, že všechny metody pro zobrazení náhodného citátu (ze všech, od autora, oblíbeného) fungují tak, že nejprve vyberou vhodné citáty ze zdroje (například všechny od urřitého autora) a následně v druhém kroku z této části vyberou náhodný citát. Právě druhý krok bude stejný pro všechny metody zobrazující náhodný citát.
- Tlačítko po kliknuti zobrazí náhodný citát od stejného autora jako aktuálně zobrazený citát.
Jistě víte, že k porovnávání slouží operátor == . Funguje však pouze pro primitivní hodnoty typu int, double, char, etc...
Objekty (například typy String) je potřeba orovnávat jinak.
public boolean jeJakub(String jmeno) {
bool jeJakub = jmeno.equals("Jakub"));
return jeJakub;
}Kromě klasického for cyklu existuje i speciální varianta pro procházení prvků v seznamech.
List<String> texty;
for (String text : texty) {
// Tady muzu udelat neco s jednolivymi objekty ze seznamu
System.out.printl(text);
}- Vedle celkového počtu citátu zobraz i počet autorů v aktuálním zdroji citátů.
Z hodiny znáte datovou strukturu seznam (List) a víte jak s ním pracovat.
List<String> jmena = new ArrayList();
jmena.add("Jakub");
jmena.add("Jakub");
jmena.add("Honzik");
jmena.add("Anicka");
int pocet = jmena.size();
// vypise 4 (V seznamu jsou dva Jakubove, jedna Anicka, a Honzik)
System.out.println(pocet);
// prvky v seznamu maji urcene poradi. Anicka je 3. v seznamu
System.out.println(jmena.get(3))
// Muzeme pouzit for-each
for (String jmeno : jmena) {
// Postupne vypise vsechna jmena (poradi bude pokazde stejne).
System.out.printl(jmeno);
}Kromě seznamu má Java i datovou strukturu jménem množina (Set). Od seznamu se liší tím, že prvky v ní nemají pořadí. Další rozdíl je, že prvky v množině jsou unikátní.
Set<String> jmena = new HashSet();
mena.add("Jakub");
jmena.add("Jakub");
jmena.add("Honzik");
jmena.add("Anicka");
int pocet = jmena.size();
// vypise 3 (V seznamu jsou 3 unikatni jmena: Jakub, Anicka, Honzik)
System.out.println(pocet);
// Prvky v mnozine nemaji poradi, nasledujici radek nebude fungovat
System.out.println(jmena.get(3));
// Ale muzeme pouzit for-each
for (String jmeno : jmena) {
// Postupne vypise vsechna jmena (poradi muze byt pokazde ruzne)
System.out.printl(jmeno);
}-
Do třídy
Citatpřidejte atribut typubooleanjménemoblibene.- pro tento atribut vytvořte metodu
isObliblenevracející jeho hodnotu - pro tento atribut vytvořte pro tento atribut vytvořte metody
public void setOblibene(boolean oblibene)nastavující jeho hodnotu - při zobrazení citátu by měl stav checkboxu
chckOblibeneodpovidat hodnotě atributu v objektu citátu - implementuj akci, která umožní pomocí checkboxu
chckOblibeneoznařit citát za oblíbený - výchozí hodnota atributu
oblibeneby měla býtfalsepokud není známá jiná hodnota.
V souboru citaty.txt je každý citát uložen na 3 řádky. Druhý řádek v trojici má hodnotu
1pokud je citát oblíbený,nebo0pokud není. Zohledněte tuto hodnotu při načítání Citatu ze souboru. - pro tento atribut vytvořte metodu
Do Aplikace přidejte tlačítko, které po kliknutí zobrazí náhodný oblibený citát
Implementuje akci, po kliknutí na položku Uložit v menu Soubor uloží aktuálně načtené citáty do souboru.
Pro výběr lokace, kam se citáty uloží, použijte standardní dialog pro uložení souboru.
Zobrazení ukládacího dialogu je velmi podobné otevření souboru
int vysledek = vyberovyDialog.showSaveDialog(this);
if(vysledek == JFileChooser.APPROVE_OPTION) {
}Do CitacniSluzba přidejte metodu, která skutečně uloží citáty do souboru. Nezapomeňte zachovat spravný formát dat. Pro uložení jednotlivých řádků využíjte metodu zapisRadkyDoSouboru ze třídy Pomocník. Nezapomeňte že této metodě je potřeba předat seznam všech řádků, které chcete do souboru zapsat.