PB162 Programovanie v jazyku Java I 1. Úvod Marek Šabo Jakub Smadiš 18. septembra 2019 Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 1/16 Organizačné pokyny základné informácie sú dostupné na wiki na riešenie nejasností používajte diskusné fórum cibuľová výuka - čo sa naučíme jeden týždeň použijeme v tom ďalšom predmet je časovo náročný Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 2 / 16 UNIXové okienko o spustenie terminálu: Ctrl + Alt + T e doporučený shell je zsh s oh-my-zsh: • https://github.com/robbyrussell/oh-my-zsh o príkazy na zopakovanie: man, cd, ls, grep, ssh, vim/gedit, . .. o vedieť čo sú to prepínače, napr. -h —help 9 Pre Windows užívateľov: nainštalujte si Cygwin alebo Git Bash Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 3 / 16 Pár otázok na ujasnenie (a) Co je to Git? Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 4 / 16 Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 4 / 16 Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí (b) Co znamená správa verzií? Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 4 / 16 Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí. (b) Co znamená správa verzií? Zaznamenávanie zmien súborov v čase. Užívateľ sa tak môže vždy vrátiť k pôvodnej verzii, pozrieť si čo sa odvtedy zmenilo, atď. Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 4 / 16 Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí. (b) Co znamená správa verzií? Zaznamenávanie zmien súborov v čase. Užívateľ sa tak môže vždy vrátiť k pôvodnej verzii, pozrieť si čo sa odvtedy zmenilo, atď. (c) A čo je potom GitHub? Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 4 / Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí. (b) Co znamená správa verzií? Zaznamenávanie zmien súborov v čase. Užívateľ sa tak môže vždy vrátiť k pôvodnej verzii, pozrieť si čo sa odvtedy zmenilo, atď. (c) A čo je potom GitHub? Webová služba, ktorá poskytuje webhosting gitových projektov, takže sa k nim dostanete odvšadiaľ (ak máte pripojenie na internet). Podobnou službou je napríklad GitLab alebo Bitbucket. Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 4 / 16 Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí. (b) Co znamená správa verzií? Zaznamenávanie zmien súborov v čase. Užívateľ sa tak môže vždy vrátiť k pôvodnej verzii, pozrieť si čo sa odvtedy zmenilo, atď. (c) A čo je potom GitHub? Webová služba, ktorá poskytuje webhosting gitových projektov, takže sa k nim dostanete odvšadiaľ (ak máte pripojenie na internet). Podobnou službou je napríklad GitLab alebo Bitbucket. (d) Na čo nám to je? <□► < [f? ► < -E ► < -Ž ► š 'O Q, O Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 4 / 16 Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí. (b) Co znamená správa verzií? Zaznamenávanie zmien súborov v čase. Užívateľ sa tak môže vždy vrátiť k pôvodnej verzii, pozrieť si čo sa odvtedy zmenilo, atď. (c) A čo je potom GitHub? Webová služba, ktorá poskytuje webhosting gitových projektov, takže sa k nim dostanete odvšadiaľ (ak máte pripojenie na internet). Podobnou službou je napríklad GitLab alebo Bitbucket. (d) Na čo nám to je? Na bezpečné prepisovanie kódu, na paralelné tímové programovanie, záloha, na zistenie kto napísal tak hrozný kód vo veľkom projekte... <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 4 / 16 Základné príkazy git commit • slúži na vytvorenie kontrolného bodu/snapshotu, ku ktorému sa môžme kedykoľvek vrátiť • bod je vytvorený (iba) na lokálnom počítači • každý commit má svoju správu, časovú známku a unikátny hash • commit má v sebe uložené zmeny oproti predošlému commitu git push • nahrá commity do vzdialeného repozitáru (ktorý sa nachádza napríklad na GitLabe) git pull « stiahne zmeny (commity) zo servera do lokálneho adresára • niečo podobné ako git clone, ale nevytvára nový priečinok, iba ho aktualizuje so serverovým <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 5 / 16 Sledovanie súborov Pri vytváraní nových súborov ich git automaticky nesleduje. Súbor zahrnieme do sledovania príkazom git add . Ak chceme pridať všetky súbory, môžme použiť prepínač -A alebo —all. Poznámka (RTFM) Strácate sa v príkazoch? Na zistenie informácii o príkaze použite man git- napr. man git-commit Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 6 / Vetvy (branches) Chceme paralelne vyvíjať rôzne časti na jednom projekte. master — ~o-^o— O nice feature O very_nice_feature time Každá vetva má vlastné commity, medzi vetvami sa dá ľubovoľne prepínať. Vetvy môžme rozdeliť (vytvoriť novú vetvu) alebo spojiť (merge). Hlavná vetva sa volá master. Vetvu vytvoríme príkazom git branch a prepíname sa medzi nimi pomocou git checkout . Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 7 / 16 Integrated development environment - IDE V NetBeans 91 IntelliJIDEA (= eclipse Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I Nastavenie a spustenie IDE # we need to add jdk and idea module module add jdk-ll-loc module add idea-16-loc # run idea on background idea.sh & Wiki pre nastavenie IDE. Viac informácii nájdete na GitLab wiki s popisom ako si rozbehať prostredie aj doma. <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 9 / 16 Úvod do OOP Motivácia: chceme rozumne ukladať štruktúry, aby sa s nimi dalo lepšie pracovať. Chceme vytvořit/popísat objekt pes. Co všetko by mal obsahovat? <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 10 / 16 Úvod do OOP Motivácia: chceme rozumne ukladať štruktúry, aby sa s nimi dalo lepšie pracovať. Chceme vytvořit/popísat objekt pes. Co všetko by mal obsahovat? to, čo pes má: hlavu, oči, 4 nohy, meno, ... to, čo pes robí: štekanie, behanie, vrtenie chvostom, ... <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 10 / 16 Úvod do OOP Motivácia: chceme rozumne ukladať štruktúry, aby sa s nimi dalo lepšie pracovať. Chceme vytvořit/popísat objekt pes. Co všetko by mal obsahovat? to, čo pes má: hlavu, oči, 4 nohy, meno, ... atribúty to, čo pes robí: štekanie, behanie, vrtenie chvostom, ... metódy <□► < [f? ► < -E ► < -Ž ► S 'O Q, O Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 10 / 16 Pseudopes - intuícia ■ class Dog { String name; int age ; String welcomeMaster () { return "Woof I am " + name; return "Wrr HAF HAF" ; } } } String barkOthers () { <□► < [f? ► < ► < -Ž ► -Š 'O Q, O Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 11 / 16 Pseudopes - intuícia class Dog { String name; int age ; String welcomeMaster () { return "Woof I am " + name } String barkOthers() { return "Wrr HAF HAF" ; } ■v Co ak • chceme overiť, aby sa vek vždy nastavil na nezáporné číslo? • nechceme zverejniť meno nášho psa? • chceme obmedziť viditeľnosť metód? } Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 11 / 16 Pseudopes - pokračovanie public class Dog { private String name; private int age; public String welcomeMaster() { return "Woof I am " + name; public String barkOthers() { return "Wrr HAF HAF"; } public void setAge(int newAge) { if newAge > 0 age = newAge ; } public int getAge() { return age; } Trieda je verejná - každý môže vyrábať psov. Atribúty sú privátne, iba metódy v triede môžu s nimi pracovať. Metódy na prácu s atribútmi nazývame gettery a settery. Ako však vytvoríme konkrétneho psa? () Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 12/16 Konštru ktorý O Konstruktor bez parametrov (vytvorí sa sám, ak neexistuje žiadny) public Dog() { } // v triede Dog Dog staryDunco = new Dog(); // v inej triede staryDunco.setName("Duneo") ; staryDunco.setAge (13); O Konštruktor 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); Premenná staryDunco sa nazýva inštanciou triedy Dog. Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 13 / 16 Vytváranie primitívnych typov vs. vytváranie objektov Primitívne typy • int, boolean, char, double, ... 9 premenná môže byť vytvorená "ihneď" • každý typ má defaultnú hodnotu: int má 0, double 0.0, atď. Objekty • zvyčajne si vytvárame vlastné - Dog, Car, Wheel, Ma in, Math, ... 9 premenná musí byť najprv skonštruovaná, napr. auto si musí najprv vytvoriť kolesá • objektová premenná má defaultne hodnotu null • premenné sú prakticky ukazatele, null hovorí "ukazuj na nič" Poznámka Objekt začína na rozdiel od primitívnych typov veľkým písmenom. Dog vs. int Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 Komentáre sú užitočné *le coding* Public di» Employee Privat« _nan» A-s Stí Private _s«.1ary 4s I Public fisjilOr'v Pro| Get Return _n*T> End Get End Property Public Readonly Pral Get Return _sil-End Get End Property Piihlir íiih TuTinť Alwflyi pul iiHugh í srnTiípHj in y ff lir e od«! © 1 Enough for today, saving time! f Opening file 6 weeks later... mm äm 1 -Q- 4L JL4 Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 15 / 16 Javadoc / * * * * Method used to return reference to dog with given id * * @param id an id of the dog we want to get * ©return the dog we were looking for */ public Dog findDog(int id) { return dogs [id] ; } Dog public Dog findDog(int id) Method used to return reference to dog with given id Parameters: id - an id of the dog we want to get Returns: the dog we were Looking for Marek Šabo, Jakub Smadiš PB162 Programovanie v jazyku Java I 18. septembra 2019 16 / 16