Programmiertechnik Klassen

Ähnliche Dokumente
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassen

Programmiertechnik Felder (Arrays)

Programmiertechnik Objektorientierung

Programmiertechnik Klassenvariablen & Instantiierung

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

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

Dr. Monika Meiler. Inhalt

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Programmiertechnik Klassenmethoden

Java - Programmierung - Prozedurale Programmierung 1

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Java Einführung Klassendefinitionen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Java für Anfänger Teil 4: Anweisungen. Programmierkurs Manfred Jackel

Dr. Monika Meiler. Inhalt

Programmiertechnik Kontrollstrukturen

Programmiertechnik Erweiterungen in Java 5

PROGRAMMIERUNG IN JAVA

Klassen als Datenstrukturen

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Programmiertechnik Methoden, Teil 2

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Prüfung Softwareentwicklung I (IB)

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Repetitorium Informatik (Java)

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

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

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

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

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

Einstieg in die Informatik mit Java

Übung Informatik I - Programmierung - Blatt 2

Vorkurs Informatik WiSe 16/17

Programmiertechnik Objektorientierung, Teil 2

Einstieg in die Informatik mit Java

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

Einstieg in die Informatik mit Java

II.1.1. Erste Schritte - 1 -

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Einfache Sortierverfahren in Java, 2. Version

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

Einstieg in die Informatik mit Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Programmiertechnik Ausnahmen

Prüfung Softwareentwicklung I (IB)

Einstieg in die Informatik mit Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Programmiertechnik Übungen zu Klassen & -methoden

Anweisungen zur Ablaufsteuerung

Vorkurs Informatik WiSe 17/18

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Eine kleine Befehlssammlung für Java Teil1

Dr. Monika Meiler. Inhalt

Einstieg in die Informatik mit Java

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Objektorientierte Programmierung und Modellierung

Programmieren I + II Regeln der Code-Formatierung

Einstieg in die Informatik mit Java

Einfache Sortierverfahren in Java, 1. Version

System.out.println("TEXT");

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

2.8 Klassen. Nichtgleichartige Elemente können in Klassen zu einem neuen Typ zusammengefasst werden. Beispiel: Die drei Komponenten

Probeklausur: Programmierung WS04/05

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

II.1.1. Erste Schritte - 1 -

3. Anweisungen und Kontrollstrukturen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Intensivübung zu Algorithmen und Datenstrukturen

Javakurs für Anfänger

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

Tag 7 Repetitorium Informatik (Java)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

1 Klassen und Objekte

Klassen, Vererbung, Benutzereingabe

Objektorientierte Programmierung

Ausgabe:

Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }

Programmieren I + II Regeln der Code-Formatierung

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

Dr. Monika Meiler. Inhalt

2.7 Anweisungen. x+2; // Java-Fehler, korrekt in C oder C++ Wolfgang Effelsberg Java

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Übungsstunde 3. Einführung in die Programmierung

Wenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung Studiengang Medieninformatik

Transkript:

Programmiertechnik Klassen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1

Motivation Aufgabe: Programm zur Adressverwaltung (20 Adressen) Adresse besteht aus: Name Adresse (Straße und Wohnort) Postleitzahl Email Kommentar Oliver Haase Hochschule Konstanz 2

Motivation 1. Ansatz: String[] name = new String[20]; String[] strasse = new String[20]; String[] wohnort = new String[20]; int[] plz = new int[20]; String[] email = new String[20]; String[] kommentar = new String[20]; Oliver Haase Hochschule Konstanz 3

Motivation Eintragen einer neuen Adresse: name[2] = "Klausi Klausenbacher"; strasse[2] = "am Hutzenweg 23"; wohnort[2] = "Musterbach"; plz[2] = 12345; email[2] = "klausen@bacher.de"; kommentar[2] = "Schwippschwager 2. Grades"; Aber: es wäre schön, wenn man alle Daten, die zu einer Adresse gehören, zusammenfassen könnte zu einem Datentyp, anstatt sie auf 6 verschiedene Felder zu verteilen. Klassen! Oliver Haase Hochschule Konstanz 4

Was ist eine Klasse? selbstdefinierter Datentyp geeignet, neue Strukturen zu modellieren Kernkonzept objektorientierter (OO) Programmierung Sammlung von Variablen (Attributen) und Methoden Variablen (und Methoden) einer Klasse heißen Komponenten der Klasse. Konkrete Instanz einer Klasse heißt Objekt. Oliver Haase Hochschule Konstanz 5

Äußere und innere Klassen Klassen können auf zwei Arten definiert werden: äußere Klasse: Die Klasse wird in einer eigenen Datei definiert. Die Datei mit der Definition der Klasse MyClass hat den Namen MyClass.java ( diese Variante wird im folgenden verwendet). innere Klasse: Die Klasse wird innerhalb einer anderen Klasse definiert. Oliver Haase Hochschule Konstanz 6

Klassenbeispiel - Adresse Adresse name: strasse: postleitzahl: wohnort: String email: kommentar: String String int String String graphische Darstellung einer Klasse Klassendiagramm. (Beachte: der untere, leere Teil wird später Methodenbeschreibungen enthalten.) Oliver Haase Hochschule Konstanz 7

Klassendefinition in Java Syntaxregel public class <KlassenName> { // äußere Klasse <VariablenDeklaration> <VariablenDeklaration> } Für jetzt steht der Ausdruck <VariablenDeklaration> für die Deklaration einer öffentlichen Variablen: Syntaxregel public <Typ> <VariablenName>; Oliver Haase Hochschule Konstanz 8

Adressenbeispiel in Java public class Adresse { public String name; public String strasse; public int postleitzahl; public String wohnort; public String email; public String kommentar; } Oliver Haase Hochschule Konstanz 9

Instantiierung (Objekterzeugung) Syntaxregel <InstanzName> = new <KlassenName>(); Beispiel: Adresse myaddress; myaddress = new Adresse(); oder zusammengefasst: Adresse myaddress = new Adresse(); myaddress name strasse postleitzahl wohnort email kommentar Oliver Haase Hochschule Konstanz 10

Komponentenzugriff Syntaxregel <InstanzName>.<KomponentenName>; Beispiel: adresse.wohnort = "Musterbach"; oder auch: System.out.println(adresse.strasse); Oliver Haase Hochschule Konstanz 11

Beispiel Adressbuch public class Adressbuch_v1 { public static void main(string[] args) { // benoetigte Variablen java.util.scanner scanner = new Java.util.Scanner(System.in); Adresse adr = new Adresse(); boolean fertig=false; // Schleifenbeginn while (!fertig) { // Menue System.out.print("1 = Adresseingabe\n" + "2 = Adressausgabe\n" + "3 = Programm beenden\n" + "Ihre Wahl:"); int auswahl = scanner.nextint(); Oliver Haase Hochschule Konstanz 12

Beispiel Adressbuch // Fallunterscheidung switch(auswahl) { case 1: // Adresse eingeben System.out.print("Name:"); adr.name = scanner.next(); System.out.print("Strasse:"); adr.strasse = scanner.next(); System.out.print("PLZ:"); adr.postleitzahl = scanner.nextint(); System.out.print("Wohnort:"); adr.wohnort = scanner.next(); System.out.print("Email:"); adr.email = scanner.next(); System.out.print("Kommentar:"); adr.kommentar = scanner.next(); break; Oliver Haase Hochschule Konstanz 13

Beispiel Adressbuch case 2: // Adresse ausgeben System.out.println("----------------------"); System.out.println(adr.name); System.out.println(adr.strasse); System.out.println(adr.postleitzahl+" "+adr.wohnort); System.out.println("E-Mail: "+adr.email); System.out.println("KOMMENTAR: "+adr.kommentar); System.out.println("----------------------"); break; case 3: // Programm beenden fertig = true; break; default: // Falsche Zahl eingegeben System.out.println("Eingabefehler!"); } } // Schleifenende } // Ende des Hauptprogramms } // Ende des Programms Oliver Haase Hochschule Konstanz 14

Klassen als Referenzdatentypen Beispiel: Adresse adresse1 = new Adresse(); Adresse adresse2; adresse1.name = "Karla Musterfrau"; adresse2 = adresse1; adresse2.name = "John Doe"; System.out.println("Name von Adresse 1: " + adresse1.name); Welche Bildschirmausgabe erwarten Sie? Oliver Haase Hochschule Konstanz 15

Klassen als Referenzdatentypen Adresse adresse1 = new Adresse(); Adresse adresse2; adresse1.name = "Karla Musterfrau"; adresse1 adresse2 name strasse hausnummer postleitzahl wohnort email kommentar Karla Musterfrau Oliver Haase Hochschule Konstanz 16

Klassen als Referenzdatentypen Adresse adresse1 = new Adresse(); Adresse adresse2; adresse1.name = "Karla Musterfrau"; adresse2 = adresse1; adresse2.name = "John Doe"; adresse1 adresse2 name strasse hausnummer postleitzahl wohnort email kommentar Karla John Doe Musterfrau Oliver Haase Hochschule Konstanz 17

Felder von Klassen Aufgabe: Erweitere Adressprogramm von 1 auf mehrere (20) Adressen. Ansatz: Verwende Feld von Adressen. Adresse[] adressen = new Adresse[20]; Der Komponententyp eines Feldes kann auch eine Klasse sein! adressen adressen[0] adressen[1] adressen[2] Beachte: Da die Klasse Adresse ein Referenzdatentyp ist, werden bei der Felderzeugung erst die Referenzen, und nicht die eigentlichen Adress- Objekte erzeugt! adressen[18] adressen[19] Oliver Haase Hochschule Konstanz 18

Felder von Klassen Erzeugung der 20 Adress-Objekte: for (int i = 0; i < adressen.length; i++) { adressen[i] = new Adresse(); } adressen adressen[0] adressen[1] adressen[2] adressen[18] adressen[19] name strasse name postleitzahl strasse name hausnummer strasse wohnort hausnummer postleitzahl name email postleitzahl wohnort strasse name kommentar hausnummer wohnort email strassekommentar hausnummer postleitzahl email postleitzahl wohnort kommentar wohnort email kommentar email kommentar Oliver Haase Hochschule Konstanz 19

erweitertes Adressbuch public class AdressBuch_v2 { public static void main(string[] args) { // Benoetigte Variablen java.util.scanner scanner = new Java.util.Scanner(System.in); boolean fertig = false; Adresse adressen[] = new Adresse[20]; for ( int i = 0; i < adressen.length; i++ ) { adressen[i] = new Adresse(); } Adresse adr = adressen[0]; Oliver Haase Hochschule Konstanz 20

Beispiel Adressbuch // Schleifenbeginn while (!fertig) { // Menue System.out.print("1 = Adresseingabe\n" + "2 = Adressausgabe\n" + "3 = Adressindex wechseln\n" + "4 = Programm beenden\n" + "Ihre Wahl:"); int auswahl = scanner.nextint(); Oliver Haase Hochschule Konstanz 21

Beispiel Adressbuch switch(auswahl) { case 1: // Adresse eingeben System.out.print("Name:"); adr.name = scanner.next(); System.out.print("Strasse:"); adr.strasse = scanner.next(); System.out.print("PLZ:"); adr.postleitzahl = scanner.nextint(); System.out.print("Wohnort:"); adr.wohnort = scanner.next(); System.out.print("Email:"); adr.email = scanner.next(); System.out.print("Kommentar:"); adr.kommentar = scanner.next(); break; Oliver Haase Hochschule Konstanz 22

Beispiel Adressbuch case 2: // Adresse ausgeben System.out.println("---------------------"); System.out.println(adr.name); System.out.println(adr.strasse); System.out.println(adr.postleitzahl+" "+adr.wohnort); System.out.println("E-Mail: "+adr.email); System.out.println("KOMMENTAR: "+adr.kommentar); System.out.println("---------------------"); break; case 3: // Adressindex wechseln int index = GraphicIO.readInteger("Neuer Adressindex:"); adr = adressen[index]; break; case 4: // Programm beenden fertig = true; break; default: // Falsche Zahl eingegeben System.out.println("Eingabefehler!"); } } // Schleifenende } // Ende des Hauptprogramms } // Ende des Programms Oliver Haase Hochschule Konstanz 23

Kopieren Aufgabe: Kopiere Feld von Adressen, adressen, in ein zweites Feld von Adressen, mehradressen: Adresse[] mehradressen = new Adresse[20]; Lösung: (zuerst selbst probieren ): Oliver Haase Hochschule Konstanz 24

Kopieren Aufgabe: Kopiere Feld von Adressen, adressen, in ein zweites Feld von Adressen, mehradressen: Adresse[] mehradressen = new Adresse[20]; Lösung: (zuerst selbst probieren ): Adresse[] mehradressen = new Adresse[adressen.length]; for ( int i = 0; i < mehradressen.length; i++ ) { mehradressen[i] = new Adresse(); mehradressen[i].name = adressen[i].name; mehradressen[i].strasse = adressen[i].strasse; mehradressen[i].postleitzahl = adressen[i].postleitzahl; mehradressen[i].wohnort = adressen[i].wohnort; mehradressen[i].email = adressen[i].email; mehradressen[i].kommentar = adressen[i].kommentar; } Oliver Haase Hochschule Konstanz 25

Vergleich von Objektreferenzen Welche Ausgabe erzeugt folgendes Programm und warum? Adresse adresse1 = new Adresse(); // initialisierung von adresse1 Adresse adresse2 = new Adresse(); adresse2.name = adresse1.name; adresse2.strasse = adresse1.strasse; adresse2.postleitzahl = adresse1.postleitzahl; adresse2.wohnort = adresse1.wohnort; adresse2.email = adresse1.email; adresse2.kommentar = adresse1.kommentar; if ( adresse1 == adresse2 ) { System.out.println("Gleichheit"); } else { System.out.println("Ungleichheit"); } Oliver Haase Hochschule Konstanz 26