Jakub Smadiš 7. marca 2022 Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 1 / 10 Rovnaké zápisy Jakub Smadiš PB162 Programovanie v jazyku Java I < -š ► < -š ► 7. marca 2022 2/10 Rovnaké zápisy Defaultná hodnota double double realNumber; Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 2 / 10 Rovnaké zápisy Defaultná hodnota double: double realNumber ; double realNumber = 0.0; Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 2 / 10 Rovnaké zápisy Defaultná hodnota double: double realNumber ; double realNumber = 0.0; Defaultná hodnota objektovej premennej Dog max; Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 2 / 10 Defaultná hodnota double: double realNumber ; double realNumber = 0.0; Defaultná hodnota objektovej premennej: Dog max; Dog max = null; 7. marca 2022 Jakub Smadiš PB162 Programovanie v jazyku Java I 2/10 Defaultná hodnota double: double realNumber ; double realNumber = 0.0; Defaultná hodnota objektovej premennej: Dog max; Dog max = null; Pri výpise objektu sa použije metoda: System.out.println(object); Defaultná hodnota double: double realNumber ; double realNumber = 0.0; Defaultná hodnota objektovej premennej: Dog max; Dog max = null; Pri výpise objektu sa použije metoda: System.out.println(object); System.out .println(object .toStringO) ; Rovnaké zápisy Defaultná hodnota double: double realNumber ; double realNumber = 0.0; Defaultná hodnota objektovej premennej: Dog max; Dog max = null; Pri výpise objektu sa použije metóda: System.out.println(object); System.out.println(object.toString()); Ak trieda Dog nemá žiaden konštruktor, Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 2 / 10 Rovnaké zápisy Defaultná hodnota double: double realNumber ; double realNumber = 0.0; Defaultná hodnota objektovej premennej: Dog max; Dog max = null; Pri výpise objektu sa použije metóda: System.out.println(object); System.out.println(object.toString()); Ak trieda Dog nemá žiaden konštruktor, vytvorí sa defaultný: Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 2 / 10 Rovnaké zápisy Defaultná hodnota double: double realNumber ; double realNumber = 0.0; Defaultná hodnota objektovej premennej: Dog max; Dog max = null; Pri výpise objektu sa použije metóda: System.out.println(object); System.out.println(object.toString()); Ak trieda Dog nemá žiaden konštruktor, vytvorí sa defaultný: public Dog () { } Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 2 / 10 Konstruktor s parametrami alebo bez? O Konstruktor bez parametrov public Dog() { } // v triede Dog Dog staryDunco = new Dog(); // v inej triede staryDuneo.setName("Duneo") ; staryDunco.setAge (13); O Konstruktor s parametrami public Dog(String ourName, int ourAge) { name = ourName; age = ourAge; // privátne atribúty su name a age } Dog staryDunco = new Dog("Dunco", 13); Má vôbec niekedy zmysel používať settery? Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 3 / 10 Konstruktor s parametrami alebo bez? O Konštruktor bez parametrov public Dog() { } // v triede Dog Dog staryDunco = new Dog(); // v inej triede staryDunco.setName("Dunco") ; staryDunco.setAge (13); O Konštruktor s parametrami public Dog(String ourName, int ourAge) { name = ourName; age = ourAge; // privátne atributy su name a age } Dog staryDunco = new Dog("Dunco", 13); Má vôbec niekedy zmysel používat settery? • ak chceme hodnoty neskôr zmeniť (premenujeme psa) • niektoré parametry sú voliteľné (pes nemá špeciálne schopnosti, môžme mu nejakú pridať) i / Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 Výnimky Pri nezvyčajných (výnimočných) situáciách Java vyhadzuje výnimky. Výnimky budeme preberať neskôr, zatiaľ v skratke: o nastávajú pri situáciách, ktoré by nemali nastať (delenie nulou) • výnimka spôsobí pád programu • null.toStringO vyhodíNullPointerException <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 4 / 10 Java je ukecaná Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 5/10 Java je ukecaná ľ M TWO PAGES IN ANP I STILL WAVE NO IDEA WWAT yOU'RE SAVING. Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 5/10 Konvencie v Jave balíčky (packages) Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 6 / 10 Konvencie v Jave balíčky (packages) com.sun.eng, cz.muni.fi <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 6 / 10 Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi • triedy (classes) Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 6/10 Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi • triedy (classes) Dog, VeryBigDog, Object, String < [f? ► < ► < -Š ► -Š >0 °n O Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi 9 triedy (classes) Dog, VeryBigDog, Object, String a premenné (variables) Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 6/10 Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi 9 triedy (classes) Dog, VeryBigDog, Object, String a premenné (variables) int i, Dog maxipesFik Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 6 / 10 Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi 9 triedy (classes) Dog, VeryBigDog, Object, String a premenné (variables) int i, Dog maxipesFik • metody (methods) Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 6 / 10 Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi 9 triedy (classes) Dog, VeryBigDog, Object, String a premenné (variables) int i, Dog maxipesFik • metody (methods) Vertex getVertexQ, void runFast(Dog runningDog) Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 6 / 10 Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi 9 triedy (classes) Dog, VeryBigDog, Object, String a premenné (variables) int i, Dog maxipesFik • metody (methods) Vertex getVertex(), void runFast(Dog runningDog) • konstanty (constants) Jakub Smadiš PB162 Programovanie v jazyku Java I initio* < = = š ^0°\ 7. marca 2022 6 / Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi 9 triedy (classes) Dog, VeryBigDog, Object, String 9 premenné (variables) int i, Dog maxipesFik • metody (methods) Vertex getVertex(), void runFast(Dog runningDog) • konstanty (constants) static final int MAX_WIDTH = 99 Jakub Smadiš PB162 Programovanie v jazyku Java I initio* < = = š ^0°\ 7. marca 2022 6 / Konvencie v Jave • balíčky (packages) com.sun.eng, cz.muni.fi 9 triedy (classes) Dog, VeryBigDog, Object, String a premenné (variables) int i, Dog maxipesFik • metódy (methods) Vertex getVertex(), void runFast(Dog runningDog) • konštanty (constants) static final int MAX_WIDTH = 99 Podrobnejšie informácie nájdete na stránke Oracle. <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 6 / 10 Máme nasledovný kód: public class Dog { private int age; // global variable • • • public int countAge () { int age; // local variable • • • print(age); // which one is printed? } Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 7 / 10 Kľúčové slovo this Máme nasledovný kód: public class Dog { private int age; // global variable • • • public int countAge () { int age; // local variable • • • print(age); // which one is printed } • Ako zavolať lokálnu premennú? akub Smadiš PB162 Programovanie v jazyku Java I Kľúčové slovo this Máme nasledovný kód: public class Dog { private int age; // global variable • • • public int countAge () { int age; // local variable • • • print(age); // which one is printed } • Ako zavolať lokálnu premennú? age akub Smadiš PB162 Programovanie v jazyku Java I Máme nasledovný kód: public class Dog { private int age; // global variable • • • public int countAge () { int age; // local variable • • • print(age); // which one is printed? } • Ako zavolať lokálnu premennú? age • Ako zavolať globálnu premennú? Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 7 / 10 Kľúčové slovo this Máme nasledovný kód: public class Dog { private int age; // global variable • • • public int countAge() { int age; // local variable • • • print(age); // which one is printed } • Ako zavolať lokálnu premennú? age • Ako zavolať globálnu premennú? this.age Jakub Smadiš PB162 Programovanie v jazyku Java I Constructor/method overloading • rovnaký názov, rôzne parametre • nemusí ich byť len rôzny počet class Dog { public Dog(int age) { } public Dog() { Dog(4); } Jakub Smadiš Preťaženie konštruktorov Constructor/method overloading • rovnaký názov, rôzne parametre • nemusí ich byť len rôzny počet class Dog { public Dog(int age) { } public Dog() { Dog(4); } Volanie konštruktoru v konštruktore takto nefunguje! Treba použiť známe kľúčové slovo. <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 8 / 10 Preťaženie konštruktorov Constructor/method overloading • rovnaký názov, rôzne parametre • nemusí ich byť len rôzny počet class Dog { public Dog(int age) { } public Dog() { this(4); } Volanie konštruktoru v konštruktore takto nefunguje! Treba použiť známe kľúčové slovo. <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Jakub Smadiš PB162 Programovanie v jazyku Java I 7. marca 2022 8 / 10 Overloading & overriding Jakub Smadiš PB162 Programovanie v jazyku Java I < -š ► < -š ► 7. marca 2022 9/10 Hint na záver void divide(int depth) je na pár riadkov: 9 skontrolujem podmienky • rozdelím trojuholník • zavolám rozdelenie trojuholníka na menších podtrojuholníkoch Jakub Smadiš <□► < [f? ► < -E ► < -ž ► -š •O Q, O PB162 Programovanie v jazyku Java I 7. marca 2022 10 / 10