Grundkonzepte objektorientierter Programmierung -

Größe: px
Ab Seite anzeigen:

Download "Grundkonzepte objektorientierter Programmierung -"

Transkript

1 Grundkonzepte objektorientierter Programmierung - Beispiele in Java, Oberon-2, Python und Delphi Projektarbeit im Studiengang Lehramt Informatik Sommersemester 2006 Friedrich-Schiller-Universität Jena erstellt von Nicole Himmerlich betreut von Prof. Dr. Michael Fothe & Lutz Kohl August 2006

2

3 Inhaltsverzeichnis 1 Konzepte und Begrie der Objektorientierung 1 2 Beispiel: Konto Aggregierung und enge Kopplung Datenkapselung Konstruktor Klassen- und instanzspezische Komponenten Manipulierbarkeit Vererbung Reimplementierung Polymorphismus Überladen Beispiel: Mediendatenbank 35 4 Beispiel: Geometrische Figuren 48 A Python-Quellcode 61 A.1 Beispiel: Konto A.2 Beispiel: Mediendatenbank A.3 Beispiel: Geometrische Figuren B Delphi-Quellcode 72 B.1 Beispiel: Konto B.2 Beispiel: Mediendatenbank B.3 Beispiel: Geometrische Figuren

4

5 1 Konzepte und Begrie der Objektorientierung Die Prädicate der Erscheinung können dem Objecte selbst beigelegt werden, in Verhältniÿ auf unseren Sinn, z.b. der Rose die rothe Farbe, oder der Geruch; [...] 1 Kant Wie wir uns räumliche Gegenstände überhaupt nicht auÿerhalb der Zeit denken können, so können wir uns keinen Gegenstand auÿerhalb der Möglichkeiten seiner Verbindung mit anderen denken. 2 Wittgenstein Die obigen Zitate zeigen, dass objektorientiertes Denken keine Erndung der Informatik ist, vielmehr gehen wir alle täglich mit Objekten um. [Somit ist Objektorientierung] für uns Menschen eine natürliche Betrachtungsweise. Wir wissen, dass Objekte Eigenschaften und ein Verhalten besitzen und aus anderen Objekten zusammengesetzt sein können. Wir betrachten von einem Objekt nur gerade so viel, wie uns im Moment interessiert und fassen gleichartige Objekte in Gruppen zusammen. 3 Die Informatik hat diese Betrachtungsweise aufgegrien und zu einem Programmierparadigma entwickelt. Der Begri Objekt umfasst Gegenstände, Personen, Sachverhalte oder Ereignisse. Jedes einzelne Objekt lässt sich durch drei Aspekte charakterisieren: es besitzt einen eindeutigen Zustand, ein wohldeniertes Verhalten und eine Identität. Der Zustand eines Objektes repräsentiert alle seine relevanten Eigenschaften und ist durch eine Menge von Attributen und deren Werte bestimmt. Durch sie wird die Struktur der Objekte vereinbart. Die Attributmenge eines Objektes ändert sich normalerweise nicht, die konkreten Werte sind jedoch veränderlich. Das Verhalten wird in der objektorientierten Programmierung durch eine Menge von Methoden beschrieben. Sie bestimmen die Art und Weise, in der ein Objekt, in Abhängigkeit von seinem Zustand auf Einwirkungen reagiert, und können Attributwerte manipulieren. Die Identität eines Objektes ist diejenige Eigenschaft, die es von allen anderen Objekten unterscheidet. Sie stellt sicher, dass alle Objekte unterscheidbar sind, auch wenn sie zufällig identische Attributwerte besitzen. Dabei muss gerade in der Softwareentwicklung zwischen dem Namen eines Objektes und seiner Identität dierenziert werden, da der Name der Adressierung dient und ein einzelnes Objekt über verschiedene Namen angesprochen werden kann. Objekte können nach bestimmten Kriterien gruppiert werden. Statt jedes Objekt einzeln zu beschreiben, werden gemeinsame Merkmale in Klassen zusammengefasst. Eine 1[Kan89, S.115, Ÿ8 Allgemeine Anmerkungen zur transzendentalen Ästhetik, Abschnitt iii] 2[Wit66, S.12, Satz ] 3[LS96, S.4] 1

6 Klasse ist somit eine abstrakte Beschreibung der Struktur und des Verhaltens von gleichartigen Objekten. Ein konkretes Objekt wird dann auch als Instanz einer Klasse bezeichnet. Zu den Grundprinzipien der objektorientierten Programmierung gehören noch weitere Konzepte: ˆ Aggregierung ˆ Kopplung ˆ Kapselung und Information Hiding ˆ Konstruktoren und Destruktoren ˆ Instanz- und klassenspezische Komponenten ˆ Vererbung ˆ Mehrfachvererbung ˆ Reimplementierung ˆ Polymorphismus ˆ Dynamisches Binden ˆ Abstrakte Klassen ˆ Generische Klassen ˆ Assoziation ˆ Aggregation ˆ Komposition Einige dieser Konzepte werden im Folgenden anhand einfacher Beispiele näher erläutert. Auf eine ausführliche Darstellung der anderen Prinzipien wird verzichtet. Sie sind hier nur erwähnt, um die Vielfalt objektorientierter Programmierung zu verdeutlichen. Nicht alle vorgestellten Konzepte sind rein objektorientiert, objektorientierte Programmierung wird viel mehr durch die Gesamtheit aller Konzepte geprägt. Dies bedeutet andererseits aber nicht, dass jede als objektorientiert bezeichnete Programmiersprache auch alle Konzepte beinhaltet bzw. unterstützt. Der der Informatik-Lehrplan für Thüringen 4 sieht vor, dass die Grundprinzipien des objektorientierten Programmierens im Leistungskurs Informatik behandelt werden. Für die Umsetzung der Beispiele wurden deshalb Programmiersprachen 5 gewählt, die an Thüringer Schulen im Einsatz sind. 4Thüringer Kultusministerium (Hrsg.): Lehrplan für das Gymnasium - Informatik, Java: Java 2 SDK 5.0; Oberon-2: POW!; Python: Python 2.4.3; ObjectPascal: Delphi 7. 2

7 2 Beispiel: Konto Zur näheren Erläuterung zentraler Eigenschaften objektorientierter Programmierung soll zunächst ein Bankkonto schrittweise modelliert werden. Jedes Bankkonto besitzt üblicherweise eine eindeutige Kontonummer und einen aktuellen Kontostand. Natürlich sind noch weitere Kennzeichen - z.b. Kontoinhaber - denkbar. Sie werden jedoch zunächst vernachlässigt, damit die Quelltexte überschaubar bleiben. Typische Aktionen, die auf einem Konto ausgeführt werden, sind das Einbzw. Auszahlen von Geldbeträgen und das Drucken eines Kontoauszugs. 2.1 Aggregierung und enge Kopplung In der prozeduralen Programmierung werden zunächst die für die Beschreibung der Daten notwendigen Datenstrukturen geschaen und danach werden die Funktionen entwickelt, mit deren Hilfe die Inhalte der vorhandenen Datenstrukturen ausgegeben bzw. manipuliert werden können. Obwohl sich die Funktionen auf die Datenstrukturen beziehen, können Daten und Funktionen nicht als eine Einheit betrachtet werden. Insbesondere wenn mehrere Datenstrukturen deklariert werden müssen, ist die Zuordnung der Funktionen nicht sofort ersichtlich. In der objektorientierten Programmierung werden zusammengehörige Attribute (Daten) und Methoden (Funktionen) zu einer manipulierbaren Gröÿe - einer Klasse - zusammengefasst. Sie bilden sozusagen ein Aggregat 6, dessen Komponenten aufeinander Bezug nehmen können. In unserem Beispiel werden alle notwendigen Attribute und Methoden für ein Bankkonto in der Klasse Konto zusammengefasst, so dass sich das in Abb. 1 gezeigte Modell ergibt. Die Methoden einzahlen(betrag) und auszahlen(betrag) verändern den Konto- Abbildung 1: Klasse Konto stand eines Bankkontos, d.h. sie müssen auf das Attribut saldo zugreifen und dessen 6In der Literatur wird häug der Begri Kapselung verwendet. Um Verwechselungen mit dem Begri Datenkapselung - im Sinne des Information Hiding - zu vermeiden, wird hier der Begri Aggregierung (ein Aggregat bilden) benutzt. 3

8 Wert verändern. Die Methode auszug() bezieht sich sogar auf die beiden Attribute der Klasse, da sie kontonummer und saldo ausgibt. Daran zeigt sich die enge Kopplung zwischen Attributen und Methoden. Java In Java wird ein Klasse über das Schlüsselwort class deniert. Alle Variablen, Funktionen bzw. Prozeduren, die innerhalb der geschweiften Klammern deniert werden, gehören damit zur Klasse und bilden deren Attribute und Methoden. Innerhalb einer Klasse können Attribute und Methoden direkt über ihren Namen angesprochen werden. Eine Quelldatei sollte nur eine Klassendenition enthalten und den gleichen Namen wie die Klasse tragen. //Datei: Konto1/Konto.java //Beispiel: Aggregierung und Kopplung // > Aggregierung class Konto{ // Attribute int kontonummer; double saldo; // Methoden void einzahlen(double betrag){ saldo = saldo + betrag; // > Kopplung void auszahlen(double betrag){ saldo = saldo betrag; // >Kopplung void auszug(){ System.out.println("Kontonummer: "+kontonummer+" Saldo: "+saldo+" Euro"); Java ist eine rein objektorientierte Sprache, so dass jedes Programm eine Klasse deniert. Deshalb wird das Testprogramm für die Klasse Konto in eine Klasse KontoTest eingebettet, die nur die Methode main enthält. Um von der Klasse Konto ein Objekt bzw. eine Instanz zu erzeugen, wird eine Variable vom Typ Konto deklariert. Der Operator new legt, mit Hilfe der vom Compiler erzeugten Methode Konto(), ein neues Konto-Objekt an, das anschlieÿend der Variablen meinkonto zugewiesen wird. Dabei gilt: Variablen, deren Typ eine Klasse ist, enthalten nicht das eigentliche Objekt, sondern nur einen Adressverweis auf dessen Speicherplatz. Insbesondere bedeutet dies, dass in meinkonto nur die Speicheradresse des Objektes abgelegt ist (siehe Abb. 2). Für den Zugri auf Attribute oder Methoden eines Objektes wird eine Punktnotation verwendet. Attribute können mittels Referenz.Attribut gelesen und deren Werte verändert werden. Methoden werden durch Referenz.Methode() aufgerufen. 4

9 Abbildung 2: Objektreferenz // Datei: Konto1/KontoTest.java // Beispiel : Aggregierung und Kopplung public class KontoTest{ public static void main(string[] args){ Konto meinkonto; // Variable vom Typ Konto meinkonto = new Konto(); // new erzeugt Instanz der Klasse Konto meinkonto.kontonummer = ; // Zugri auf Attribute meinkonto.saldo = ; System.out.println("Kontonummer: "+meinkonto.kontonummer +" Saldo: "+ meinkonto.saldo); meinkonto.einzahlen(300.00); // Methodenaufruf meinkonto.auszug(); System.out.println(); Konto deinkonto = new Konto(); // deinkonto zeigt auf neue Instanz der Klasse Konto deinkonto.kontonummer = ; deinkonto.saldo = ; deinkonto.auszug(); deinkonto.auszahlen(100.00); deinkonto.auszug(); Oberon-2 Oberon-2 verwendet sogenannte typgebundene Prozeduren, um die Zugehörigkeit der Methoden zur Klasse deutlich zu machen. Die Attribute einer Klasse werden als Felder eines Recordtyps dargestellt. Da Oberon nicht automatisch mit Referenzvariablen arbeitet, wird auÿerdem ein Referenztyp zum Recordtyp der Klasse deniert. Die Implementierung der Methoden muss zusätzlich einen speziellen Parameter vor dem Prozedurnamen besitzen. Dieser Parameter wird Empfänger genannt und repräsentiert das Objekt, für das die Methode aufgerufen wird. Der Typ des Empfängers gibt an, zu welcher Klasse die Methode gehört. Im Prozedurrumpf wird der Empfänger genutzt, um auf die Attribute der Klasse zuzugreifen. Dabei wird wieder die Punktnotation (Empfänger.Attribut) angewendet. In Oberon-2 müssen zunächst alle Datentypen deklariert werden, bevor Prozeduren implementiert werden können. Deshalb sollte jede Klasse in einem separaten Modul beschrieben werden. Sind mehrere Klassendenitionen in einem Modul enthalten, geht schnell die Übersichtlichkeit verloren und es ist nicht mehr klar erkennbar, welche Methoden zu welchem Datentyp gehören. 5

10 (* Datei: Konto1/Konto.mod *) (* Beispiel : Aggregierung und Kopplung *) MODULE Konto; IMPORT Out; TYPE (* Attribute *) Konto* = RECORD kontonummer* : LONGINT; saldo * : REAL END; (* zugehoeriger Referenztyp *) KontoRef* = POINTER TO Konto; (* Methoden *) (* > Aggregierung durch typgebundene Prozeduren*) PROCEDURE (k : KontoRef) einzahlen*(betrag : REAL); k.saldo := k.saldo + betrag; (* > Kopplung *) END einzahlen; PROCEDURE (k : KontoRef) auszahlen*(betrag : REAL); k.saldo := k.saldo betrag; (* > Kopplung *) END auszahlen; PROCEDURE (k : KontoRef) auszug*(); Out.String("Kontonummer: "); Out.Int(k.kontonummer, 10); Out.String(" Saldo: "); Out.Real(k.saldo, 10); Out.String(" Euro"); Out.Ln; END auszug; END Konto. Um eine Instanz der Klasse Konto zu erzeugen, wird eine Variable vom Typ KontoRef deklariert. Der Aufruf NEW(meinKonto) legt ein Objekt vom Typ Konto an, d.h. er stellt entsprechenden Speicherplatz zur Verfügung. Zudem bewirkt er, dass meinkonto auf dieses Objekt verweist. Über die Variable meinkonto können die Attribute der Instanz angesprochen werden (meinkonto.attribut). Für den Aufruf von Methoden wird ebenfalls die Punktnotation (meinkonto.methode()) verwendet. (* Datei: Konto1/KontoTest.mod *) (* Beispiel : Aggregierung und Kopplung *) MODULE KontoTest; IMPORT Konto, Out; PROCEDURE ProgMain*(); VAR meinkonto, deinkonto : Konto.KontoRef; (* Variablen vom Referenztyp Konto *) NEW(meinKonto); (* NEW erzeugt Instanz der Klasse Konto *) 6

11 meinkonto.kontonummer := ; (* Zugri auf Attribute *) meinkonto.saldo := ; Out.String("Kontonummer: "); Out.Int(meinKonto.kontonummer, 10); Out.String(" Saldo: "); Out.Real(meinKonto.saldo, 10); Out.Ln; meinkonto.einzahlen(300.00); (* Methodenaufruf *) meinkonto.auszug(); Out.Ln; NEW(deinKonto); (* deinkonto zeigt auf neue Instanz der Klasse Konto *) deinkonto.kontonummer := ; deinkonto.saldo := ; deinkonto.auszug(); deinkonto.auszahlen(100.00); deinkonto.auszug(); END ProgMain; END KontoTest. 2.2 Datenkapselung Das Prinzip der Datenkapselung wurde bereits 1972 von David Parnas propagiert 7. Er prägte damals den Begri Information Hiding. Im Deutschen wird oft die Bezeichnung Geheimnisprinzip verwendet. Für den Benutzer einer Klasse ist relevant, wie er eine Komponente verwenden kann, nicht wie sie realisiert ist. Deshalb wird die Struktur eines Objektes und die Implementierung der Methoden nicht oen gelegt, sondern in der Klasse verborgen. Der Zugri auf die gekapselten Attribute und deren Manipulation ist dann ausschlieÿlich über die Methoden der Klasse durchführbar. So wird sichergestellt, dass Attributwerte nicht willkürlich geändert und nur zulässige Werte gespeichert werden. Das Verstecken der Implementierungsdetails vermindert die Fehleranfälligkeit, da ein unerwarteter Zugri unmöglich ist. Änderungen der Implementierung haben keine Auswirkung auf den Nutzer, da dieser die Zugrismethoden weiterhin verwenden kann. Im Fall der Klasse Konto sollen die Attribute kontonummer und saldo vor unkontrolliertem Zugri geschützt werden. Da das Lesen und Verändern der Attribute aber zunächst noch möglich sein soll, werden neue Methoden benötigt. Die Methoden get- Kontonummer() und setkontonummer(nummer) ermöglichen Lese- und Schreibzugri auf das Attribut kontonummer. Für die Manipulation von saldo wurden die Operationen getsaldo() und setsaldo(betrag) deniert. 7Das Konzept der Datenkapselung ist ein wichtiges Prinzip der Informatik, das nicht nur in der objektorientierten Programmierung eingesetzt wird. 7

12 Java Die Zugrisrechte werden in Java über sogenannte Modizierer festgelegt. Wird ein Attribut ohne Zusatz deklariert, so ist es in allen Klassen des deklarierenden Paketes 8 sichtbar, nicht jedoch in anderen Paketen. Das Schlüsselwort public erlaubt lesenden und schreibenden Zugri, d.h. die Attribute sind in allen Paketen sichtbar. Sollen Attribute nur innerhalb der Klasse sichtbar sein, so müssen sie mit dem Modi- zierer private gekennzeichnet werden. Da die Attribute kontonummer und saldo versteckt werden sollen, sind sie ab sofort mit dem Vorsatz private versehen. Modizierer regeln auch die Sichtbarkeit von Methoden. Da die Methoden der Klasse Konto in jedem Paket zugänglich sein sollen, müssen sie als public deklariert werden. Das Schlüsselwort public kann auch auf Klassen angewendet werden. Klassen, die mit public gekennzeichnet sind, können überall benutzt werden. In einer Quelldatei darf jedoch höchstens eine Klasse als public deklariert werden. //Datei: Konto2/Konto.java //Beispiel: Datenkapselung public class Konto{ private int kontonummer; // > Datenkapselung private double saldo; // neue Methoden fuer sicheren Zugri auf Attribut kontonummer public int getkontonummer(){ return kontonummer; public void setkontonummer(int nummer){ kontonummer = nummer; // neue Methoden fuer sicheren Zugri auf Attribut saldo public double getsaldo(){ return saldo; public void setsaldo(double betrag){ saldo = betrag; // urspruengliche Methoden public void einzahlen(double betrag){ saldo = saldo + betrag; public void auszahlen(double betrag){ saldo = saldo betrag; public void auszug(){ System.out.println("Kontonummer: "+kontonummer+" Saldo: "+saldo+" Euro"); 8Pakete bestehen aus mehreren Klasse, die zu einer gröÿeren Einheit zusammengefasst werden. Um eine Klasse einem bestimmten Paket zuzuordnen muss die Anweisung package Paketname; als erste Anweisung im Quellcode stehen. 8

13 Auÿerhalb der Klasse Konto ist ein direkter Zugri auf die Attribute kontonummer und saldo nicht mehr möglich. Der Befehl meinkonto.kontonummer = führt zu einem Fehler bei der Übersetzung. Sogar der Versuch lesend auf die Variable zuzugreifen, erzeugt eine Fehlermeldung. Die Attribute können nur über entsprechende Methoden angesprochen werden. //Datei: Konto2/KontoTest.java //Beispiel: Datenkapselung public class KontoTest{ public static void main(string[] args){ Konto meinkonto = new Konto(); /* meinkonto.kontonummer = ;!! Fehler System.out.println(meinKonto.kontonummer);!! Fehler */ meinkonto.setkontonummer( ); // schreibender Zugri auf Attribute ueber entsprechende Methoden meinkonto.setsaldo(200.00); System.out.print("Kontonummer: "+meinkonto.getkontonummer()); // lesender Zugri System.out.println(" Saldo: "+meinkonto.getsaldo()+" Euro"); Oberon-2 In Oberon-2 werden Attribute und Methoden nur dann exportiert, wenn sie in ihrer Deklaration mit einem Stern (*) markiert sind. Wird die Markierung weggelassen, so sind die Namen nur innerhalb des Moduls sichtbar, in der die Klasse implementiert wird. Andere Module, die das Modul importieren, können nur auf die exportierten Attribute und Methoden zugreifen. In der Klasse Konto wird der Stern an den Attributen kontonummer und saldo entfernt. Der Name des Record, der zugehörige Referenztyp und die Methoden sollen weiterhin sichtbar sein und behalten deshalb ihre Markierung. (* Datei: Konto2/Konto.mod *) (* Beispiel : Datenkapselung *) MODULE Konto; IMPORT Out; TYPE Konto* = RECORD kontonummer : LONGINT; (* > Datenkapselung *) saldo : REAL END; KontoRef* = POINTER TO Konto; (* neue Methoden fuer sicheren Zugri auf Atrribut kontonummer *) PROCEDURE (k : KontoRef) getkontonummer*() : LONGINT; RETURN k.kontonummer; END getkontonummer; PROCEDURE (k : KontoRef) setkontonummer*(nummer : LONGINT); k.kontonummer := nummer; END setkontonummer; 9

14 (* neue Methoden fuer sicheren Zugri auf Atrribut saldo *) PROCEDURE (k : KontoRef) getsaldo*() : REAL; RETURN k.saldo; END getsaldo; PROCEDURE (k : KontoRef) setsaldo*(betrag : REAL); k.saldo := k.saldo + betrag; END setsaldo; (* urspruengliche Methoden *) PROCEDURE (k : KontoRef) einzahlen*(betrag : REAL); k.saldo := k.saldo + betrag; END einzahlen; PROCEDURE (k : KontoRef) auszahlen*(betrag : REAL); k.saldo := k.saldo betrag; END auszahlen; PROCEDURE (k : KontoRef) auszug*(); Out.String("Kontonummer: "); Out.Int(k.kontonummer, 10); Out.String(" Saldo: "); Out.Real(k.saldo, 10); Out.String(" Euro"); Out.Ln; END auszug; END Konto. Die Namen kontonummer und saldo werden vom Modul Konto nicht mehr exportiert. Die Verwendung dieser Namen im Modul KontoTest führt deshalb zu der Fehlermeldung Error 83: undened record eld. Um die Attribute trotzdem zu bearbeiten, benutzt man die set- und get-methoden. (* Datei: Konto2/KontoTest.mod *) (* Beispiel : Datenkapselung *) MODULE KontoTest; IMPORT Konto, Out; PROCEDURE ProgMain*(); VAR meinkonto : Konto.KontoRef; NEW(meinKonto); (* meinkonto.kontonummer = ;!! Fehler Out.Int(meinKonto.kontonummer);!! Fehler *) meinkonto.setkontonummer( ); (* schreibender Zugri auf Attribute ueber entsprechende Methoden *) meinkonto.setsaldo(200.00); Out.String("Kontonummer: "); Out.Int(meinKonto.getKontonummer(),10); (* lesender Zugri *) Out.String(" Saldo: "); Out.Real(meinKonto.getSaldo(),10); Out.String(" Euro"); END ProgMain; 10

15 Out.Open END KontoTest. 2.3 Konstruktor Konstruktoren sind spezielle Methoden einer Klasse, die immer dann zum Einsatz kommen, wenn ein neues Objekt erzeugt werden soll. Sie sind eine elegante Möglichkeit, Objekte zu initialisieren, können aber auch individuelles Verhalten implementieren. Die Klasse Konto erhält einen Konstruktor, der als Parameter eine Nummer übergeben bekommt. Diese Nummer dient dem Konstruktor als Initialwert für das Attribut kontonummer. Die Methode setkontonummer(nummer) wird gelöscht, da eine Kontonummer einmalig bei der Erönung des Kontos vergeben wird. Der Wert von saldo wird durch den Konstruktor auf 0.00 gesetzt. Änderungen des Kontostandes sollen anschlieÿend nur über die Methoden einzahlen(betrag) und auszahlen(betrag) möglich sein, weshalb setsaldo(betrag) entfernt wird. Java In Java ist der Konstruktor eine Methode, die den gleichen Namen, wie die zugehörige Klasse trägt. Er unterscheidet sich bei der Denition von anderen Methoden dadurch, dass kein Objekttyp für die Rückgabe speziziert werden darf. Der Konstruktor wird bei der Erzeugung eines Objektes nach dem Operator new aufgerufen. Ein expliziter Aufruf der Form: Referenz.Konstuktor() ist nicht möglich. Ist für eine Klasse kein Konstruktor explizit deklariert, dann baut der Compiler einen Standardkonstruktor ohne Parameter ein. Dieser Konstruktor initialisiert alle Attribute mit NULL. //Datei: Konto3/Konto.java //Beispiel: Konstruktor public class Konto{ private int kontonummer; private double saldo; // > Konstruktor public Konto(int nummer){ kontonummer = nummer; saldo = 0.0; public int getkontonummer(){ return kontonummer; // setkontonummer(nummer) entfernt 11

16 public double getsaldo(){ return saldo; // setsaldo(betrag) entfernt public void einzahlen(double betrag){ saldo = saldo + betrag; public void auszahlen(double betrag){ saldo = saldo betrag; public void auszug(){ System.out.println("Kontonummer: "+kontonummer+" Saldo: "+saldo+" Euro"); Bisher wurden die Instanzen der Klasse Konto mit dem Standardkonstruktor Konto() erstellt. Dieser wird jetzt durch den neuen Konstruktor Konto(nummer) ersetzt. Er übernimmt die Initialisierung der Attribute, so dass dies nicht mehr explizit gesetzt werden müssen. //Datei: Konto3/Konto.java //Beispiel: Konstruktor public class KontoTest{ public static void main(string[] args){ Konto meinkonto; /* bisher: meinkonto = new Konto(); // Objekt erzeugen meinkonto.setkontonummer( ); // Kontonummer initialisieren meinkonto.setsaldo(0.00); // Kontostand initialisieren */ /* jetzt : */ meinkonto = new Konto( ); // Konstruktor erzeugt Objekt und initialisiert Attribute meinkonto.auszug(); Oberon-2 Im Sprachkonzept von Oberon-2 sind Konstruktoren nicht enthalten. Sie können aber durch entsprechend implementierte Methoden nachgebaut werden. Im Beispiel der Klasse Konto wurde eine Methode Konto(nummer) deniert, die als Konstruktor verwendet wird. Diese Methode ist verantwortlich für die Initialisierung der Attribute kontonummer und saldo. (* Datei: Konto3/Konto.mod *) (* Beispiel : Konstruktor *) MODULE Konto; IMPORT Out; 12

17 TYPE Konto* = RECORD kontonummer : LONGINT; saldo : REAL END; KontoRef* = POINTER TO Konto; (* > Konstruktor *) PROCEDURE (k : KontoRef) Konto*(nummer : LONGINT); k.kontonummer := nummer; k.saldo := 0.0; END Konto; PROCEDURE (k : KontoRef) getkontonummer*() : LONGINT; RETURN k.kontonummer; END getkontonummer; (* setkontonummer(nummer) entfernt *) PROCEDURE (k : KontoRef) getsaldo*() : REAL; RETURN k.saldo; END getsaldo; (* setsaldo(betrag) entfernt *) PROCEDURE (k : KontoRef) einzahlen*(betrag : REAL); k.saldo := k.saldo + betrag; END einzahlen; PROCEDURE (k : KontoRef) auszahlen*(betrag : REAL); k.saldo := k.saldo betrag; END auszahlen; PROCEDURE (k : KontoRef) auszug*(); Out.String("Kontonummer: "); Out.Int(k.kontonummer, 10); Out.String(" Saldo: "); Out.Real(k.saldo, 10); Out.String(" Euro"); Out.Ln; END auszug; END Konto. Instanzen einer Klasse werden weiterhin durch den Operator NEW erzeugt. Die Methode Konto(nummer) initialisiert lediglich die Attribute. Da Konto(nummer) eine normale Methode ist, kann sie - im Gegensatz zu Konstruktoren in Java - uneingeschränkt genutzt und mittels Referenz.Konto(nummer) aufgerufen werden. Der Programmierer muss selbst darauf achten, dass sie nur nach der Generierung eines neuen Objektes verwendet wird, da sie sonst eventuell die Daten eines bereits bestehenden Objektes überschreibt. 9 9Eine weitere Variante der Konstruktormethode für Oberon-2-Programme, die den NEW-Operator beinhaltet, wird in den Beispielen Mediendatenbank und geometrische Figuren vorgestellt. 13

18 (* Datei: Konto3/KontoTest.mod *) (* Beispiel : Konstruktor*) MODULE KontoTest; IMPORT Konto, Out; PROCEDURE ProgMain*(); VAR meinkonto : Konto.KontoRef; NEW(meinKonto); (* Objekt erzeugen *) (* bisher: meinkonto.setkontonummer( ); // Kontonummer initialisieren meinkonto.setsaldo(0.00); // Kontostand initialisieren *) (* jetzt : *) meinkonto.konto( ); (* Konstruktor initialisiert Attribute *) meinkonto.auszug; END ProgMain; Out.Open END KontoTest. 2.4 Klassen- und instanzspezische Komponenten Für Klassen können statische Variablen und Methoden deniert werden. Das Besondere an diesen Komponenten ist, dass sie nicht auf die Existenz von Instanzen der Klasse angewiesen sind. Von Klassenvariablen existiert, unabhängig von der Anzahl der Instanzen, nur ein Exemplar, das von allen Objekten der Klasse gemeinsam genutzt wird. Sie werden beim Laden der Klasse erzeugt und erst freigegeben, wenn das Programm endet. Während der Zugri auf Instanzvariablen durch den Befehl Instanz.Variablenname erfolgt, werden klassenspezische Variablen in der Form: Klassenname.Variablenname angesprochen. Wenn ein Attribut für alle Instanzen einer Klasse den gleichen Wert haben soll, ist die Verwendung von Klassenvariablen angebracht. Anstatt den Wert in jedem einzelnen Objekt anzulegen, wird er in der Klasse gespeichert. Klassenmethoden werden eingesetzt um Verhalten zu implementieren, dass für alle Instanzen einer Klasse gleich ist. Man muss jedoch darauf achten, dass sie nicht auf Instanzvariablen zugreifen oder Instanzmethoden aufrufen, da sie auch aufgerufen werden dürfen, wenn keine Instanz existiert. Zudem wäre in solch einer Situation nicht eindeutig festgelegt, welche Instanz verwendet werden muss. Klassenmethoden werden - genau wie Klassenvariablen - über den Name der Klasse aufgerufen. Die Klasse Konto könnte zum Beispiel einen Instanzenzähler enthalten, der festhält, wie viele Objekte vom Typ Konto erzeugt wurden. Der Wert der Variablen muss also immer dann um 1 erhöht werden, wenn ein neues Objekt angelegt wird. Deshalb sollte 14

19 die entsprechende Anweisung im Konstruktor implementiert werden. Zu Beginn der Programm-Abarbeitung steht der Zähler auf 0, da noch keine Instanz existiert. Java Klassenvariablen und -methoden werden in Java durch das Schlüsselwort static gekennzeichnet. Im Beispiel der Klasse Konto wird das Attribut zaehler durch den Vorsatz static zu einer Klassenvariablen. Unabhängig von der Anzahl der Konto-Objekte existiert nur ein Exemplar dieser Variablen. Die Attribute kontonummer und saldo sind Instanzvariablen. Sie werden für jede Instanz der Klasse Konto neu angelegt (siehe Abb.3). Abbildung 3: Instanz- und Klassenvariablen //Datei: Konto4/Konto.java //Beispiel: Klassen und Instanzvariablen public class Konto{ static int zaehler = 0; // > Klassenvariable private int kontonummer; // > Instanzvariablen private double saldo; public Konto(int nummer){ zaehler = zaehler + 1; kontonummer = nummer; saldo = 0.00; public int getkontonummer(){ return kontonummer; 15

20 public double getsaldo(){ return saldo; public void einzahlen(double betrag){ saldo = saldo + betrag; public void auszahlen(double betrag){ saldo = saldo betrag; public void auszug(){ System.out.println("Kontonummer: "+kontonummer+" Saldo: "+saldo+" Euro"); Für die Variable zaehler wird beim Laden der Klasse Konto Speicherplatz belegt, der mit 0 vorinitialisiert ist. Nachdem durch den Konstruktor eine Instanz erzeugt wurde, ist der Wert von zaehler 1. Das Anlegen einer weiteren Instanz bewirkt eine erneute Erhöhung. // Datei: Konto4/KontoTest.java // Beispiel : Klassenvariablen public class KontoTest{ public static void main(string[] args){ // Zugri auf Klassenvariablen ueber Klassennamen System.out.println("Anzahl Konten: "+Konto.zaehler); Konto meinkonto = new Konto( ); System.out.println("Anzahl Konten: "+Konto.zaehler); Konto deinkonto = new Konto( ); System.out.println("Anzahl Konten: "+Konto.zaehler); Oberon-2 In Oberon-2 gibt es keine statischen Komponenten im eigentlichen Sinne. Die Datenfelder des Recordtyps sind Instanzvariablen und werden für jedes Objekt neu angelegt. Klassenvariablen können somit nicht im Record deklariert werden. Stattdessen werden sie im Variablendeklarationsteil des Moduls deniert. Man muss jedoch beachten, dass diese Variablen nicht an eine Klasse gebunden sind. Viel mehr sind es Modulvariablen, die von auÿen mittels Modulname.Variablenname angesprochen werden. Dies ist insbesondere dann wichtig, wenn der Klassenname von Namen des Moduls abweicht oder mehrere Klassen in einem Modul implementiert sind. Ähnliches gilt für Methoden. Instanzmethoden werden durch einen Empfängerparameter dem Recordtyp zugeordnet. Wird dieser Parameter weggelassen, so sind die Prozeduren statisch. Sie können in Modulen, über den Modulnamen aufgerufen werden. 16

21 In unserem Beispiel wird im Modul Konto eine Integer-Variable zaehler deklariert. Der Konstruktor der Klasse Konto verwendet diese Variable, um die Anzahl der Instanzen zu zählen. Um auf den Wert der Variable zuzugreifen, genügt innerhalb des deklarierenden Moduls der Variablenname. (* Datei: Konto4/Konto.mod *) (* Beispiel : Klassen und Instanzvariablen *) MODULE Konto; IMPORT Out; TYPE Konto* = RECORD kontonummer : LONGINT; (* > Instanzvariablen *) saldo : REAL END; KontoRef* = POINTER TO Konto; (* > Modulvariable, ersetzt Klassenvariable *) VAR zaehler* : INTEGER; PROCEDURE (k : KontoRef) Konto*(nummer : LONGINT); zaehler := zaehler + 1; k.kontonummer := nummer; k.saldo := 0.0; END Konto; PROCEDURE (k : KontoRef) getkontonummer*() : LONGINT; RETURN k.kontonummer; END getkontonummer; PROCEDURE (k : KontoRef) getsaldo*() : REAL; RETURN k.saldo; END getsaldo; PROCEDURE (k : KontoRef) einzahlen*(betrag : REAL); k.saldo := k.saldo + betrag; END einzahlen; PROCEDURE (k : KontoRef) auszahlen*(betrag : REAL); k.saldo := k.saldo betrag; END auszahlen; PROCEDURE (k : KontoRef) auszug*(); Out.String("Kontonummer: "); Out.Int(k.kontonummer, 10); Out.String(" Saldo: "); Out.Real(k.saldo, 10); Out.String(" Euro"); Out.Ln; END auszug; zaehler := 0; END Konto. 17

Grundkonzepte Objektorientierter Programmierung

Grundkonzepte Objektorientierter Programmierung Grundkonzepte Objektorientierter Programmierung Beispiele in Java, Oberon-2, Python und Delphi Projektarbeit im Studiengang Lehramt Informatik Sommersemester 2006 Friedrich-Schiller-Universität Jena erstellt

Mehr

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

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

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

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Klassenattribute und -methoden, Vererbung

Klassenattribute und -methoden, Vererbung 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

Mehr

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

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr

5 Projekt Bankverwaltung

5 Projekt Bankverwaltung Kapitel 5 Bankverwaltung (Lösung) Seite 1/7 5 Projekt Bankverwaltung 5.1 Festlegen der Schnittstelle Bevor du mit der Programmierung beginnst, musst du dir einige Gedanken über die Schnittstelle zwischen

Mehr

Objekt-Orientierte Programmierung

Objekt-Orientierte Programmierung Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Vorlesung im Herbstwintersemester 2007. Autorisierte studentisch Lösungen zu Aufgabenblatt 2

Vorlesung im Herbstwintersemester 2007. Autorisierte studentisch Lösungen zu Aufgabenblatt 2 Praktische Informatik I Vorlesung im Herbstwintersemester 2007 Autorisierte studentisch Lösungen zu Aufgabenblatt 2 zusammengestellt von Iva Tsvetkova 9.10.2007 1.Präsenzaufgaben 1.1 Entwurf einer Verwaltung

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Objektorientierung Grundbegriffe

Objektorientierung Grundbegriffe Objektorientierung Grundbegriffe Um Java programmieren zu können, ist es wichtig, einige objektorientierte Grundkenntnisse zu besitzen, denn die Sprache setzt voll auf dem OO-Paradigma auf. 3.1 Klassen

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

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

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

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

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

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

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Programmieren - Vererbung & Polymorphie

Programmieren - Vererbung & Polymorphie Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

Kapitel 3 Das Projekt Bankkonto Seite 1

Kapitel 3 Das Projekt Bankkonto Seite 1 Kapitel 3 Das Projekt Bankkonto Seite 1 3 Das Projekt Bankkonto Nun wirst du dich etwas gründlicher mit dem Quelltext einer Klasse beschäftigen. Du lernst, wie zwei Objekte eine gemeinsame Aufgabe erledigen.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

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

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

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

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

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

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Einführung in die Programmierung für NF. Vererbung

Einführung in die Programmierung für NF. Vererbung Einführung in die Programmierung für NF Vererbung Ziele Vererbungsprinzip der objektorien=erten Programmierung verstehen und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

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

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Aufgabe 3. Assoziation

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

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

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Software Engineering Klassendiagramme weiterführende Konzepte

Software Engineering Klassendiagramme weiterführende Konzepte Software Engineering Klassendiagramme weiterführende Konzepte Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Klassenattribut: static Implementierung in Java public

Mehr

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Grundlagen Programmierung

Grundlagen Programmierung 1. Aufgabe (Spielen mit Objekten) Gegeben sei der auch von der Veranstaltungsseite erhältliche Programmcode auf der rechten Seite, der im Detail zuerst nicht verstanden werden muss. a) Erzeugen Sie sich

Mehr

Kapitel 19: Klassen und Unterklassen

Kapitel 19: Klassen und Unterklassen Kapitel 19: Klassen und Unterklassen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

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

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon

Mehr

Grundlagen der Informatik Objektorientierte Software-Entwicklung

Grundlagen der Informatik Objektorientierte Software-Entwicklung Grundlagen der Informatik Objektorientierte Software-Entwicklung Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Inhalt: Version 1.7.5

Inhalt: Version 1.7.5 Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009 PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2008/2009 FB Informatik

Mehr

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

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

Einführung in die Programmierung mit Java. Hörsaalübung Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung

Mehr

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

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr