<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://mis.martin-simunek.cz/skins/common/feed.css?301"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://mis.martin-simunek.cz/index.php?action=history&amp;feed=atom&amp;title=Java%3A_Enum</id>
		<title>Java: Enum - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://mis.martin-simunek.cz/index.php?action=history&amp;feed=atom&amp;title=Java%3A_Enum"/>
		<link rel="alternate" type="text/html" href="http://mis.martin-simunek.cz/index.php?title=Java:_Enum&amp;action=history"/>
		<updated>2026-04-19T02:23:27Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.17.0</generator>

	<entry>
		<id>http://mis.martin-simunek.cz/index.php?title=Java:_Enum&amp;diff=3428&amp;oldid=prev</id>
		<title>Spravce: Vytvoření stránky</title>
		<link rel="alternate" type="text/html" href="http://mis.martin-simunek.cz/index.php?title=Java:_Enum&amp;diff=3428&amp;oldid=prev"/>
				<updated>2018-09-20T10:06:19Z</updated>
		
		<summary type="html">&lt;p&gt;Vytvoření stránky&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== K&amp;amp;nbsp;čemu je? ==&lt;br /&gt;
* Výčtový typ slouží zejména v situacích, kdy některý datový typ může nabývat jenom malý počet předem známých hodnot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;Priklad&amp;quot;&amp;gt;&lt;br /&gt;
; Příklady využití výčtového typu:&lt;br /&gt;
* Dny v týdnu&lt;br /&gt;
* Pohlaví&lt;br /&gt;
* Typy platby (zde zvážíme, zda radši nepoužít samostatnou třídu s podtřídami)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Deklarace výčtového typu ==&lt;br /&gt;
* Výčtový typ v Javě se vytváří podobně jako třída.&lt;br /&gt;
&amp;lt;div class=&amp;quot;Priklad&amp;quot;&amp;gt;&lt;br /&gt;
 public enum Pohlavi {&lt;br /&gt;
     Muz, Zena, Neuvedeno&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvoření proměnné ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;Priklad&amp;quot;&amp;gt;&lt;br /&gt;
 Pohlavi pohlavi = Pohlavi.Muz;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Použití výčtového typu ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;Priklad&amp;quot;&amp;gt;&lt;br /&gt;
 switch (pohlavi) {&lt;br /&gt;
     case Pohlavi.Muz: &lt;br /&gt;
         ''...''&lt;br /&gt;
         break;&lt;br /&gt;
     case Pohlavi.Zena:&lt;br /&gt;
         ''...''&lt;br /&gt;
         break;&lt;br /&gt;
     case Pohlavi.Neuvedeno:&lt;br /&gt;
         ''...''&lt;br /&gt;
         break;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 if (pohlavi == Pohlavi.Muz) {...}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Šlo by situaci řešit jinak? ==&lt;br /&gt;
&lt;br /&gt;
=== Samostatná třída ===&lt;br /&gt;
* Jinou variantou řešení by bylo založit samostatnou třídu a vytvořit pevně definovaný počet instancí.&lt;br /&gt;
* Toto řešení vyžaduje více psaní a&amp;amp;nbsp;větší zkušenosti s&amp;amp;nbsp;objektovým programováním.&lt;br /&gt;
* Toto řešení je vhodnější, pokud se jednotlivé varianty výrazně liší ve svém chování. Umožní nám vytvořit podtřídy, které si implementují vlastní metody.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;Priklad&amp;quot;&amp;gt;&lt;br /&gt;
Složitější deklarace:&lt;br /&gt;
 public abstract class TypPlatby {&lt;br /&gt;
     static TypPlatby Hotove = new TypPlatbyHotove();&lt;br /&gt;
     static TypPlatby NaUcet = new TypPlatbyNaUcet();&lt;br /&gt;
     &lt;br /&gt;
     private TypPlatby() {} ''// Aby si nikdo nemohl svévolně vytvářet nové typy platby''&lt;br /&gt;
 &lt;br /&gt;
     public abstract void provedPlatbu();&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 public class TypPlatbyHotove extends TypPlatby {&lt;br /&gt;
     public void provedPlatbu() {&lt;br /&gt;
         ''...''&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 public class TypPlatbyNaUcet extends TypPlatby {&lt;br /&gt;
     public void provedPlatbu() {&lt;br /&gt;
         ''...''&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Obdobné vytvoření proměnné:&lt;br /&gt;
 TypPlatby typPlatby = TypPlatby.Hotove;&lt;br /&gt;
&lt;br /&gt;
A jednoduché použití:&lt;br /&gt;
 typPlatby.provedPlatbu();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Vidíme, že zápis vyžaduje více řádků kódu, ale použití jednotlivých podtříd úplně odstraní nutnost používat větvení (&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; nebo &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt;). Jednotlivé podtřídy jsou proto mnohem přehlednější a řeší vždy jen jeden konkrétní typ platby. &lt;br /&gt;
* Použití bude také snadnější. Srovnejte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;Priklad&amp;quot;&amp;gt;&lt;br /&gt;
Jednoduchoučká deklarace&lt;br /&gt;
 public enum TypPlatby { Hotove, NaUcet };  &lt;br /&gt;
&lt;br /&gt;
Obdobné vytvoření proměnné:&lt;br /&gt;
 TypPlatby typPlatby = TypPlatby.Hotove;&lt;br /&gt;
&lt;br /&gt;
Ale při každém použití pak velký nepřehledný kód (zvláště pokud bude variant placení více a kód platby delší):&lt;br /&gt;
 switch (typPlatby) {&lt;br /&gt;
     case TypPlatby.Hotove:&lt;br /&gt;
         ''...''&lt;br /&gt;
         break;&lt;br /&gt;
     case TypPlatby.NaUcet:&lt;br /&gt;
         ''...''&lt;br /&gt;
         break;&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Náhrada typem &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; nebo &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; ===&lt;br /&gt;
* Někoho by možná napadlo použít typ &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; a&amp;amp;nbsp;každé hodnotě přiřadit číselnou konstantu.&lt;br /&gt;
* Tomuto řešení se ale raději vyhneme:&lt;br /&gt;
*# svádí zavést do kódu konstanty, jejich význam zná pouze autor,&lt;br /&gt;
*# případné překlepy či špatně zadané hodnoty se nezjistí v&amp;amp;nbsp;době překladu, ale až po spuštění aplikace.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zdroje ==&lt;br /&gt;
* [https://www.algoritmy.net/article/30320/Enum-19 Algoritmy.net &amp;amp;rarr; Java: Enum]&lt;/div&gt;</summary>
		<author><name>Spravce</name></author>	</entry>

	</feed>