Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Aufzählungstypen

Ähnliche Dokumente
Enum Aufzählungstypen in Java

Java Einführung Klassendefinitionen

Repetitorium Informatik (Java)

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

5.5.8 Öffentliche und private Eigenschaften

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Übungen zu Vererbung & Polymorphismus

RO-Tutorien 3 / 6 / 12

1 Polymorphie (Vielgestaltigkeit)

Einstieg in die Informatik mit Java

Die Programmiersprache C Eine Einführung

Programmiertechnik Klassenmethoden

Hans Scheitter GmbH & Co.KG

Vererbung. Martin Wirsing. Ziele. Vererbung

Tutorium Rechnerorganisation

Probeklausur: Programmierung WS04/05

Welche Informatik-Kenntnisse bringen Sie mit?

Objektorientierte Programmierung OOP Programmieren mit Java

Enumerations und innere Klassen

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Montag, 14.3 Dienstag, 15.3 Mittwoch, 16.3 Donnerstag, 17.3 Freitag, 18.3 Samstag, 19.3 Sonntag, Programmiertes Entwerfen 1 KG1 Götte

Abonnieren Sie die kostenlose epaper-zeitung unter

5. Tutorium zu Programmieren

Einstieg in die Informatik mit Java

Klassen mit Instanzmethoden

Theorie zu Übung 8 Implementierung in Java

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Probeklausur: Programmierung WS04/05

12 Klassen in Java Instanz- und Klassenbestandteile

5.4 Klassen und Objekte

Einführung in die Java- Programmierung

AuD-Tafelübung T-B5b

2. Datentypen und Deklarationen

Semestralklausur Einführung in die Programmierung, WS 2005/06, Seite 1/6 Name, Vorname, Matrikelnummer: Gruppe A

Datenbankanwendungsprogrammierung Crashkurs Java

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Abend 7 Vererbung und Polymorphie, Abstrakte Klassen

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Faustregeln zu Zusicherungen

Klassenbeziehungen & Vererbung

3. Anweisungen und Kontrollstrukturen

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Java: Der Einstieg. Algorithmen und Datenstrukturen II 1

Java I Vorlesung Vererbung und Sichtbarkeit

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

PROGRAMMIERUNG IN JAVA

Einstieg in die Informatik mit Java

Einführung in die. objektorientierte Programmierung

JAVA - Methoden

Java Einführung Methoden. Kapitel 6

Integer Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen

Datentypen: Enum, Array, Struct, Union

Datum Wochen Band DVD Band eingelegt Protokoll kontr. Recovery kontr. Tag Nr. RW Sign. Sign. Sign.

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Programmieren I. Kapitel 8. Vererbung

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Überschreiben von Methoden

Vererbung & Schnittstellen in C#

Programmieren I + II Regeln der Code-Formatierung

Einführung in die Programmierung

3 Objektorientierte Konzepte in Java

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Einführung in die C-Programmierung

Programmierung mit C Zeiger

Java Einführung Abstrakte Klassen und Interfaces

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Klassendefinitionen verstehen

JAVA lernen mit GREENFOOT

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Java Einführung Methoden in Klassen

Einführung in die Programmierung

Java I Vorlesung Objektorientiertes Programmieren

Innere Klassen in Java

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Javakurs 2013 Objektorientierung

Vorlesung Informatik 2

Interfaces und Vererbung

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Die Algorithmenbeschreibungssprache Jana

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Objekt-Orientierte Programmierung

Moderne C-Programmierung

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Schleifen in C/C++/Java

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Theorieplan Januar 2015

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Transkript:

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Aufzählungstypen

Was sind Aufzählungstypen? Aufzähltypen sind: selbstdefinierte Datentypen definiert über die explizite Aufzählung ihrer möglichen Werte Aufzählungstypen nennt man auch: Enumerationen oder kurz: Enums 2/16

Was sind Aufzählungstypen? Beispiele: Himmelsrichtung = { Nord, Ost, Sued, West } Wochentag = { Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag } Eissorte = { Himbeere, Vanille, Schokolade, Pistazie } Filmgenre = { Komödie, Drama, Zeichentrick, Reality, ScienceFiction } Wie man sieht, werden in Aufzähltypen artverwandte Dinge zusammengefasst. 3/16

Was sind Aufzählungstypen? In einer Sprache, die Aufzähltypen unterstützt, kann man eigene Aufzähltypen definieren (etwa wie auf der vorherigen Folie); Variablen eines Aufzähltyps deklarieren: Eissorte meineis; Werte an diese Variablen zuweisen: meineis = Himbeere; 4/16

Was sind Aufzählungstypen? Aufzähltypen in Switch-Anweisungen verwenden: switch ( meineis ) { case Himbeere: System.out.println("Himbeere"); break; case Vanille: System.out.println("Vanille"); break; } 5/16

Was sind Aufzählungstypen? Aufzählungstypen haben eine Reihe von Vorteilen: Gut lesbar (sprechender Name statt z. B. Nummer) Vermeiden Fehler durch Typsicherheit (ungültige Werte lehnt bereits der Compiler ab) Wie lässt sich so etwas umsetzen? Verschiedene Implementierungsansätze Aufzählungstypen in Java 6/16

Aufzählungstypen in Java Aufzählungstypen könnten in Java durch geeignete Klassendefinitionen typsicher simuliert werden. (hier nicht im Detail behandelt) Der Aufwand dafür ist allerdings relativ hoch, das Ergebnis wirkt recht komplex. Das Schema zur Simulation von "Aufzählungstypklassen" ist immer dasselbe. Dies sind gute Gründe, Aufzählungstypen direkt in der Sprache zu unterstützen! 7/16

Aufzählungstypen in Java Bis Java 4 nicht unterstützt, wurden beim ursprünglichen Sprachentwurf als unnötig betrachtet. Mit Java 5 wurden Aufzählungstypen nachträglich mit in den Sprachumfang aufgenommen. Bemerkung: In frühen Java-Varianten (vor Java 5) kann das Verhalten von Aufzählungstypen durch geeignete Klassendefinitionen simuliert werden ( Variante nach James Gosling ) 8/16

Java enum Java unterstützt ab Version 5 Aufzähltypen als spezielle Klassen: Syntaxregel public enum <EnumName> { <Wert1>, <Wert2>,, <Wertn>; } Beispiel: public enum Eissorte { Himbeere, Vanille, Schoko, Pistazie; } 9/16

Java enum Intern wandelt Java eine enum-definition um in eine "normale" Klasse jede enum-konstante ist eigentlich ein Objekt. Jedes dieser Objekte hat die Methoden: tostring(): liefert den Namen der Konstante als Zeichenkette. equals(object o): true, falls die Enum-Konstante und das Objekt o übereinstimmen. ordinal() : liefert die Ordinalzahl der Konstante 10/16

Java enum Jede enum-klasse MeineAufzaehlung enthält eine Klassenmethode values(), die ein Feld zurückliefert, das alle Werte enthält: public static MeineAufzaehlung[] values(); Verwendung: Was ergibt der folgende Ausdruck? Eissorte lieblingssorte = Eissorte.values() [Eissorte.Vanille.ordinal()]; 11/16

Java enum - Verwendung Verwendung: in der Variablendeklaration und Wertzuweisung: Eissorte meineis = Eissorte.Himbeere; Bei der Ausgabe: System.out.println("Mein Eis Eis hat hat den den Geschmack " + meineis); Konsole Mein Eis hat den Geschmack Himbeere 12/16

Java enum - Verwendung Enum in Switch-Anweisung: Enum-Werte können als Case-Labels verwendet werden. Java ersetzt sie intern durch ihre Ordinalwerte: switch switch ( meineis meineis ) { case case Himbeere: System.out.println("lecker!"); break; break; case case Vanille: System.out.println("Geschmackssache"); break; break; case case Schoko: Schoko: System.out.println("Wem's schmeckt.."); break; break; case case Pistazie: System.out.println("Schmeckt nussig!"); break; break; default: default: System.out.println("Gibt's eine eine neue neue Sorte?"); break; break; } 13/16

Java enum - Erweiterung Für Enums können Instanzvariablen und eigene Konstruktoren definiert werden: public enum Eissorte { Himbeere(80), Vanille(90), Schoko(120), Pistazie(75); } private int kalorien; private Eissorte(int kalorien) { this.kalorien = kalorien; } Beachte: Selbst wenn der Konstruktor als public deklariert wird, können keine zusätzlichen Instanzen erzeugt werden! 14/16

Java enum - Erweiterung Für Enums können Instanzmethoden definiert werden: public enum Eissorte { Himbeere(80), Vanille(90), Schoko(120), Pistazie(75); private int kalorien; private Eissorte(int kalorien) { this.kalorien = kalorien; } } public getkalorien() { return kalorien; } 15/16

Java enum - Erweiterung Verwendung: Eissorte meineis = Eissorte.Himbeere; System.out.println("Mein Eis Eis hat hat den den Geschmack " + meineis + " und " + meineis.getkalorien() + " Kalorien."); Konsole Mein Eis hat den Geschmack Himbeere und 80 Kalorien. 16/16