Jakub Smadiš 13. februára 2022 Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 1 / 14 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ý Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 2 / 14 Pár otázok na ujasnenie (a) Co je to Git? Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 3 / 14 Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 3 / 14 Pár otázok na ujasnenie (a) Co je to Git? Distribuovaný systém správy verzí (b) Co znamená správa verzií? Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 3 / 14 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ď. Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 3 / 14 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? Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 3 / 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. Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 3 / 14 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? Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 3 / 14 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... Jakub Smadiš <□► < [f? ► < -E ► < -ž ► -š •O Q, O PB162 Programovanie v jazyku Java I 13. februára 2022 3 / 14 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 Jakub Smadiš <□► < [f? ► < -E ► < -ž ► -š •O Q, O PB162 Programovanie v jazyku Java I 13. februára 2022 4 / 14 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 Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 5 / Vetvy (branches) Chceme paralelne vyvíjať rôzne časti na jednom projekte. master nice feature O verynicefeature 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 . Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 6 / 14 Integrated development environment - IDE v NetBeans IntelliJIDEA ec I i pse Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 Uvod do OOP Motivácia: chceme rozumne ukladať štruktúry, aby sa s nimi dalo lepšie pracovať. Chceme vytvoriť/popísať objekt pes. Čo všetko by mal obsahovať? Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 8 / Ú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, ... Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 8 / Uvod 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 Jakub Smadiš <□► < [f? ► < -E ► < -ž ► -š •O Q, O PB162 Programovanie v jazyku Java I 13. februára 2022 8 / 14 Pseudopes - intuícia class Dog { String name; int age ; String welcomeMaster () { return "Woof I am " + name } String barkOthers() { return "Wrr HAF HAF" ; } } Jakub Smadiš <□► < [f? ► < -E ► < -ž ► -š •O Q, O PB162 Programovanie v jazyku Java I 13. februára 2022 9 / 14 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? } Jakub Smadiš <□► < [f? ► < -E ► < -ž ► š •O Q, O PB162 Programovanie v jazyku Java I 13. februára 2022 9 / 14 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? () Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 10 / 14 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. Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 11 / 14 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 Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 Komentáre sú užitočné *le coding* Public Cliii Employee Privrtf _nan» A-s Stí Private _s«.1ary 4,5 I Public KsjilOr'v Pro| Get Return _n*T> End Get End Property Public Readonly Pral Get Return _sil-End Get End Property Pnhlir ính TuTinť Alwflyi put iiHugh ísrnTiípHj in ysur cede! © 1 Enough for today, saving time! f Opening file 6 weeks later... mm äm 1 -Q-JL4 Jakub Smadiš PB162 Programovanie v jazyku Java I 13. februára 2022 13 / 14 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 Jakub Smadiš PB162 Programovanie v jazyku Java I <□► < [f? ► < -E ► < -ž ► -š •O Q, O 13. februára 2022 14 / 14