Marek Sabo 16. septembra 2018 rek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 1/19 Organizačné pokyny • základné informácie: • osnova v ISe • wiki • iteračný projekt - každý týdeň nové zadanie o 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ý, ale látka je OK Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 2/19 UNIXové okienko Pre Windows užívateľov: nainštalujte si Cygwin alebo Git Bash príkazy na zopakovanie: man, cd, Is, grep, ssh, vim/gedit, ... vedieť čo sú to prepínače, napr. -h —help Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 3/19 Integrated development environment - IDE V NetBeans 91 IntelliJIDEA (= eclipse < □ ► < iS ► Marek Šabo PB162 Programovanie v jazyku Java I New Project ■s Java ft Java Enterprise CB J2ME ■S1 Android ^1 CLouds ^ Spring ■l Java FX ■I- InteLLU PlatForm Plugin m Maven O Gradle © Groovy 9 GriFFon 9 Grails f Static Web C? Flash •s Empty Project Project SDK: ■11.8 (Java version "1.8.0_66") New... Create From archetype corn, atlassian, maven. archetypes: bamboo-plugin-archetype corn, atlassian.rriaven. archetypes: conFluence-plugin-archetype com. atlassian, maven. archetypes:jira-plugin-archetype com.rFc. maven, archetypes:jpa-maven-archetype de,akquinet,jbosscc:jbosscc-seam-archetype net.databindendata-app net.UFtweb:liFt-archetype-basic net.liFtweb:liFt-archetype-blank net.sF.maven-har:maven-archetype-har net.sF,rriaven-sar:maven-archetype-sar org. apache, camel, archetypes: camel-archetype-activemq org. apache, camel, archetypes: camel-archetype-component org. apache, camel, archetypes: camel-archetype-java org. apache, camel, archetypes: camel-archetype-scala org. apache, camel, archetypes: camel-archetype-spring org. apache, camel, archetypes: camel-archetype-war org. apache, cocoon: cocoon-22-archetype-block org. apache, cocoon: cocaon-22-archetype-block-plain org. apache, cocoon: cocoon-22-archetype-webapp org. apache, maven. archetypes: maven-archetype-j2ee-simple org. apache, maven, archetypes: maven-archetype-marmalade-mojo org. apache, maven, archetypes: maven-archetype-mojo org. apache, maven, archetypes: maven-archetype-portlet org. apache, maven, archetypes: maven-archetype-proFiles org. apache, maven, archetypes: maven-archetype-quickstart org. apache, maven, archetypes: maven-archetype-site org. apache, maven, archetypes: maven-archetype-site-simple Previous Next Cancel Help Demo Marek Sabo PB162 Programovanie v jazyku Java I 16. septembra 2018 5/19 New Project Groupld cz,muni,Fi,pb162.example] ArtiFactld hello-wo rid Version 1.0-SNAPSHOT * Inherit ^ Inherit Demo Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 6/19 Nastavenia Inte Nainštalujte si checkstyle plugin a Ctrl + Shift + A, napíšte 'plugins' a odentrujte • v ľavom hornom rohu napíšte do vyhľadávania 'checkstyle', ak nič nenašlo kliknite na 'Browse repositories...' • dajte inštalovať Checkstyle-IDEA Zmeňte defaultný text pri vytvorení triedy • Ctrl + Shift + A, napíšte a spustite 'Code template' • zvoľte 'File Header' • upravte a uložte / * * * TODO: create javadoc * ©author */ Poznámka Zobraté z wiki: https: // gitlab. fi. muni, cz/pbl62/ pb 162-course-info/ wikis/ working-with-ide Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 8/19 Ú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? Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 9/19 Ú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, ... Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 9/19 Ú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 Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 9/19 Pseudopes - intuícia ■ class Dog { String name; int age ; String welcomeMaster () { return "Woof I am " + name; return "Wrr HAF HAF" ; } } } String barkOthers () { Marek Sabo PB162 Programovanie v jazyku Java I 16. septembra 2018 10 / 19 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 PB162 Programovanie v jazyku Java I 16. septembra 2018 10 / 19 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 PB162 Programovanie v jazyku Java I 16. septembra 2018 11/19 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 PB162 Programovanie v jazyku Java I 16. septembra 2018 12 / 19 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 PB162 Programovanie v jazyku Java I 16. septembra 2018 Konvencie v Jave There are two types of people. if (Condition) í Statements /* m i m } if (Condition) { Statements > Programmers will know. c# vs. Java Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 14 / 19 Balíčky alebo Co vás napadne pri slove jaguár? Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 15 / 19 Balíčky alebo Co vás napadne pri slove jaguár? animal.wild.Jaguar vehicle.car.Jaguar Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 15 / 19 vehicle.car.Jaguar Aj Android takýmto spôsobom odlišuje aplikácie s rovnakým názvom.i Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 15 / 19 Otázky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otázky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otázky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otázky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Na pridanie kódu pri nastavovaní (overenie validného vstupu) < g ► < -ž ► < -e ► -e -o °s c Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otá zky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Na pridanie kódu pri nastavovaní (overenie validného vstupu). Na obmedzenie viditeľnosti (nechceme aby hocikto nastavil daný atribút). Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otá zky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Na pridanie kódu pri nastavovaní (overenie validného vstupu). Na obmedzenie viditeľnosti (nechceme aby hocikto nastavil daný atribút). • Môžu mať metódy viditeľnosť typu priváte? Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otá zky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Na pridanie kódu pri nastavovaní (overenie validného vstupu). Na obmedzenie viditeľnosti (nechceme aby hocikto nastavil daný atribút). • Môžu mať metódy viditeľnosť typu priváte? Môžu, ale nieje bežné. Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otá zky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Na pridanie kódu pri nastavovaní (overenie validného vstupu). Na obmedzenie viditeľnosti (nechceme aby hocikto nastavil daný atribút). • Môžu mať metódy viditeľnosť typu priváte? Môžu, ale nieje bežné. • Co ak začnem používat inštanciu objektu bez jej vytvorenia? Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otá zky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Na pridanie kódu pri nastavovaní (overenie validného vstupu). Na obmedzenie viditeľnosti (nechceme aby hocikto nastavil daný atribút). • Môžu mať metódy viditeľnosť typu priváte? Môžu, ale nieje bežné. • Co ak začnem používat inštanciu objektu bez jej vytvorenia? Nastane výnimočná situácia, ktorá spôsobí pád programu. Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otá zky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Na pridanie kódu pri nastavovaní (overenie validného vstupu). Na obmedzenie viditeľnosti (nechceme aby hocikto nastavil daný atribút). • Môžu mať metódy viditeľnosť typu priváte? Môžu, ale nieje bežné. • Co ak začnem používat inštanciu objektu bez jej vytvorenia? Nastane výnimočná situácia, ktorá spôsobí pád programu. • String sa píše veľkým písmenom, znamená to, že je to objekt? Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 Otá zky na zamyslenie • Aké sú ďalšie výhody používania balíčkov? Triedy majú svoju hierarchiu, štruktúru. • Prečo je dobré mať privátne atribúty? Na pridanie kódu pri nastavovaní (overenie validného vstupu). Na obmedzenie viditeľnosti (nechceme aby hocikto nastavil daný atribút). • Môžu mať metódy viditeľnosť typu priváte? Môžu, ale nieje bežné. • Co ak začnem používat inštanciu objektu bez jej vytvorenia? Nastane výnimočná situácia, ktorá spôsobí pád programu. • String sa píše veľkým písmenom, znamená to, že je to objekt? Ano, ale môžme ho vytvárat aj inak ako použitím new StringO'Dunco"), stačí 11 Dune o". Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 16 / 19 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 4 äm 1 -Q- 4L JL4 Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 17 / 19 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 Sabo PB162 Programovanie v jazyku Java I 16. septembra 2018 18 / 19 Na doma Zistite si, čo je to Git. Skúste sa s ním pohrať na try.github.io. Pre lepšiu vizualizáciu a pokročilejšiu prácu je tu learngitbranching.js.org. Na ďalšom cvičení si prejdeme návod na nastavenie vášho súkromného repozitára. Spravte si krok O a 0.1. Marek Šabo PB162 Programovanie v jazyku Java I 16. septembra 2018 19 / 19