I Cvičenie k PB162 Programování v jazyku Java Slajdy k druhému cvičeniu Rastislav Mirek Fakulta informatiky, Masarykova univerzita 1. októbra 2009 □ g - = = -T)C\(\ Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Dneštné cvičenie • Opakovanie: Trieda, objekt, atributy, metody, subori Java a .class, konvencie, prikazy príkazového riadku • možnosť ziskať body do cvičení za aktivitu a správne odpovede a Životný cyklus objektu, konštruktory, prikaz new, objektové premenne, lokálne premenné a ich platnosť, lokálne premenné verzus atributy, if a for, metoda main() • pýtať sa, pýtať sa, pýtať sa • Ukážkový príklad • požiadať o spomalenie a dovysvetlenie ak niečo nie je jasné • Príklad za 3 body do cvičení •f) Q^O" Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Opakovanie základných pojmov • Mali by ste vedieť: • Čo je to trieda ? • Čo je to objekt ? • Trieda je zovšeobecnením objektov • Objekty sú inštanciami triedy - jej konkretizáciami. • Trieda má atributy(vlastnosti) a metódy(činnosti, ktoré môže vykonávať) • Uvedte príklad - trieda jej typické atribúty a metódy. Inštancie tejto triedy(objekty) a hodnoty atribútov, ktoré môžu napr. mať Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Atribúty • Vlastnosti danej triedy • Len pre kontext našej aplikácie relevatné vlastnosti • Všetky inštancie(objekty) tejto triedy majú tieto vlastnosti ale jednotlivé ištancie môžu mat iné hodnoty(samotná trieda nemá hodnoty atribútov) • Atribúty môžu byť napr. textové, číselné čí ich hodnotou môže byť objekt nejakej triedy (hovoríme o type atribútu) • atribúty deklarujeme v triedach (obyčajne) tesne pod hlavičkou triedy • deklarácia: ; je u atribútov vždy private číselný - int text - String (je to objekt preto velke S) boolovska hodnota - boolean objektový typ - názov lubovolnej triedy, hodnotou takéhoto atributu budu inštancie danej triedy Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Metódy • Činnosti, ktoré je možné po objektoch triedy požadovat • Len pre kontext našej aplikácie relevatné činnosti, ktoré su objekty schopne • Všetky inštancie(objekty) triedy majú tieto činnosti rovnake(definovane v zdrojovom kóde triedy) ale vykonávat ich mozu len konkrétne objekty • Vykonat činnost na objekte znamená zavolat jeho metodu • deklarácia: ( {, dalsie parametre oddelene čiarkami...}){} definuje ci mozu byt metody volané inštanciami inej triedy moze mat hodnoty private, protected, public alebo sa klučové slovo vynechá zatial(druhe cvičenie použite vždy public) < d ► ► <=►<=► i Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Metody 2 typ výsledku metody ktory metoda "vrati" moze byt niektorý z typov, ktore mozu mat atributy (vid. predchádzajúci slajd) alebo špeciálny nulový návratový typ void - ked metoda len meni stav objektu t.j. meni jeho atributy ale nemá výsledok, ktory by vrátila je vystižný anglický názov činnosti. Pozri konvencie pre pravidla o pomenuvani je ktorykolvek z typov ktore mozu mat aj atributy (predchádzajúci slajd) je anglicky nazov parametru (vid. konvencie) • v tele metody použijeme return ; na ukončenie metody a vrátenie požadovanej hodnoty • metody z návratovým typom void končia automaticky zlozenou zátvorkou n 9 - - ! Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Organizácia súborov a baličky • Zdrojový kod triedy v Jave je typicky uloženy v samostatnom súbore • názov tohto súboru je vždy názov danej triedy (CaSe sensitive) s priponou Java • Pri kompilácii sa pre kazdy súbor s priponou Java vytvori súbor z rovnakým názvom a priponou .class • Triedy su organizovane v balickoch • Baliček je zároveň súborom na disku. Trieda patri do baličku pravé vtedy ked jej Java súbor je v umiestnený v prislusnej zložke • Všetky baličky programu musia byt umiestnene v baličku, ktorý ma názov obrátenej sietovej adresy organizácie pre ktorú program tvorime. Ďalej sa baličky organizujú podlá interných pravidiel organizácie. • Všetky úlohy a pisomky do predmetu PB162 ktoré odovzdáte majú vždy byt v baličku cz.muni.fi.pbl62 □ ^fil|►^-=►^-=► --Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Konvencie • Java je CaSe sensitive - Case a case su dva rozdielne identifikarory • Názvové konvencie: • všetky pismena v názvoch balickov su male - lower case • názov triedy zacina velkým písmenom, kazde nove slovo zacina velkým písmenom ostatne su male • nazvi atribútov a metod zacinaju malým písmenom kazde dalsie slovo v nazve zacina velkým • rovnako aj názvy parametrov metod a lokálnych premenných • Viditelnost atribútov je vždy private • Ku každej triede vždy vyplnime dokumentáciu formou java doc a nezabudneme zadat ©author • Mali by sme vypínat aj dokumentáciu k metódam (pre ucely tohto cvičenia netreba) □ g - = i Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Kompilácia a spustenie z príkazovej riadky • Triedu z prikazoveho riadku skompilujeme prikazom javac cz.muni.fi.pbl62.test.ClassName.java spustenom z adresára v ktorom sa nachádza zložka cz ked cz.muni.fi.pbl62.testje nazov nasko baličku a ClassNameje nazov triedy • po skompilovani všetkých tried mozme spustit prikazom java cz.muni.fi.pbl62.test.ClassName Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Konstruktory • Trieda je šablonou na vytváranie objektov • Životný cyklus objektu: • objekt je vytvorený "zo šablony" volaním konstruktoru • na objekte su volané metody, hodnoty jeho atribútov sa menia... • ak na objekt neexistujú odkazi, objekt zaniká • Konstruktor je špeciálna "metoda" ktoré vytvára novy objekt a moze nastavit inicialny stav objektu • Konstruktor v triede deklarujeme: ( {, dalsie para metre...}){} pre naše ucely zatial public nazov triedy v ktorej konstruktor deklarujeme a ktorej inštanciu vytvára moze byt ako pri atribútoch « n ► < g ► < I ► « 1 ► s ^0,0 Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java Konstruktory 2 • novy objekt potom vytvoríme pomocou new ako keby sme volali metodu (rozdiel je len v prikáže new) • Přiklad: public class Personí private int age; private String name; public Person(int initialAge, String name){ age = initialAge; this.name = name; > > • Potom je mozne vytvořit novy objekt triedy person takto: Person me = new Person(23, "Rastislav Mirek"); •f) Q^O" Rastislav Mirek Cvičenie k PB162 Programování v jazyku Java