Programmieren I. Strategie zum Entwurf von Klassen. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Ähnliche Dokumente
Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java)

Javakurs 2013 Objektorientierung

Einstieg in die Informatik mit Java

7. Übung Informatik II - Objektorientierte Programmierung

1 Klassen und Objekte

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

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

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Implementieren von Klassen

Javakurs für Anfänger

5.5.8 Öffentliche und private Eigenschaften

Fragen zur OOP in Java

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

Programmieren in Java

Vorkurs C++ Programmierung

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Javakurs für Anfänger

Algorithmen und Datenstrukturen 06

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

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

Programmieren I + II Regeln der Code-Formatierung

Programmieren in Java

Prof. W. Henrich Seite 1

3 Objektorientierte Konzepte in Java

3.3 Konstruktoren und Destruktoren

Objekt-Orientierte Programmierung

Java: Vererbung. Teil 3: super()

Java Einführung Klassendefinitionen

Programmieren I + II Regeln der Code-Formatierung

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Einstieg in die Informatik mit Java

Abschnitt 6: Klassen, Objekte und Methoden in Java

Vererbung & Schnittstellen in C#

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Javakurs für Anfänger

Javakurs für Anfänger

Programmieren in Java

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

HSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage

Programmiertechnik Objektorientierung

3 Objektorientierte Konzepte in Java

Programmieren in Java

Ausgabe: :00 Abgabe: :00. Sie müssen bei Ihren Lösungen eine maximale Zeilenbreite von 120 Zeichen einhalten.

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

Programmieren I. Kapitel 10. Spezielle Features

3. Exkurs in weitere Arten der Programmierung

Klausur Grundlagen der Programmierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einführung in die Programmierung für NF MI. Übung 07

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

Statische und Nichtstatische Methoden Properties/ Eigenschaften

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

Objektorientierte Programmierung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Java: Geheimnisprinzip, Kapselung; Getter und Setter.

Software Engineering Klassendiagramme Einführung

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Informatik II. Woche 13, Giuseppe Accaputo

Objekt-Orientierte Programmierung

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

Einstieg in die Informatik mit Java

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

AuD-Tafelübung T-B5b

Objektorientierte Programmierung Studiengang Medieninformatik

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

C++ - Objektorientierte Programmierung Konstante und statische Elemente

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

Einstieg in die Informatik mit Java

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

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.

Objektorientierung. Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik

Klassen als Datenstrukturen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Aufbau von Klassen. class punkt {...

Javakurs für Anfänger

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Einführung in die Programmierung mit Java. Hörsaalübung

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

Einführung in die Informatik

C# im Vergleich zu Java

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

Konstruktoren, Packages und Scopes

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

Javakurs für Anfänger

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Objektorientes Design & Programm

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 492

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Einstieg in die Informatik mit Java

::Zweck. Sicherstellung, dass nur eine Instanz einer bestimmten Klasse existiert

Transkript:

Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Objektorientierte Sichtweise: Mit welchen Objekten habe ich es in einem Programm zu tun? Suche nach gemeinsamen Eigenschaften und Methoden Davon ausgehend Entwurf der Klassen mit ihren Attributen und Methoden Empfehlenswert: Schematische Übersicht 3 / 22 Handout S. 1

Beispiele Kontenverwaltung Klasse: Konto Attribute: Attribut Inhaber Adresse Kontostand Kreditrahmen Typ 4 / 22 Lagerverwaltung Klasse: Artikel Attribute Attribut Beschreibung EAN (Barcode) Bestand Einkaufspreis Verkaufspreis Lagerort Typ int 5 / 22 Kundenverwaltung Klasse: Kunde Attribute: Attribut Name Adresse Zahlungsart Kredit Rabatt Kundenklasse Typ enum enum 6 / 22 Handout S. 2

Bibliothek Klasse: Buch Attribute: Attribut Autor Titel ISBN Verlag Erscheinungsjahr Auflage ausgeliehen Ausleiher Typ int int boolean 7 / 22 Grundgerüst der Klasse Deklaration der Klasse erfolgt in der Datei KlassenName.java. Grundgerüst: p u b l i c c l a s s Klassenname { Konvention: Namen von Klassen beginnen immer mit Großbuchstaben (wortweise, z. B. MeineKlasse). 8 / 22 Hinzufügen der Attribute Anschließend werden die Attribute deklariert. Faustregel: Attribute sind in der Regel privat: p u b l i c c l a s s Klassenname { p r i v a t e typ a t t r i b u t ; Konvention: Attribute und Methoden beginnen mit Kleinbuchstaben. Ausnahme: öffentliche konstante Attribute (public nal static ) komplett in Großbuchstaben. 9 / 22 Handout S. 3

Der Konstruktor Konstruktoren heißen genauso wie die Klasse und haben keinen Rückgabewert. Wird kein Konstruktor definiert, existiert implizit ein Standardkonstruktor: c l a s s Klassenname { p u b l i c Klassenname ( ) { In der Regel wird man eigene Konstruktoren definieren. Falls benötigt, muss dann auch der Standardkonstruktor (d. h. ohne Parameter) definiert werden. Konstruktoren sind in aller Regel public. 10 / 22 Zugriffsmethoden (getter/setter) Ein Teil der Methoden ist notwendig, um auf private Attribute lesend (getter) oder schreibend (setter) zuzugreifen. Getter und Setter tragen die Namen getattributname bzw. setattributname. Ausnahme für Attribute vom Typ boolean: Getter heißt isattributname. Grundüberlegung: Auf welche Attribute ist ein direkter Lese- oder Schreibzugriff nötig? Faustregel: Zugriffsmethoden werden in der Regel als public definiert. 11 / 22 Weitere Methoden Die problemspezifische Funktionaliät steckt in weiteren Methoden. Grundfrage: Welche Fähigkeiten haben alle Objekte des gleichen Typs? Die Methoden können sowohl private als auch public sein. Die öffentlichen Methoden repräsentieren nach außen die Schnittstellen für die Kommunikation mit den Objekten. Neben dem Grunddesign der Klasse liegt hier die eigentliche Kreativität beim Programmdesign. 12 / 22 Handout S. 4

Beispiel Klasse Konto Methoden Methode einzahlung auszahlung ueberweisung lastschrift 13 / 22 Klasse GeldAutomat Methoden Methode Art Geld ausgeben privat Kontostand ändern privat Auszahlung öffentlich benutzt intern die Methoden»Geld ausgeben«und»kontostand ändern«14 / 22 Klasse Buch Buch autor titel ausleiher + getautor() + gettitel() +boolean isausgeliehen() + getausleiher() +boolean ausleihe(string) +void rueckgabe() Aus Gründen der Übersichtlichkeit fehlen Attribute wie isbn, verlag, 15 / 22 Handout S. 5

Code der Klasse Buch p u b l i c c l a s s Buch { p r i v a t e S t r i n g a u t o r ; p r i v a t e S t r i n g t i t e l ; p r i v a t e S t r i n g a u s l e i h e r ; p u b l i c Buch ( S t r i n g autor, S t r i n g t i t e l ) { t h i s. a u t o r = a u t o r ; t h i s. t i t e l = t i t e l ; t h i s. a u s l e i h e r = n u l l ; p u b l i c S t r i n g g e t A u s l e i h e r ( ) { r e t u r n a u s l e i h e r ; p u b l i c S t r i n g getautor ( ) { r e t u r n a u t o r ; p u b l i c S t r i n g g e t T i t e l ( ) { r e t u r n t i t e l ; 16 / 22 Code der Klasse Buch (Forts.) p u b l i c b o o l e a n i s A u s g e l i e h e n ( ) { r e t u r n a u s l e i h e r!= n u l l ; p u b l i c v o i d a u s l e i h e ( S t r i n g a u s l e i h e r ) { t h i s. a u s l e i h e r = a u s l e i h e r ; p u b l i c v o i d rueckgabe ( ) { a u s l e i h e r = n u l l ; p u b l i c S t r i n g t o S t r i n g ( ) { S t r i n g r e s u l t = t h i s. a u t o r+" : "+ t i t e l ; i f ( i s A u s g e l i e h e n ( ) ) { r e s u l t+=" ( a u s g e l i e h e n an "+a u s l e i h e r+" ) " ; e l s e { r e s u l t+=" ( n i c h t a u s g e l i e h e n ) " ; r e t u r n r e s u l t ; 17 / 22 Erweiterung des Beispiels Für die Bibliothek soll eine gleichnamige Klasse Bibliothek geschaffen werden. Diese soll in einem Feld die in der Bibliothek vorhandenen Bücher speichern (also die Instanzen der Klasse Buch). Über den Index des Buches soll man auf die einzelnen Instanzen der Klasse Buch zugreifen können. Eine solche Klasse wird häufig als Containerklasse bezeichnet. 18 / 22 Handout S. 6

Klassendiagramm Bibliothek int anzahl int max Buch buecher[] +void neuesbuch(autor :, titel : ) +Buch getbuch(index : int) 1 0..* Buch autor titel ausleiher + getautor() + gettitel() +boolean isausgeliehen() + getausleiher() +void ausleihe(ausleiher : ) +void rueckgabe() 19 / 22 Code der Klasse Bibliothek p u b l i c c l a s s B i b l i o t h e k { p r i v a t e i n t a n z a h l ; p r i v a t e Buch [ ] buecher ; p r i v a t e s t a t i c f i n a l i n t max = 1 0 0 ; p u b l i c B i b l i o t h e k ( ) { a n z a h l = 0 ; buecher = new Buch [ max ] ; 20 / 22 Code der Klasse Bibliothek (Forts.) p u b l i c v o i d neuesbuch ( S t r i n g autor, S t r i n g t i t e l ) { i f ( anzahl<max) { Buch b = new Buch ( autor, t i t e l ) ; buecher [ anzahl++] = b ; p u b l i c Buch getbuch ( i n t i n d e x ) { i f ( index >=0 && index<a n z a h l ) { r e t u r n buecher [ i n d e x ] ; e l s e { r e t u r n n u l l ; 21 / 22 Handout S. 7

Code der Klasse Bibliothek (Forts.) In diesem Beispiel enthält die Klasse Bibliothek auch die main-methode, das demonstriert, wie ein Buch in die Bibliothek aufgenommen wird und ausgeliehen bzw. zurück gegeben werden kann. p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { B i b l i o t h e k bib = new B i b l i o t h e k ( ) ; bib. neuesbuch ( "Dan Brown", " S a k r i l e g " ) ; bib. getbuch ( 0 ). a u s l e i h e ( "Thomas Schmidt " ) ; System. out. p r i n t l n ( bib. getbuch ( 0 ) ) ; bib. getbuch ( 0 ). rueckgabe ( ) ; System. out. p r i n t l n ( bib. getbuch ( 0 ) ) ; 22 / 22 Handout S. 8