Programování v jazyce Java PB162 Cvičenie 8 Trieda Object • Metódy triedy Object • Všetky objekty v jave sú inštanciami triedy Object Equals & hascode • Equals – Relácia ekvivalencie – ‘==‘ vs. equals – Tvorba equals • Pre porovnávanie primitívnych typov používame ‘==‘ • Pre porovnávanie objektov používame equals definovaný v triede týchto objektov Equals & hashcode • Využitie hashcode • Equals vs. hashcode Equals & hashcode • Využitie hashcode • Equals vs. Hashcode – Majme nejake objekty car1 a car2 – car1.equals(car2) => car1.hashcode() == car2.hashcode() • Tvorba hashcode – Snažíme sa dosiahnuť riedkeho pridelenia jednotlivých hashov medzi objekty Equals & hashcode • hashcode – príklad – Majme triedu Person s atribútmi age typu int a name a surname typu String – public int hashcode(){ int result = 7*age; result += 11*name.hashcode(); result += 13*surname.hashcode(); } Equals & hashcode • Ako by mohla vypadať metóda equals pre triedu person? Equals & hashcode • Ako by mohla vypadať metóda equals pre triedu person? – public boolean equals(Object o){ if (!(o instanceof Person)){ return false; } Person person = (Person) o; return age == person.age && name.equals(person.name) && surname.equals(person.surname); } Výnimky • Na čo používame výnimky? Výnimky • Na čo používame výnimky? – Na ošetrovanie a spracovávanie chybových a nežiadúcich udalostí pri vykonávaní programu • Na čo nepoužívame výnimky? Výnimky • Na čo používame výnimky? – Na ošetrovanie a spracovávanie chybových a nežiadúcich udalostí pri vykonávaní programu • Na čo nepoužívame výnimky? – Na to, na čo sa používajú riadiace štrúktury, či už sú to vetviace štrúktúry alebo cykly Výnimky • Inštanciou akej triedy je v Jave každá výnimka? • Aké poznáme v Jave výnimky Výnimky • Inštanciou akej triedy je v Jave každá výnimka? – java.lang.Exception • Aké poznáme v Jave výnimky – Ošetrované a neošetrované(checked and unchecked) – Ako ich rozlišujeme? Výnimky - príkazy • throw • throws • try/catch/finally Úprava rádia • Doplňte metódy equals a hashcode do každej triedy • Doplňte vyhadzovanie vhodných neošetrovaných výnimok, tak kde sa to hodí • Pridajte do diaľkového ovladánia informáciu o stave batérie v percentách jej nabitia, pri každom použití diaľkového ovládania sa baterka vybije o jedno percento • Upravte diaľkové ovládanie tak, aby v stave vybitej batérie bola vyhodená výnimka DischargedBatteryException