enum

Podobné dokumenty
PowerPoint Presentation

midterm2014_1

História

Objektovo orientované programovanie

Microsoft PowerPoint - OOP_prednaska_10.pptx

Tue Oct 3 22:05:51 CEST Začiatky s jazykom C 2.1 Štruktúra programu Štruktúra programu by sa dala jednoducho popísať nasledovnými časťami, kto

DediĊnosť

Funkcionálne programovanie Cvičenie 9 Funkcionálne programovanie v Jave Sergej Chodarev 22. november 2017 Technická Univerzita v Košiciach

Identity Lifecycle Management

Identity Lifecycle Management

PowerPoint Presentation

Identity Lifecycle Management

Microsoft PowerPoint - Prog_p08.ppt

Úroveň strojového kódu procesor Intel Pentium Pamäťový operand Adresovanie pamäte Priama nepriama a indexovaná adresa Práca s jednorozmerným poľom Pra

Výnimky

midterm2019

PowerPoint Presentation

Snímka 1

Konkurentné programovanie

User:Andrej Sedlacek

Microsoft PowerPoint - SLIDES_02DTD.ppt

03_ControlFlow.dvi

Algoritmizácia a programovanie - Príkazy

PowerPoint Presentation

NÁVRH UČEBNÝCH OSNOV PRE 1

CviĊenie z PTS

Algoritmizácia a programovanie - Štruktúrované údajové typy

Rozpis Ladovej plochy Aréna Bago Ice hockey club - 6 Pondelok Rezervácia ladovej plochy 06:00-07:00 Marek Š Tel.

Identity Lifecycle Management

Praktické paralelné programovanie v jazykoch C# 4.0 a C++

Úvod

MO_TČOZ_TLY_2018_2019

ROZBOR ZÁ SÁHOVEJ Č INNOSTI za rok 2016 V roku 2016 vykonali jednotky HaZZ Trnavského kraja spolu 3147 zásahov. Z celkového počtu zásahov bolo 1020 vý

Akreditácia vzdelávacích programov – projekt MVP

Úrad pre dohľad nad zdravotnou starostlivosťou Žellova 2, Bratislava Zoznam číselníkov používaných pre dátové rozhranie CKS pre zber údajov od

ROZBOR ZÁ SÁHOVEJ Č INNOSTI za rok 2018 V roku 2018 vykonali jednotky HaZZ Trnavského kraja spolu 3569 výjazdov. Z celkového počtu zásahov bolo 1006 v

PowerPoint Presentation

Technická dokumentácia Logger modulu Verzia Tabuľka 1. Autori Autor Tomáš Donko Rola

Úvod do mobilného operačného systému ANDROID

Microsoft Word - Priloha_1.docx

Program DOD na centrále v Žiline dňa Žltá školiaca miestnosť utorok Čas Podujatie 8:00 OLYMP 1: Uplatnenie a prepočty odpočítateľnej p

Term. listina návrh 1.xls

Úrad pre dohľad nad zdravotnou starostlivosťou Žellova 2, Bratislava Dátové rozhranie pre spracovanie lekárskych poukazov - očná optika Strana

Úroveň strojového kódu procesor Intel Pentium Úvod Štruktúra procesorov Intel Pentium Základné inštrukcie Vetvenia a cykly Praktické programovanie jed

Multithreading a komunikácia medzi procesmi a threadmi, Časová závislosť, kritická sekcia a vzájomné vylúčenie, súvislosti medzi týmito pojmami Riešen

Architektúra a návrh Zdôvodnenie navrhnutej architektúry Systém si architektonicky môžeme rozdeliť na viacero vrstiev. Najpodstatnejšie je oddelenie z

Relačné a logické bázy dát

Microsoft Word - Vyhodnotenie NÚ tabuľka zimne obdobie docx

iot business hub whitepaper isdd_em_New.pdf

Finančné riaditeľstvo Slovenskej republiky Testovacie scenáre

Photo Album

Snímka 1

Vnútorná reprezentácia údajových typov

Prezentácia programu PowerPoint

C:/Users/benny/Desktop/2018_01/2018_01.sla

Analýza toku dát Ján Šturc Zima 2010 Kompilátory

Podvojné účtovníctvo, fakturácia a sklad Evidencia a zápočet daňovej licencie v DPPO 2018 Od je daňová licencia zrušená. Podľa prechodného us

Vzorové riešenia úlohy 4.1 Bodovanie Úvod do TI 2010 Dôvod prečo veľa z Vás malo málo bodov bolo to, že ste sa nepokúsili svoje tvrdenia dokázať, prič

Aktion.NEXT Novinky vo verzii 1.9

Matematika 2 - cast: Funkcia viac premenných

gis5 prifuk

Princípy tvorby softvéru Programovacie paradigmy

Snímka 1

Paralelné algoritmy, cast c. 3

Informačné technológie

utorok Štátny sviatok písanie prianí k novému roku streda komunikácia sociálne siete, maily štvrtok pracovné stretn

Microsoft Word - Zmeny v dlhodobom majetku.docx

PowerPoint Presentation

Neineárne programovanie zimný semester 2018/19 M. Trnovská, KAMŠ, FMFI UK 1

(\310ervenica pri Sabinove,kostol)

HARMONOGRAM školského roku 2010/2011 na HTF VŠMU

Sprievodný list SofComs.r.o., Priemyselná 1, Liptovský Mikuláš Program basic.sk Verzia ( ) Dátum Autor Ing. J. Malíček

untitled

PowerPoint Presentation

Rozbor

Študijný program: VEREJNÉ ZDRAVOTNÍCTVO Ak. rok 2018/2019 BAKALÁRSKE ŠTÚDIUM externá forma, 1.rok bc štúdia LS Počet študentov: 9 Kód Názov predmetu D

HARMONOGRAM školského roku 2010/2011 na HTF VŠMU

SK01-KA O1 Analýza potrieb Zhrnutie BCIME tím Vyhlásenie: "Podpora Európskej komisie pre výrobu tejto publikácie nepredstavuje súhlas

12Prednaska

Pokyny_Doctorandorum dies

Matej Kendera - PDF, word, lucene, java

Základný cenník Marec 2019 pásmo čas miesto kód + názov Predict Rtg% Ind12-54 pondelok utorok streda štvrtok piatok sobota nedeľa Off Prime 5:00 pred

Bez nadpisu

ŠTK ZsFZ opakovane oznamuje všetkým FO, že VŠETKY podania na komisiu (od 1

SPRAVODAJ Rímskokatolícka farnosť Kráľovnej pokoja Košice Juh 12/ Bratislavská sviečková manifestácia z 25. marca 1988 vstúpila do dejín

Teória pravdepodobnosti Zákony velkých císel

Operačné systémy Prednáška č. 2 Windows 95 Windows 95 má povesť ľahko ovládateľného systému pre užívateľov a ťažkého systému pre programátorov. Začiat

Microsoft Word - Argumentation_presentation.doc

ECDL Syllabus V50 SK-V01

Plavecký klub ORCA SPORT, Muškátová 21, Ivanka pri Dunaji, mobil: , AKTUÁLNA PONUKA PRE OBDOBIE apríl jún /2018

2

REGIONÁLNE VZDELÁVACIE CENTRUM, ZDRUŽENIE OBCÍ, RIMAVSKÁ SOBOTA PONUKA VZDELÁVANIA I. polrok 2018 Vážení predstavitelia samosprávy, vážené dámy a páni

Microsoft Word - 6 Výrazy a vzorce.doc

_praca_nadcas_usmernenie

Príloha č. 1 k USM_UGKK SR_6/2019

Trasa s etapami: Od Tatier k Dunaju na bicykli aj napriek skleróze multiplex Etapa: pondelok , Štrbské Pleso Zuberec, 81,5 km O 10:00

Úvodná prednáška z RaL

Prezentácia programu PowerPoint

Prepis:

Objektovo orientované programovanie (enumeračné typy) 8. prednáška (3. časť) Vladislav Novák FEI STU v Bratislave 4.11.2014 (úprava 10.11. na str. 1, 3, 5)

Enumeračné typy (Vymenované typy) Enumeračný typ je typ ktorý obsahuje fixnú množinu konštánt daného typu (napríklad dni v týždni typu deň). Názov každej konštanty sa podľa konvencie píše veľkými písmenami. Enumeračný typ je vhodné použiť v prípade, keď potrebujeme reprezentovať pevnú množinu konštánt (známu v čase kompilácie, keď predpokladáme že sa nebude meniť napr. dni v týždni). Enumeračný typ sa definuje kľúčovým slovom enum. jednoduchá definícia enumeračného typu: PONDELOK, UTOROK, STREDA, STVRTOK, PIATOK, SOBOTA, NEDELA Enumeračný typ Den definuje zoznam enumeračných konštánt (PONDELOK,..., NEDELA). Podľa zoznamu enumeračných konštánt kompilátor automatický vytvorí inštancie typu Den. Nie je možné vytvoriť ďalšie inštancie typu Den. použitie enumeračného typu: public class PouzitieEnum { private static void vytlacinfo(den den) { //vo switch s enumeračným typom v častiach case nepíšeme typ (napr.: Den.PONDELOK) switch(den) { case PONDELOK: case UTOROK: case STREDA: case STVRTOK: case PIATOK: System.out.println("den " + den + " je pracovny"); break; case SOBOTA: case NEDELA: System.out.println("den " + den + " je vikendovy"); break; public static void main(string[] args){ Den dnes = Den.PONDELOK; System.out.println("dnes je " + dnes); //dnes.tostring() if( dnes == Den.PONDELOK ) { System.out.println("dnes je pondelok"); else { System.out.println("dnes nie je pondelok"); vytlacinfo(dnes); vytlacinfo(den.sobota); 1

dnes je PONDELOK dnes je pondelok den PONDELOK je pracovny den SOBOTA je vikendovy Deklarácia enum definuje triedu, nazývanú enumeračný typ. Jej telo môže obsahovať premenné a metódy. Niektoré sú kompilátorom pridané automaticky. Enumeračný typ implicitne obsahuje členské premenné, deklarované ako public static final, pomenované podľa deklarovaných enumeračných konštánt. Každá takáto členská premenná je inicializovaná na enumeračnú konštantu, ktorá s ňou korešponduje. Príkladom automaticky doplnenej metódy je napríklad statická metóda values, ktorá vracia pole obsahujúce všetky enumeračné konštanty daného typu, v takom poradí v ktorom boli definované. Ďalším príkladom je automaticky doplnená metóda ordinal, ktorá vráti číslo vyjadrujúce poradie enumeračnej konštanty v zozname. Prvá enumeračná konštanta má číslo 0. PONDELOK, UTOROK, STREDA, STVRTOK, PIATOK, SOBOTA, NEDELA; for (Den den : Den.values()) { System.out.println(den + " " + den.ordinal()); PONDELOK 0 UTOROK 1 STREDA 2 STVRTOK 3 PIATOK 4 SOBOTA 5 NEDELA 6 2

Metóda compareto slúži na porovnávanie poradia enumeračných konštánt. Vráti záporne celé číslo, nulu, alebo kladné celé číslo, podľa výsledku porovnania poradia enumeračných konštánt. Je definovaná rozhraním Comparable<T>, ktoré enumeračné typy implementujú. PONDELOK, UTOROK, STREDA, STVRTOK, PIATOK, SOBOTA, NEDELA; System.out.println(Den.PONDELOK.compareTo(Den.UTOROK)); // -1 // (PONDELOK < UTOROK) System.out.println(Den.UTOROK.compareTo(Den.PONDELOK)); // 1 // (UTOROK > PONDELOK) System.out.println(Den.PONDELOK.compareTo(Den.PONDELOK));// 0 // (PONDELOK = PONDELOK) -1 1 0 Všetky enumeračné typy implicitne dedia od triedy java.lang.enum. Pretože Java nepodporuje viacnásobnú dedičnosť, enumeračný typ nemôže dediť od inej triedy. Enumeračný typ môže okrem zoznamu enumeračných konštánt obsahovať atribúty a metódy. Atribúty a metódy musia byť uvedené až za zoznamom enumeračných konštánt. Ak sú v enumeračnom type uvedené atribúty a metódy, musí byť zoznam enumeračných konštánt ukončený bodkočiarkou. Konštruktory enumeračného typu musia byť typu package-private, alebo private. Samotné enumeračné konštanty uvedené na začiatku definície enumeračného typu sa vytvárajú automaticky (s využitím konštruktora). Konštruktor nemožno vyvolať ručne. //zoznam enumeračných konštánt je uvedený ako prvý PONDELOK, UTOROK, STREDA, STVRTOK, PIATOK, SOBOTA, NEDELA; //za zoznamom enumeračných konštant môžu nasledovať ďalšie členy private int premenna; public void metoda () {... Den() {... //konstruktor 3

PONDELOK("pondelok", true), UTOROK ("utorok", true), STREDA ("streda", true), STVRTOK ("stvrtok", true), PIATOK ("piatok", true), SOBOTA ("sobota", false), NEDELA ("nedela", false); private final String nazov; private final boolean beznepracovny; private final String skratka; Den(String nazov, boolean pracovny) { this.nazov = nazov; this.beznepracovny = pracovny; this.skratka = nazov.substring(0, 2); public int dajporadie(){ return ordinal() + 1;//ordinal() vráti por. č. enum konštanty public String dajnazov(){ return nazov; public boolean dajpracovnost(){ return beznepracovny; public String dajskratku(){ return skratka; for( Den den : Den.values() ) { System.out.format("%d: %-8s (%s) %s%n", den.dajporadie(), den.dajnazov(), den.dajskratku(), (den.dajpracovnost()? "pracovny" : "volny") ); 1: pondelok (po) pracovny 2: utorok (ut) pracovny 3: streda (st) pracovny 4: stvrtok (st) pracovny 5: piatok (pi) pracovny 6: sobota (so) volny 7: nedela (ne) volny 4

Nasledujúci kód približne naznačuje spôsob automatického doplnenia členských premenných podľa zoznamu enumeračných konštánt (v predchádzajúcom príklade). Kompilátor pridáva aj ďalšie parametre pri volaní konštruktora obsahujúce názov a poradie. Avšak každý kompilátor môže tieto parametre pridať iným spôsobom. public static final Den PONDELOK = new Den("pondelok",true, "PONDELOK",0); public static final Den UTOROK = new Den("utorok",true, "UTOROK", 1); public static final Den STREDA = new Den("streda",true, "STREDA", 2); public static final Den STVRTOK = new Den("stvrtok",true, "STVRTOK", 3); public static final Den PIATOK = new Den("piatok",true, "PIATOK", 4); public static final Den SOBOTA = new Den("sobota",false,"SOBOTA", 5); public static final Den NEDELA = new Den("nedela",false,"NEDELA", 6); // ďalšie členy Enumeračný typ môže deklarovať abstraktné metódy, ktoré musia enumeračné konštanty implementovať. Príklad: public enum Funkcia { PLUS ('+'){ //parameter konštruktora @Override public int vyhodnot(int a, int b) { return a + b;, MINUS ('-'){ //parameter konštruktora @Override public int vyhodnot(int a, int b) { return a - b; ; private char znak; Funkcia(char znak) { this.znak = znak; //enumeračné konštanty musia definovať implementaciu abstraktnej metódy public abstract int vyhodnot(int a, int b); @Override public String tostring() { //príklad prekrytia metódy tostring return "" + znak; int a = 10; int b = 5; Funkcia funkcia = Funkcia.PLUS; System.out.println(a+" "+funkcia+" "+b+" = "+funkcia.vyhodnot(a,b)); funkcia = Funkcia.MINUS; System.out.println(a+" "+funkcia+" "+b+" = "+funkcia.vyhodnot(a,b)); 10 + 5 = 15 10-5 = 5 5