Klassenattribute und -methoden, Vererbung



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

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

BEISPIELKLAUSUR Softwareentwicklung:

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Einführung in die Java- Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Java: Vererbung. Teil 3: super()

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

1 Vom Problem zum Programm

Kapitel 6. Vererbung

5 Projekt Bankverwaltung

Folge 18 - Vererbung

Download. Klassenarbeiten Mathematik 8. Zinsrechnung. Jens Conrad, Hardy Seifert. Downloadauszug aus dem Originaltitel:

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Kapitel 6. Vererbung

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Programmieren in Java

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Einführung in die Programmierung für NF

Verbuchung von Zahlungseingängen über das PayPal-Konto

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

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

Objektorientierte Programmierung

Berechnungen in Access Teil I

Fakultät Angewandte Informatik Lehrprofessur für Informatik

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Kapitel 6. Vererbung

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

SS 2014 Torsten Schreiber

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Programmierkurs Java

Lehrer: Einschreibemethoden

5.2 Neue Projekte erstellen

Qt-Projekte mit Visual Studio 2005

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Arbeiten mit UMLed und Delphi

Einrichten eines IMAP Kontos unter Outlook Express

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Anleitung: Passwort-Self-Service-Portal

SEP 114. Design by Contract

Anleitung über den Umgang mit Schildern

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

MOM - Medienforum Online-Medien Anleitung zum Ändern der Login-Nummer und des Passworts

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

Studentische Lösung zum Übungsblatt Nr. 7

Wie kann ein Fondssparplan verwaltet werden? Version / Datum V 1.0 /

Einführung in die Programmierung

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Bauteilattribute als Sachdaten anzeigen

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Programmieren I. Kapitel 15. Ein und Ausgabe

Leichte-Sprache-Bilder

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Software Engineering Klassendiagramme weiterführende Konzepte

OUTLOOK (EXPRESS) KONFIGURATION POP3

Zeichen bei Zahlen entschlüsseln

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

2. Programmierung in C

Übungen Programmieren 1 Felix Rohrer. Übungen

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Excel Pivot-Tabellen 2010 effektiv

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Die Excel Schnittstelle - Pro Pack

VPN via UMTS. Nach der PIN-Eingabe stehen verschiedene Funktionen zur Verfügung.

Übungsaufgaben Tilgungsrechnung

Bedienungsanleitung für den Online-Shop

Einrichten eines HBCI- Zugangs mit Bank X 5.1

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis 1

Urlaubsregel in David

STRATO Mail Einrichtung Mozilla Thunderbird

SEPA-Anleitung zum Release 3.09

Tipps zur Nutzung der ViT 1 Lernen ViT Üben HAU ViT ViT ViT ViT ViT Testen ViT VORSC Bewerten RAGTIME ViT zur Vollversion ViT

Prinzipien Objektorientierter Programmierung

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Objektbasierte Entwicklung

Die Erstellung eigener Strukturprofile

Nutzerhandbuch Zentrale Klassenverwaltung

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

Datensicherung. Beschreibung der Datensicherung

teischl.com Software Design & Services e.u. office@teischl.com

Professionelle Seminare im Bereich MS-Office

ecaros2 - Accountmanager

4. BEZIEHUNGEN ZWISCHEN TABELLEN

1. Einführung. 2. Weitere Konten anlegen

Arrays Fortgeschrittene Verwendung

SWE5 Übungen zu Software-Engineering

Outlook Vorlagen/Templates

Einführung in die Java- Programmierung

2 Wie sicher ist mein Passwort? *

Transkript:

Klassenattribute und -methoden, Vererbung Michael Dienert 27. März 2002 1 Prüfungsaufgabe Anwendungsentwicklung Winter 2001 Die folgende Aufgabe stammt aus der Abschlussprüfung für Fachinformatiker Anwendungsentwicklung in Baden-Württemberg im Winter 2001. Die Aufgabe wurde leicht modifiziert. Z.B. wurden die Namen der Eigenschaften geändert und die Fragestellung im zweiten Teil exakter formuliert. 1.1 modifizierter Aufgabentext Ihr Unternehmen hat die Aufgabe eine Kontoführungssoftware zu entwickeln. 1. Zu diesem Zweck hat ein Kollege im Vorfeld ein UML-Diagramm entworfen (Abb. 1. Setzen Sie dieses UML-Diagramm in Quellcode um. Die Girokonten erhalten Kontonummern grösser 100000 Die Methoden haben folgende Funktion: Konstruktor erhöht die Klassenvariable nextkontonummer um 1, initialisiert das Objekt und weist ihm dabei eine Kontonummer zu setnextkontonummer(long setzt die nächste zu vergebende Kontonummer vor dem Anlegen eines Objekts fest getkontonummer( gibt die kontonummer zurück saldo( gibt den aktuellen Kontostand zurück einzahlen(double erhöht den Kontostand um eine Einzahlung 2. Das UML-Diagramm für ein Girokonto wurde erweitert: Abb. 2. Die zusätzlichen Methoden haben folgende Funktion: setzinssatz(double abheben(double gebuehr(double zinsgutschrift( legt den Zinssatz für alle Girokonten fest vermindert den Kontostand um eine Abhebung jedes Girokonto wird einmal im Monat mit einer Gebühr belastet berechnet und schreibt den Zins für den abgelaufenen Monat gut; liefert den Gutschriftbetrag zurück 1

Die objektorientierte Analyse hat gezeigt, dass es neben den Girokonten auch Anlagekonten gibt. Entwerfen Sie eine Vererbungshierarchie für die Klassen GiroKonto und SparKonto. Dabei sollen alle gemeinsamen Eigenschaften und Methoden dieser beiden Klassen von einer Superklasse Konto ererbt werden. 1 Dabei ist für die Anlagekonten folgendes zu beachten: sie erhalten Kontonummern grösser 800000 sie werden für eine bestimmte Laufzeit angelegt Anlagekonten können unterschiedliche Zinssätze haben dem Kunden wird drei Monate vor Ablauf eine Mitteilung zugesandt sie sind gebührenfrei Die ursprüngliche Aufgabenstellung war mir zunächst völlig unklar. Erst ein Blick in die Musterlösung zeigte, dass hier als Lösung eine Vererbungsstruktur mit UML-Diagrammen erwartet wurde. GiroKonto - nextkontonummer: long - KontoNummer: long - kontostand: double + GiroKonto( + setnextkontonummer(long:void + getkontonummer(:long + saldo(:double + einzahlen(double:void GiroKonto - nextkontonummer: long - zinssatz: double - KontoNummer: long - kontostand: double - kreditlimit: double + GiroKonto( + setnextkontonummer(long:void + setzinssatz(double: void + getkontonummer(:long + saldo(:double + einzahlen(double:void + abheben(double:void + gebuehr(double:void + zinsgutschrift(:double Abbildung 1: Klassendiagramm GiroKonto Abbildung 2: Erweiterte Klasse GiroKonto 2 Hinweise und Hilfen Hier einige Hinweise zur Lösung der Aufgaben. 1 Die originale Fragestellung war: Erweitern Sie das vorhandene UML-Diagramm und gestalten Sie es um, so dass auch die Anlagekonten abgebildet werden. 2

In den UML-Diagrammen sind einige Eigenschaften und Methoden unterstrichen. Was bedeutet das? Unterstrichene Eigenschaften sind sogenannte Klassenattribute. Ein Klassenattribut beschreibt eine Eigenschaft der Klasse. Ein Klassenattribut wird immer dann verwendet, wenn der Wert dieser Eigenschaft (Attribut = Eigenschaft für alle Objekte der Klasse der selbe ist. Ein typisches Beispiel für eine Klassenvariable wäre die Anzahl der erzeugten Objekte. In der Kontoaufgabe ist es die Eigenschaft nextkontonummer, die ja auch die Anzahl der erzeugten Konten repräsentiert. Auch der Zinssatz, der für alle Girokonten der selbe sein soll, ist also ein Klassenattribut. Klassenattribute werden mit dem Schlüsselwort static deklariert. Analog zu den Klassenattributen, sind unterstrichene Methoden Klassenmethoden. Mit Klassenmethoden wird auf Klassenattribute zugegriffen. Eine Klassenmethode kann aufgerufen werden, bevor überhaupt Objekte der Klasse erzeugt worden sind. Damit dies möglich wird, werden die Klassenmethoden während der Laufzeit eines Java- Programms sofort in den Speicher geladen und verbleiben dort. Die bekannteste statische Methode ist die main-methode. Sie wird beim Start eines jeden Java-Programms in den Speicher geladen und dann aufgerufen. Weitere wichtige statische Methoden sind z.b. alle Methoden der java.lang.math - Klasse. Beispiel: Math.sqrt(2 berechnet die Quadratwurzel von 2. 3 Weitere Aufgaben In der Prüfung nicht verlangt waren Testklassen, mit denen man Konto-Objekte erzeugt und testet. In dieser Übung sollen aber solche Testklassen erzeugt werden: 1. Um die Klasse GiroKonto zu testen, sollen Sie eine Klasse GiroKontoTest schreiben, in der ein GiroKonto-Objekt erzeugt wird. 2. In GiroKontoTest sollen alle Methoden von GiroKonto getestet werden. 3. Um die erweiterten Konto Klassen zu testen, soll das Programm interaktiv auf Benutzereingaben reagieren. Dazu ist ein Text-Menue möglicher Benutzeraktionen auszugeben. Die Auswahl eines Menuepunkts soll durch Eingabe eines Kennbuchstabens erfolgen. Das kann etwa so aussehen: Was moechten Sie tun: (gk Girokonto anlegen (ak Anlagenkonto anlegen (ez einzahlen (ab abheben (sa Kontostand abfragen (zi Zinsen gutschreiben (kl Kreditlimit erfragen (li alle Konten auflisten (x beenden Das Einlesen von Konsoleneingaben in Java ist ein bisschen umständlich. Grund sind die strenge Objektorientierung und die Verwendung von Unicode. 3

Um Zeichenketten (String einzulesen, geht man so vor: BufferedReader lesepuffer; lesepuffer = new BufferedReader( new InputStreamReader( System.in int zahl = Integer.parseInt(eingabe; Dabei haben die einzelnen Klassen folgende Funktionen: System.in ein Objekt, das die Standardeingabe (Tastatur liest und einzelne Bytes liefert. in ist eine Objekt vom Typ InputStream. Die Klasse System definiert mit ihren Eigenschaften und Methoden eine plattformunabhängige Schnittstelle zum jeweiligen Betriebssystem. InputStreamReader: Objekte dieser Klasse lesen einzelne Bytes und codieren diese in Unicode. BufferedReader: ein BufferedReader-Objekt liest einzelne Unicode- Zeichen und legt diese in einem Pufferspeicher (last in first out, Stapelspeicher ab. BufferedReader-Objekte besitzen die Methode readline(, mit der eine ganze Textzeile aus dem Puffer ausgelesen und als String zurückgegeben wird. Das heisst, um einen Eingabestring zu lesen, ruft man auf. Möchte man numerische Eingaben entgegennehmen, kann man den String mit folgenden Methoden wandeln: integer n = Integer.parseInt(eingabe; long m = Long.parseLong(eingabe; double x = Double.parseDouble(eingabe; Diese parse-methoden gibt es erst ab Java2 (ab jdk1.2. Da bei der Umwandlung eines Strings in einen numerischen Wert ein Ausnahmefehler auftreten kann - der String könnte ja z.b. Buchstaben enthalten - müssen die parse-methoden innerhalb eines try- Blocks stehen. Beispiel: 4

try{ BufferedReader lesepuffer = new BufferedReader( new InputStreamReader( System.in ; System.out.println("Geben Sie eine ganze Zahl ein!"; int zahl = Integer.parseInt(eingabe; //falls Ihr String einen //Dezimalpunkt enthaelt, //wird die Ausnahmebehandlung //ausgeloest } // ende des try-blocks catch(exception e{ System.out.println("Es trat der Fehler " + e + "auf!"; } Um eine ganze Liste von Kontoobjekten anzulegen, muss man ein Array von Objekten deklarieren. Das macht man mit folgender Zeile: //anlegen eines feldes mit 100 konten //kontonummer darf nur aus diesem Bereich stammen GiroKonto[] eingirokonto = new GiroKonto[100]; Diese Zeile ist gleichwertig mit folgender Konstruktion: GiroKonto eingirokonto[0]; GiroKonto eingirokonto[1]; GiroKonto eingirokonto[99]; Also Vorsicht: obwohl oben der new-operator verwendet wird, sind keinerlei Objekte erzeugt worden! Man hat lediglich 100 Objekte referenziert, also deren Namen als Zeiger auf die eigentlichen Objekte festgelegt. Die Objekte müssen in einem zweiten Schritt in gewohnter Weise angelegt werden. Also z.b. so: eingirokonto[42] = new GiroKonto(; Statt der Zahl 42 kann natürlich auch eine int-variable stehen. Und ganz wichtig bei Objektarrays: runde und eckige Klammern nicht verwechseln! 5