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

Ähnliche Dokumente
Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Repetitorium Informatik (Java)

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Methoden und Wrapperklassen

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1)

Einstieg in die Informatik mit Java

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Grundelemente objektorientierter Sprachen (1)

Javakurs für Anfänger

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Tag 7 Repetitorium Informatik (Java)

Interfaces und Vererbung

Programmiertechnik Klassenvariablen & Instantiierung

Abschnitt 6: Klassen, Objekte und Methoden in Java

Klassenvariablen und statische Methoden

Klassenvariablen und statische Methoden

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Abschnitt 10: Klassen, Objekte und Methoden in Java

Einstieg in die Informatik mit Java

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Tag 8 Repetitorium Informatik (Java)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Prof. W. Henrich Seite 1

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Softwareentwicklung I (IB) Methoden. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Philipp Güttler Objektorientierung und komplexe Datentypen

Methoden. (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun. Letzte Änderung: :40. Methoden 1/44

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

11. Java Klassen. Klassen - Technisch. Klassen - Beispiel: Erdbebendaten. Klassen - Konzeptuell

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

Java Datentypen und Variablen

Vorkurs Informatik WiSe 16/17

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

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

Objektorientierung (OO)

14. Java Klassen. Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Praktische Informatik 1

Javakurs für Anfänger

Klassen als Datenstrukturen

3 Objektorientierte Konzepte in Java

Softwareentwicklung II (IB) Methoden. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Vorkurs Informatik WiSe 15/16

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Arrays. Einleitung. Deklarieren einer Array Variablen

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Computeranwendung und Programmierung (CuP)

AuD-Tafelübung T-B5b

Tafelübung 07 Algorithmen und Datenstrukturen

Vorkurs Informatik WiSe 17/18

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

1 Klassen und Objekte

Javakurs 2013 Objektorientierung

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Repetitorium Programmieren I + II

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Intuitive Einführung. Informatik B Objektorientierte Programmierung in Java. Vorlesung 01: Objektorientierte Programmierung (Teil 1)

7. Objektorientierung. Informatik II für Verkehrsingenieure

Klassen mit Instanzmethoden

Implementieren von Klassen

Vorkurs Informatik WiSe 16/17

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

Unveränderliche Klassen

Java Einführung Klassendefinitionen

7. Übung Informatik II - Objektorientierte Programmierung

Enum-Klassen. Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: :36. Enum-Klassen 1/12

Javakurs für Anfänger

Vorkurs Informatik WiSe 17/18

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Modellierung und Programmierung 1

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Softwareentwicklung II (IB) Enum-Klassen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Einstieg in die Informatik mit Java

Praxis der Programmierung

Prozeduren vs. Funktionen

Allgemeines - Prinzipien

Einstieg in die Informatik mit Java

Javakurs für Anfänger

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden.

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Kapitel 06. Klassen und Objekte. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

C++ - Objektorientierte Programmierung Polymorphie

Fragen zur OOP in Java

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Softwareentwicklung I (IB) Methoden

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Transkript:

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

Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive und Referenztypen Methoden Definition Überladen von Methoden Statische Methoden Statische Datenelemente und Konstanten Enumerationen (Enum Typ) 12. Mai 2011 Folie 2 von 28

Klassendefinition Bauplan für komplexe Datentypen Zusammengesetzt aus anderen Datentypen Jede Klasse wird in einer Datei definiert, die gleich heisst wie die Klasse + Endung.java. Beispiel Klasse: Clock -> Datei: Clock.java Datei Clock.java: class Clock { int hour = 0; int minute = 0; int second = 0; Typname Instanzvariablen 12. Mai 2011 Folie 3 von 28

Instanzen von Objekten Erzeugen von Objekten geschieht über den new Operator. Jedes Objekt enthält seine eigene Kopie der Attribute. Zur Instanzierung (Allokierung) wird ein Konstruktor eines Objektes benötig. Clock clock = new Clock(); 12. Mai 2011 Folie 4 von 28

Datentypen Primitive Typen Zahlen (byte, short, int, long, float, double) Boolean (boolean) Zeichen (char) Atomare Einheit Wertsemantik (Variable enthält konkreter Wert) Referenztypen Objekte Arrays Referenzsemantik (Variable enthält Referenz auf Objekt) 12. Mai 2011 Folie 5 von 28

Referenzen Primitive Typen vs. Referenztypen Initialisierung int value = 42; Speicherabbild 42 Clock clock = new Clock(); Overhead Instanzvariablen 0x00000023 0 0 0 Referenz 0x00000023 12. Mai 2011 Folie 6 von 28

Null Referenzen Initialisierung Clock clock = null; Speicherabbild 0x00000000 Vergleich auf Null-Referenz: if(clock == nul) { clock = new Clock(); 12. Mai 2011 Folie 7 von 28

Objektvariablen Elementzugriff auf Objektvariable über Syntax: Zielobjekt.Objektvariable Beispiel: Clock clock = new Clock(); clock.hour = 10; Zielobjekt Objektvariable int t = clock.hour; Nur Zugriffssyntax zeigt Unterschied zwischen Objektvariablen und lokalen Variablen 12. Mai 2011 Folie 8 von 28

Vergleich von Referenztypen Vergleich von Objekten mit == prüft die Identität: True: wenn beide Operanden ein und das selbe Objekt sind False: wenn die Operanden verschiedene Objekte sind Vergleich mit == ignoriert den Inhalt der Objekte Identität aus Sicht der Programmlogik meist wenig interessant. Beispiel: Clock a = new Clock(); Clock b = new Clock(); if(a == b) // false 12. Mai 2011 Folie 9 von 28

Lebensdauer Objektvariablen Lebensdauer Lokale Variablen geschaffen wenn die Definition erreicht wird zerstört wenn der Block der Definition verlassen wird Lebensdauer Objektvariablen geschaffen sobald ein Objekt erzeugt wird zerstört wenn das Objekt nicht mehr erreichbar ist 12. Mai 2011 Folie 10 von 28

Methoden Legen Funktionalität von Objekt fest. Signatur von Methoden bestehend aus: Methodenname Parameter Rückgabetyp Rückgabetyp Methodenname Parameter class Clock { void settime(int hour, int min, int sec) { Parameterliste Typ Variablenname 12. Mai 2011 Folie 11 von 28

Überladen von Methoden Mehrere gleichnamige Methoden innerhalb einer Klasse. Parameterlisten sind unterschiedlich (Methoden haben unterschiedliche Signaturen) Beim Aufruf der Methode erfolgt die Auswahl von der passenden Methode aufgrund der Parameter. 12. Mai 2011 Folie 12 von 28

Überladen von Methoden Methodenaufruf nicht eindeutig Aufruf muss eindeutig auf eine Methode zuweissbar sein. Mögliche Schwierigkeiten: Implizite Typenkonversion bei mehreren Signaturen mit kompatiblen Typen. Null-Referenzen bei Signaturen mit Referenztypen als Parameter. // Überladene Methoden: void set(int d, double e) { void set(double d, int e) { // Methodenaufruf: o.set(1, 1); Implizite Typkonvertierung int -> double 12. Mai 2011 Folie 13 von 28

Konstruktoren Konstruktor dient zur Erzeugung eines neuen Objektes und dessen Initailisierung. Konstruktor hat gleichen Namen wie Klasse. Konstruktor hat keinen Rückgabetyp. Konstruktor kann Parameterlisten haben. Konstruktor ohne Parameter heisst Default-Konstruktor. Wird kein Konstruktor definiert, erstellt der Kompiler den Default-Konstruktor. Konstruktoren können überladen werden. Konstruktor wird mit dem new Operator aufgerufen, gefolgt vom Klassennamen bzw. Konsturktorname. 12. Mai 2011 Folie 14 von 28

Initialisieren von Datenelementen Defaultwerte Datentyp Zahlen 0 Zeichen (Charakter) Boolean Referenztypen Initialwert \u0000 (ASCII NUL) False null Explizite Initialisierung Definition von Datenelementen mit Standartwerten Innerhalb von Konstruktor Werte setzen Initialisierung in Konstruktor überschreibt die bestehenden Werte 12. Mai 2011 Folie 15 von 28

Konstruktor-Verkettung Aufruf von Konstruktor muss erstes Statement sein. Kette von Konstruktor-Aufrufen kann beliebig lange sein. Class Clock { Clock() { this(12, 0, 0); Konstruktor-Verkettung Clock(int hour, int min, int sec) { 12. Mai 2011 Folie 16 von 28

This Referenz This ist implizite Variable mit Referenz auf Objektinstanz. Wird verwendet um Namenskollision aufzulösen Class Clock { int hour; Clock(int hour, int min, int sec) { this.hour = hour; 12. Mai 2011 Folie 17 von 28

Ergebnis-Rückgabe (Rückgabewert) Rückgabe von Ergebnissen aus Methodenaufruf mittels return Anweisung. Jeder mögliche Pfad muss ein return aufweisen. Methoden mit Rückgabetyp void liefern kein Erbenis. Rückgabetyp int countticks() { return ticks; 12. Mai 2011 Folie 18 von 28

Unveränderliche Objekte Datenelemente mit final deklarieren. Datenelement muss entweder bei Deklaration initialisiert werden oder im Konstruktor. Java Datentypen String, Number (Double, Integer, ) sind unveränderlich. 12. Mai 2011 Folie 19 von 28

Datenkapselung Datenelemente vor unerlaubtem Zugriff schützen mit Modifier private. Nur lesender Zugriff wird über getter Methode gewährleistet. Setter Methode kann Wertzuweisung validieren. 12. Mai 2011 Folie 20 von 28

Statische Datenelemente Wird geteilt unter allen Objektinstanzen einer Klasse. Unabhängig von Objektinstanz. Class Clock { static int counter = 0; Clock() { Clock.counter ++; 12. Mai 2011 Folie 21 von 28

Konstanten Existieren nicht in Java Unveränderbare nicht instanzabhängige Variablen. Kombination von static und final Modifiern entspricht Konstante. Class Clock { public static final int HOUERS_PER_DAY = 24;. 12. Mai 2011 Folie 22 von 28

Statische Methoden Methode ohne Zugriff auf Instanzattribute (Datenelemente) Visibiltätsmodifier sind erlaubt. Aufruf gleich wie bei statischen Datenelementen: Clock.getClockCounter(); Main-Methode (Hauptprogramm) ist statisch. Einschränkungen in statischen Methoden: This Referenz nicht anwendbar Instanzattribute (Datenelemente) nicht zugreifbar Instanzmethoden (nicht statisch) nicht zugreifbar 12. Mai 2011 Folie 23 von 28

Statische Methoden Statische Hilfsmethoden werden auch als Utility- Methoden bezeichnet. Sie haben keinen Bezug zu einer Instanz. Klassen, die nur aus statischen Methoden bestehen, werden als Hilfsklassen bzw. Utility-Klassen bezeichnet. Für Hilfsklassen soll das erzeugen von Instanzen unterbunden werden (Privater Konstruktor). 12. Mai 2011 Folie 24 von 28

Enum Spezielle Art von Klassen. Vergleichbar mit einem fixen Set von Konstanten. Anwendung wie statische Datenelemente. Nicht verwechseln mit java.util.enumeration! // Defintion enum Month { January, February, March, December; // Anwendung Month m = Month.March; 12. Mai 2011 Folie 25 von 28

Enum Vordefinierte Methoden Statische Methode valueof(string s): Versucht aus einem String einen Enum zu machen. Statische Methode values(): Gibt alle definierten Werte für eine bestimmte Enumeration zurück. Methode ordinal(): Gibt den Ordinal (Zahlenwert für einen Enum zurück. 12. Mai 2011 Folie 26 von 28

Enum - Erweitern Enumerationen können mit Methoden erweitert werden. Enumerationen können mit Datenelementen erweitert werden. Konstruktoren für Enumeration zur Datenübergabe möglich. enum Month { January(31), February(28), December(31); private int days; Month(int days) { Konstruktor this.days = days; 12. Mai 2011 Folie 27 von 28

Enum Aufgabe Tutorial lesen: http://download.oracle.com/docs/cd/e17409_01/jav ase/tutorial/java/javaoo/enum.html 12. Mai 2011 Folie 28 von 28