12 Klassen in Java Instanz- und Klassenbestandteile

Größe: px
Ab Seite anzeigen:

Download "12 Klassen in Java. 12.1 Instanz- und Klassenbestandteile"

Transkript

1 12 Klassen in Java Nun soll es endlich daran gehen, in Java eigene Klassen zu erstellen. Wir schließen hier an der in in Kapitel?? begonnenen Diskussion über Klassen und Objekte an. Wenn Ihnen die Inhalte von Kapitel?? nicht mehr geläufig sind, sollten Sie es nun noch einmal lesen Instanz- und Klassenbestandteile Bevor wir beginnen, Klassen zu programmieren, müssen wir unsere Vorstellung von Klassen etwas revidieren Sie wissen bisher, daß eine Klasse ein Bauplan für Objekte ist. Sie ist aber noch mehr genau wie Objekte kann auch eine Klasse Variablen und Methoden enthalten (eine Java Klasse ist aber selbst kein Objekt). Die Klasse hat also zwei Funktionen: Zum einen ist die Klasse der Bauplan von Objekten in der Klasse ist beschrieben, welche Attribute die Objekte tragen sollen, und auch das Verhalten der Objekte ist in der Klasse durch Methoden beschrieben. Zur Erinnerung: Die Methoden und Attribute der Objekte nennt man Instanzmethoden und Instanzvariablen. Von jeder Instanzvariable hat jedes Objekt seine eigene, private Kopie. Instanzmethoden können nur im Zusammenhang mit einem Objekt verwendet werden, und aus Instanzmethoden ist der direkte Zugriff auf die Instanzvariablen des Objektes möglich. Zum anderen kann auch eine Klasse selbst Methoden und Attribute besitzen. Die der Klasse zugeordneten Methoden und Attribute nennt man Klassenmethoden und Klassenvariablen oder auch statische Methoden und statische Variablen. Von jeder Klassenvariable gibt es nur eine einzige Kopie pro Klasse, und jedes Objekt der Klasse kann darauf zugreifen. Insofern teilen sich alle Objekte der Klasse die Klassenvariablen. Da von jeder Klassenvariable nur ein Exemplar pro Klasse vorhanden ist, greifen alle Objekte auf dieselben Klassenvariablen zu die Änderung einer Klassenvariable wirkt sich also auf alle Objekte aus, welche diese Variable verwenden. Ihnen ist sicher nicht klar, was wir mit dieser Unterscheidung in Instanzmethoden und Instanzvariablen auf der einen Seite und Klassenmethoden und Klassenvariablen auf der anderen Seite meinen. Nun, daß ein Objekt Methoden und Variablen besitzt, sollte schon im vorigen Text hinreichend klar geworden sein. Wieso aber sollte auch die Klasse Methoden und Variablen besitzen? Dafür gibt es einige Gründe: Eine Instanzmethode kann nur im Zusammenhang mit einem Objekt ausgeführt werden. Manchmal benötigt man aber Methoden, die ohne die Existenz eines Objektes ausgeführt werden können. Ein Beispiel hierfür ist die Ihnen schon bekannte main Methode. Sie erst ermöglicht das Starten von Anwendungen, denn sie kann auch ausgeführt werden, ohne daß bereits Objekte angelegt wurden. Oft benötigen alle Objekte einer Klasse Zugriff auf gemeinsame, von den Objekten unabhängige Daten. Derartige Daten möchte man nicht in den 100

2 Objekten selbst sondern an einer zentralen Stelle speichern, die irgendwie zu den Objekten gehört. Hierzu verwendet man Klassenvariablen. Oft benötigt man in Objekten eine Funktionalität, die zwar logisch zum Objekt gehört, aber nicht auf den Zustand des Objektes angewiesen ist, und die man daher nicht den Objekten sondern woanders zuordnen möchte. Hierzu verwendet man Klassenmethoden. Wir werden Ihnen gleich erzählen, wie man diese verschiedenen Arten von Methoden und Variablen definieren kann. Vorher aber ein Beispiel, das Sie jetzt schon verstehen können müssten: Beispiel: Klasse Auto a 1 public class Auto { 2 3 /** Umrechnungsfaktor PS--KW: 1 PS = kwpsfaktor KW */ 4 static double kwpsfaktor = ; 5 6 String hersteller; 7 int ps; 8 9 Auto( String hersteller, int ps ) { 10 this.hersteller = hersteller; 11 this.ps = ps; void anzeigen() { 15 System.out.println("Auto der Marke " + hersteller); 16 System.out.println("PS : " + ps); 17 int kw = wandlepszukw( ps ); 18 System.out.println("KW : " + kw); 19 System.out.println("(1 PS = " + kwpsfaktor + " KW)"); static int wandlepszukw ( int ps ) { 23 double kw = ps * kwpsfaktor; 24 return (int)kw; static public void main( String[] args ) { Auto mercedes = new Auto("Mercedes", 100); 30 mercedes.anzeigen(); Auto ferrari = new Auto("Ferrari", 500); 33 ferrari.anzeigen(); a Siehe Die obige Klasse definiert eine Klasse namens Auto. In der Klasse sind drei Attribute definiert: In Zeile 6 und 7 ist ein String Attribut namens hersteller und ein int Attribut namens ps definiert. Da diese Variablen nicht als statisch deklariert sind, sind sie Instanzvariablen. Jedes Auto Objekt hat eine eigene Kopie dieser beiden Attribute. Dabei legen die Attribute den Hersteller des Autos und die PS Zahl fest. 101

3 In Zeile 4 ist eine als static ausgezeichnete double Variable namens kwpsfaktor definiert. Diese Variable wird in Zeile 4 mit einem Zahlenwert initialisiert, welcher zur Umrechnung von Pferdestärken in Kilowatt verwendet werden kann. Die Kennzeichnung als static macht aus kwpsfaktor eine statische Variable bzw. eine Klassenvariable. Der Grund, warum die Variablen hersteller und ps als Instanzvariablen deklariert sind, ist klar jedes Auto hat einen Hersteller und eine gewisse PS Zahl und braucht somit seine eigene Kopie dieser beiden Variablen. Man kann diese Attribute von einem Auto nicht trennen. Der Umrechnungsfaktor von PS Werten zu Kilowatt hingegen ist für jedes Auto gleich. Er existiert unabhängig von irgendwelchen Auto Objekten, und es wäre daher nicht angemessen, ihn zu einer Instanzvariable zu machen. Aus diesem Grund haben wir den Umrechnungsfaktor zu einer Klassenvariable gemacht. Damit können alle Auto Objekte auf den Umrechnungsfaktor zugreifen, und es ist sichergestellt, daß alle Auto Objekte denselben Umrechnungsfaktor verwenden. In Zeilen 9 12 sehen Sie eine Methode namens Auto. Ihnen sollte auffallen, daß der Name dieser Methode mit dem Namen der Klasse übereinstimmt. Derartige Methoden nennt man Konstruktoren (was das Wörtchen public bedeutet, erzählen wir Ihnen später noch). Ein Konstruktor wird beim Erzeugen eines Objektes benutzt, um die Instanzvariablen des Objektes zu initialisieren. Wir verwenden den Konstruktor zweimal in der main Methode in Zeile 29 wird ein Auto Objekt namens mercedes erzeugt, und in Zeile 32 wird ein Auto Objekt namens ferrari erzeugt. Beide Male wird der Konstruktor verwendet. Im Kapitel 10 haben wir bereits erläutert, wozu Konstruktoren da sind. Vielleicht sollten Sie sich dieses Kapitel nochmal anschauen? In Zeilen wird eine Methode void anzeigen() definiert. Dies ist eine Instanzmethode, welche ein Auto Objekt anzeigen kann. Als Instanzmethode kann sie direkt auf die Attribute des Objektes zugreifen. Beim Aufruf muß ihr daher ein Objekt angegeben werden. Die anzeigen() Methode wird in Zeile 30 und in Zeile 33 aufgerufen. Dabei wird sie einmal im Objekt mercedes und einmal im Objekt ferrari aktiviert. Beachten Sie bitte auch, daß die anzeigen() Methode auf die Klassenvariable kwpsfaktor zugreifen kann dies geschieht in Zeile 19. In der anzeigen() Methode wird in Zeile 17 eine Methode namens wandlepszukw aufgerufen, um die PS Zahl des Autos in den Kilowatt Wert umzuwandeln. Die wandlepszukw Methode ist in Zeilen definiert. Da sie als static ausgezeichnet ist, ist sie keine Instanz sondern eine Klassenmethode. Als solche kann sie auch auf alle Klassenvariablen (in diesem Fall nur kwpsfaktor), nicht aber auf Instanzvariablen zugreifen. Der Grund, daß die wandlepszukw Methode als Klassenmethode und nicht als Instanzmethode definiert wurde, sollte klar sein: Die Wandlung eines Pferdestärken in einen Kilowatt Wert ist nicht von einem konkreten Auto Objekt abhängig. Es wäre daher nicht angemessen, diese Methode als Instanzmethode zu definieren. Schließlich noch ein Wort zur main Methode auf Zeile 27 34: Diese Methode ist durch die Definition als static eine Klassenmethode, ist also nicht mit einem Objekt assoziiert. Die main Methode macht die Klasse ausführbar. 102

4 In der main Methode werden zwei Objekte namens mercedes und ferrari definiert, und es werden die anzeigen() Methoden beider Objekte aufgerufen Zugriff auf Methoden und Attribute In Kapitel 10.4 haben wir zwar bereits beschrieben, wie man auf die Bestandteile von Objekten zugreift. Das soll hier nochmal rekapituliert werden: Sie können sich die Java Philosophie so vorstellen, daß ein Objekt Attribute und Methoden enthält. Wenn man auf die Attribute zugreifen oder die Methoden verwenden will, muß man in das Objekt hineingreifen. Dies geschieht in Java durch den Punkt.. Will man auf etwas in einem Objekt zugreifen, schreibt man hinter den Objektnamen einen Punkt und dahinter den Namen dessen, worauf man zugreifen möchte. Will man von außen auf ein Attribut attribut in einem Objekt einobjekt zugreifen oder eine Methode methode() aufrufen, schreibt man einobjekt.attribut; // oder einobjekt.methode(); Genauso wie man auf die Inhalte eines Objektes zugreift, kann man auch auf in einer Klasse enthaltene Klassenvariablen und Klassenmethoden zugreifen. Auch hier benutzt man den Punkt. Wenn eine Klasse namens EineKlasse eine Klassenvariable namens klassenvar oder eine Methode klassenmethode() kann man hierauf von außen wie folgt zugreifen: EineKlasse.klassenVar; // oder EineKlasse.klassenMethode(); Der Punkt dient also dazu, von außen auf die Inhalte eines Objektes oder einer Klasse zuzugreifen. Ein Objekt kann auf seine Instanzvariablen, Klassenvariablen, Instanzmethoden und Klassenmethoden direkt zugreifen. Genauso können Sie in einer Klassenmethode direkt auf die Klassenattribute zugreifen. Beispiel: Die folgende Klasse verwendet die eben definierte Klasse Auto. Die kompilierte Datei UseAuto.class sollte sich im gleichen Verzeichnis wie Auto.class befinden, damit sie funktioniert: 103

5 Klasse UseAuto a 1 class UseAuto { 2 3 static public void main( String[] args ) { 4 5 Auto vw = new Auto("VW", 70); 6 7 System.out.println( vw.hersteller ); 8 System.out.println( vw.ps ); 9 10 vw.hersteller = "Volkswagen"; 11 vw.ps = 80; vw.anzeigen(); System.out.println("Der Umrechnungsfaktor ist: " + 16 Auto.kwpsfaktor); Auto.kwpsfaktor = ; 19 System.out.println("Umrechnungsfaktor wurde geändert"); vw.anzeigen(); a Siehe In Zeile 5 wird ein Auto Objekt namens vw erzeugt. Auf dessen Attribute wird in Zeilen 7 8 zugegriffen. In Zeile 10 und 11 werden die Attribute des Objektes von außen geändert. Der dann erfolgte Aufruf der anzeigen() Methode beweist, daß wir von außen den Zustand des Objektes verändert haben. In Zeile greifen wir von außen auf die Klassenvariable kwpsfaktor zu. In Zeile 18 erdreisten wir uns sogar, diese von außen auf einen falschen Wert zu setzen. Da die Umrechnungsroutine der Auto Klasse auf diese Klassenvariable angewiesen ist, haben wir damit auch unser vw Objekt beeinflußt ab sofort funktioniert die Umrechnung von PS in KW nur noch fehlerhaft, wie der Aufruf der anzeigen() Instanzmethode in Zeile 21 beweist. Sie sehen am vorigen Beispiel, daß man durch Eingriffe von außen die Funktionsfähigkeit einer Klasse beeinträchtigen kann. Java bietet Mechanismen an, die derartige Eingriffe in das Innenleben von Klassen und Objekten abwehren. In einem späteren Kapitel werden Sie lernen, wie man wehrhafte Objekte und Klassen entwickeln kann, die Eingriffe von außen abweisen Die Bestandteile einer Java Klasse Nun endlich zum Aufbau einer Java Klasse: Jede Java Klasse beginnt mit der Definition der Klasseneigenschaften dem Klassenkopf gefolgt von einem Block, in welchem die Klasse definiert wird dem Klassenkörper. Vorerst sollten Sie davon ausgehen, daß jede Klasse in einer eigenen Datei enthalten ist. Der Name dieser Datei ist der Klassenname gefolgt von der Endung.java. Die Klassendefinition hat in ihrer einfachsten Form den Aufbau class KlassenName // Klassenkopf 104

6 { // Klassenkörper Die Beschreibung der Klasseneigenschaften im Klassenkopf werden wir später noch ergänzen. Beispielsweise könnte eine kompliziertere Klasse auch die folgende Eigenschaftsbeschreibung haben: public class MyClass extends AnotherClass implements MyInterface { // Klassenkörper Eine Klassendefinition besteht also aus zwei Teilen: Dem Klassenkopf, in welchem gewisse später zu erläuternde Eigenschaften der Klasse beschrieben werden und dem Klassenkörper, in welchem die Klasse selbst definiert wird. In der einfachsten Version besteht der Klassenkopf aus dem Text class KlassenName Das Wort class weist den Java Compiler darauf hin, daß nun die Definition einer Klasse folgt. Durch den hinter dem Wort class stehenden Namen erfährt der Compiler den Namen der zu definierenden Klasse. Der Klassenkopf veranlasst den Java Compiler, den darauf folgenden Block als Definition der im Kopf benannten Klasse zu interpretieren. Beachten Sie, daß sich der Klassenkörper von den Ihnen bereits bekannten Anweisungsblöcken unterscheidet der Klassenkörper selbst enthält nämlich im Gegensatz zu den Anweisungsblöcken keine Anweisungen sondern eine Folge von Definitionen. Abstrakt ist ein Klassenkörper wie folgt aufgabaut: class KlassenName { Definition_1 Definition_2... Definition_n Die einzelnen Definitionen definieren dabei entweder Attribute oder Methoden. Es ist auch möglich, in einer Klasse andere Klassen zu definieren, aber das soll zunächst außer acht gelassen werden. Es gibt keine vorgeschriebene Reihenfolge für die einzelnen Definitionen es ist also nicht nötig, alle Attribute vor allen Methoden zu definieren oder umgekehrt. Methoden und Attribut Definitionen dürfen in beliebiger Reihenfolge stehen. Es empfiehlt sich allerdings, die einzelnen Definitionen zusammenzulassen. Meist definiert man zuerst alle Attribute und danach alle Methoden. Wie die Methoden- und Attributdefinitionen aufgebaut sein müssen, wird in den nächsten Abschnitten erklärt. 105

7 12.4 Attribute Ein Attribut wird genauso definiert wie eine Variable: Es wird sein Datentyp oder seine Klasse gefolgt von seinem Namen angegeben. Die Definition eines Attributs muß mit einem Semikolon beendet werden. Wenn die Objekte der Klasse eine Instanzvariable namens instanzvariable des Datentyps Datentyp haben sollen, so wird diese wie folgt definiert (ein funktionierendes Beispiel folgt weiter unten): Datentyp instanzvariable; Soll statt einer Instanzvariable eine Klassenvariable definiert werden, so schreibt man vor die Definition das Wort static. Soll beispielsweise eine Klassenvariable klassenvariable des Typs Datentyp definiert werden, so schreibt man static Datentyp klassenvariable; Genau wie alle Variablendefinitionen kann auch ein Klassenattribut oder ein Instanzattribut schon bei der Definition initialisiert werden. Dazu schreibt man hinter den Namen des Attributes direkt die Initialisierungszuweisung: Datentyp instanzvariable = Initialisierung; static Datentyp klassenvariable = Initialisierung; Wird auf diese Weise eine Instanzvariable initialisiert, so erhält diese Instanzvariable bei jedem neu erzeugten Objekt den angegebenen Wert erhält. Wird hingegen eine Klassenvariable auf diese Weise initialisiert, so erhält die Klassenvariable noch vor der ersten Verwendung der Klasse den angegebenen Wert. Das folgende Beispiel demonstriert die Definition von Instanzvariablen: Beispiel: Hier wird eine Klasse Punkt3D definiert, deren Objekte Punkte im dreidimensionalen Raum repräsentieren. Zunächst definieren wir keine Methoden sondern nur die Attribute der Objekte. Objekte dieser Klasse erhalten drei double Instanzvariablen namens x,y und z, welche die Koordinaten des Punktes beschreiben. Die Klasse ist in dieser Form kompilierbar aber nicht ausführbar, da sie keine main Methode besitzt. 1 class Punkt3Da { 2 3 // Koordinaten: 4 double x; 5 double y; 6 double z; 7 8 Klasse Punkt3Da Falls wir möchten, daß jeder neu angelegte Punkt einen vorher festgelegten Zustand erhält, können wir dies dadurch erreichen, daß wir jede Instanzvariable schon bei der Definition initialisieren. 106

8 Wenn wir uns entscheiden, jeden neu angelegten Punkt auf die Koordinaten (0, 0, 0) zu initialisieren, können wir das so erreichen: 1 class Punkt3D { 2 3 // Koordinaten: 4 double x = 0; 5 double y = 0; 6 double z = 0; 7 8 Klasse Punkt3D Beispiel: Hier noch ein Beispiel ohne tieferen Sinn, in welchem auch Klassenvariable verwendet werden: 1 class InstKlassVar { 2 3 static double klassenvar1 = 0; 4 static double klassenvar2 = 1.3; 5 6 double instanzvar1 = 3; 7 double instanzvar2 = 5; 8 9 Klasse InstKlassVar Und noch eine hoffentlich überflüssige Bemerkung: Als Attribute können natürlich nicht nur primitive Daten sondern auch Objekte anderer Klassen verwendet werden. Beispiel: Das folgende Beispiel verwendet die oben definierte Klasse Punkt3D, um eine Linie von einem Punkt zum anderem im dreidimensionalen Raum zu beschreiben. Eine Linie ist dabei gegeben durch zwei Eckpunkte, welche wir punkt1 und punkt2 nennen, und welche Objekte der Klasse Punkt3D sind: 1 class Linie { 2 3 Punkt3D punkt1, punkt2; 4 5 Klasse Linie 12.5 Definition von Methoden Auch eine Methodendefinition besteht aus zwei Teilen, nämlich dem Methodenkopf und dem Methodenkörper. Abstrakt hat eine Methodendefinition folgenden Aufbau: Methodenkopf { 107

9 // Methodenkörper Dabei beschreibt der Methodenkopf mindestens den Namen der Methode, welche Werte die Methode zur Ausführung benötigt, den Typ der von der Methode zurückgelieferten Daten und ob es sich um eine Instanzmethode oder eine Klassenmethode handelt. Der Methodenkörper besteht aus einer Folge von Anweisungen, welche bei jeder Ausführung der Methode abgearbeitet werden. Beispiel: Die wohl einfachste Methode wird so definiert: void nichtstun() { Diese Methode hat einen leeren Methodenkörper und tut daher beim Aufruf gar nichts. Der Methodenkopf legt fest, daß die Methode den Namen nichtstun hat. Das Wort void bedeutet, daß sie keinen Wert zurückliefert. Der Methodenkopf ist in Java genauso wie in Kapitel?? beschrieben aufgebaut. Eine Instanzmethode namens methodenname, welche einen Wert des Typs RueckgabeTyp zurückliefert und zur Ausführung Werte der Datentypen Typ1 bis TypN benötigt, welche dann in der Methode unter den Bezeichnern wert1 bis wertn angesprochen werden können, wird wie folgt definiert: RueckgabeTyp instanzmethode( Typ1 wert1,... TypN wertn ) Falls eine Methode keinen Wert zurückliefern soll, wird als Rückgabe Typ der Typ void verwendet(eng. void: leer, ungültig). Die zur Ausführung der Methode benötigten Werte wert1 bis wertn nennt man auch formale Parameter der Methode. Soll eine Methode nicht als Instanz sondern als Klassenmethode definiert werden, so ist vor die Methodendefinition noch das Wort static zu setzen: static RueckgabeTyp klassenmethode( Typ1 wert1,... TypN wertn ) Vom Aufbau unterscheiden sich Klassen und Instanzmethoden ansonsten nicht der Unterschied ist der, daß innerhalb von Instanzmethoden auf alle Instanzvariablen eines Objektes sowie auf alle Klassenvariablen der Klasse zugegriffen werden kann, während aus Klassenmethoden nur auf die Klassenvariablen, nicht aber auf Instanzvariablen zugegriffen werden kann. Beispiel: Hier einige Beispiele für gültige Methodenköpfe: 108

10 1 void anzeigen() 2 static void zeilenvorschub( int anzahlzeilen ) 3 static double summiere( double[] werte ) 4 double[] sortiere( double[] werte ) 5 static int searchindex( String[] stringliste, String s2 ) Beschreibung der obigen Methodenköpfen: 1. Eine Instanzmethode namens anzeigen, welche keine Argumente entgegennimmt und keinen Wert zurückliefert. 2. Eine Klassenmethode namens zeilenvorschub, welche einen Parameter vom Typ int entgegennimmt, welcher in der Methode unter dem Namen anzahlzeilen angesprochen werden kann. Diese Methode liefert keinen Wert zurück. 3. Eine Klassenmethode namens summiere, welche ein Array von double Werten entgegennimmt und einen double Wert zurückliefert. Das Array kann im Methodenkörper unter der Variabel werte angesprochen werden. 4. Eine Instanzmethode namens sortiere, welche ein double Array zurückliefert und ein Array aus double Werten namens werte entgegennimmt. 5. Eine Klassenmethode namens searchindex, welche ein String Array namens stringliste und einen String namens s2 entgegennimmt und eine int Wert zurückliefert. Der Methodenkörper besteht aus einer Folge von Anweisungen. Wenn im Methodenkopf Übergabeparameter beschrieben sind, so kann im Methodenkörper auf diese genauso wie auf alle anderen Variablen zugegriffen werden. Dabei werden die formalen Parameter bei jedem Aufruf der Methode durch die Aufrufsparameter ersetzt. Ist eine Methode nicht als void gekennzeichnet, so muß sie ein Ergebnis an den Aufrufer zurückübermitteln. Dazu wird der return Befehl verwendet. Der return Befehl gibt einen Wert zurück und beendet dabei die Bearbeitung der Methode. In einer Methode darf der return Befehl beliebig oft verwendet werden. Es dient aber normalerweise nicht der Übersichtlichkeit und dem besseren Verständnis des Programmes, wenn man viele return Befehle in einer Methode benutzt. Abstrakt wird der return Befehl wie folgt benutzt: return Wert; Der zurückgegebene Wert muß dabei den Datentyp haben, welchen die Methode zurückliefern soll. Beispiel: Die folgende Methode würde zu einem Kompilierfehler führen, denn die Methode ist als int deklariert. Der Wert, der im return Befehl zurückgegeben wird, ist aber ein double Wert. int rechne( int wert ) { return wert * 1.355; 109

11 So wäre die Methode korrekt: int rechne( int wert ) { return (int) (wert * 1.355); Der return Befehl darf auch in einer als void deklarierten Methode verwendet werden, um die Methodenbearbeitung abzubrechen und zum Aufrufer der Methode zurückzukehren. In einer void Methode muß allerdings nicht unbedingt ein return stehen, denn am Ende eines jeden Methodenkörpers wird vom Java Compiler automatisch ein return eingefügt. In einer void Methode darf kein Wert zurückgegeben werden. Die Verwendung des return Befehles in einer void Methode sieht so aus: return; Beispiel: Hier ein Beispiel für eine void Methode, in der mehrere return Befehle auftauchen. Wenn man sehr viele Fallunterscheidungen hat, kann es Sinn machen, mehrere return Befehle in einer Methode zu haben. Normalerweise sollten Sie das jedoch vermeiden. In dieser einfachen Methode ist die Verwendung mehrerer return Befehle kein guter Programmierstil: /** Beispiel für unschöne Verwendung mehrerer return--befehle */ void intervallausgabe( int i ) { if( i < 0) return; System.out.println("i ist >= 0"); if( i < 10) return; System.out.println("i ist >= 10"); if( i < 20) return; System.out.println("i ist >= 20"); Hier folgt die Methode nochmal ohne Verwendung von return Befehlen. Durch die Verwendung geschachtelter if Befehle wird die Struktur der Methode im Gegensatz zur ersten Version auf den ersten Blick klar. void intervallausgabe( int i ) { if( i >= 0) { System.out.println("i ist >= 0"); if( i >= 10) { System.out.println("i ist >= 10"); if( i >= 20) { System.out.println("i ist >= 20") 110

12 Nun sollen noch einige Beispiel Methoden gezeigt und besprochen werden. Beispiel: Die folgende Klasse enthält eine Klassenmethode namens quadrierewerte und eine Klassenmethode namens durchschnitt: Klasse DemoMethode a 1 public class DemoMethode { 2 3 static void quadrierewerte( double[] werte ) { 4 for(int i = 0; i < werte.length; i++) { 5 werte[i] *= werte[i]; static double durchschnitt( double[] werte ) { 10 double sum=0; 11 for(int i = 0; i < werte.length; i++) { 12 sum += werte[i]; return sum / werte.length; public static void main( String[] args ) 18 { 19 double[] w1 = {1,2,3,4; 20 double[] w2 = {3,-1,3,4; System.out.println( durchschnitt( w1 ) ); 23 System.out.println( durchschnitt( w2 ) ); quadrierewerte( w1 ); 26 quadrierewerte( w2 ); System.out.println("Durchschnitte nach dem quadrieren:"); 29 System.out.println( durchschnitt( w1 ) ); 30 System.out.println( durchschnitt( w2 ) ); a Siehe Die Klassenmethode quadrierewerte ist als void deklariert und hat einen formalen Parameter, der innerhalb der Methode als werte angesprochen werden kann und vom Typ double[] ist. Da die Methode als void deklariert ist, muß in ihr kein return Befehl stehen. Auf den formalen Parameter kann in der Methode (z.b. in Zeile 5) zugegriffen werden wie auf jede andere Variable auch. In Zeilen 25 und 26 wird die Methode verwendet. Dabei wird anstelle des formalen Parameters werte einmal die Variable w1 und einmal die Variable w2 eingesetzt. In der Methode wird dann der Inhalt der Parameter verändert. Auch die durchschnitt Methode hat einen formalen Parameter namens werte. Da sie keine void Methode ist, muß sie mit return einen Wert zurückliefern. Beispiel: Nun noch ein Beispiel mit einigen Instanzmethoden: Wir erweitern die Punkt3D Klasse aus dem vorigen Abschnitt um zwei Methoden: Die Methode show zeigt einen Punkt auf dem Bildschirm an, die Methode norm berechnet die Euklidische Norm des Punktes, die Me- 111

13 thode move verschiebt den Punkt um eine gewisse Distanz, indem die Koordinaten eines anderen Punktes addiert werden: 112

14 Klasse Punkt3D a 1 /** repräsentiert einen Punkt im dreidimensionalen Raum 2 */ 3 class Punkt3D { 4 5 /** Koordinaten des Punktes 6 */ 7 double x, y, z; /** Default-Konstruktor */ 11 Punkt3D() { 12 x=y=z=0; /** Konstruktor */ 16 Punkt3D( double newx, double newy, double newz ) { 17 x = newx; 18 y = newy; 19 z = newz; /** Anzeigen eines Punktes (textliche Beschreibung) 23 */ 24 void show() { 25 System.out.println("Punkt3D(" + x + "," + y + "," + z + ")"); /** Berechnen der euklidischen Norm eines Punktes 29 */ 30 double norm() { 31 return Math.sqrt( x*x + y*y + z*z ); /** Verschieben eines Punktes 35 */ 36 void add( Punkt3D punkt ) { 37 x += punkt.x; 38 y += punkt.y; 39 z += punkt.z; /** Addieren zweier Punkte */ 43 static Punkt3D add( Punkt3D p1, Punkt3D p2 ) { 44 return new Punkt3D( p1.x + p2.x, p1.y + p2.y, p1.z + p2.z ); /** Subtrahieren zweier Punkte */ 48 static Punkt3D subtract( Punkt3D p1, Punkt3D p2 ) { 49 return new Punkt3D( p1.x - p2.x, p1.y - p2.y, p1.z - p2.z ); /** Demonstriert die Benutzung der Klasse */ 53 static public void main( String[] args ) { 54 System.out.println("Punkt3D--Demo"); 55 Punkt3D p1 = new Punkt3D(); 56 Punkt3D p2 = new Punkt3D(0,3,4); 57 p1.show(); 58 System.out.println(" p1 : " + p1.norm() ); 59 p2.show(); 60 System.out.println(" p2 : " + p2.norm() ); 61 p2.add(p2); 62 p2.show(); 63 System.out.println(" p2+p2 : " + p2.norm() ); a Siehe 113

15 Beispiel: Und hier noch ein Beispiel, welches das vorige Beispiel verwendet. Die Klasse Linie3D muß im selben Verzeichnis gespeichert sein wie die Klasse Punkt3D. Klasse Linie3D a 1 /** repräsentiert eine Linie im 3--dimensionalen Raum 2 */ 3 class Linie3D { 4 5 /** die durch die Linie verbundenen Punkte */ 6 Punkt3D punkt1; 7 Punkt3D punkt2; 8 9 /** Konstruktor */ 10 public Linie3D( Punkt3D p1, Punkt3D p2 ) { 11 punkt1 = p1; 12 punkt2 = p2; /** Laenge der Linie berechnen */ 16 double laenge() { 17 Punkt3D vect = Punkt3D.subtract( punkt1, punkt2 ); 18 return vect.norm(); /** Ausgeben der Linie */ 22 void show() { 23 System.out.print("Linie von : "); 24 punkt1.show(); 25 System.out.print(" zu : "); 26 punkt2.show(); /** Austesten der Klasse */ 30 static public void main( String[] args ) { 31 Punkt3D p1 = new Punkt3D( -1,0,0 ); 32 Punkt3D p2 = new Punkt3D( 1,3,0 ); 33 Linie3D l1 = new Linie3D( p1, p2 ); 34 l1.show(); 35 System.out.println("Laenge : " + l1.laenge() ); Linie3D l2 = new Linie3D(new Punkt3D( 3,1,0 ), 38 new Punkt3D( -2,3,1 )); 39 l2.show(); 40 System.out.println("Laenge : " + l2.laenge() ); a Siehe Mehrere Methoden mit gleichem Namen Java hat eine Fähigkeit, die nur wenige andere Sprachen bieten: Es ist möglich, mehrere Methoden mit gleichem Namen zu benutzen. Damit Java weiß, welche Methode bei einem Aufruf gemeint ist, müssen sich die Methoden dann durch die geforderten Parameter unterscheiden. Beispiel: In der folgenden Klasse ist die Methode max zweimal definiert einmal als Methode, welche zwei int Werte akzeptiert und einmal als Methode, welche zwei double Werte akzeptiert. 114

16 Klasse MethodenDemo a 1 public class MethodenDemo { 2 3 static int max( int a, int b ) { 4 System.out.println("Verwende int-max"); 5 if( a > b ) 6 return a; 7 else 8 return b; static double max( double a, double b ) { 12 System.out.println("Verwende double-max"); 13 if( a > b ) 14 return a; 15 else 16 return b; static public void main( String[] args ) { 20 System.out.println( max(1,2) ); 21 System.out.println( max(2.,3.) ); 22 System.out.println( max(1,2.) ); a Siehe Immer wenn Java einen Methodenaufruf sieht, geht es folgendermaßen vor: Zuerst schaut es nach, ob in der Klasse eine Methode definiert ist, die zu den aktuellen Parametern im Methodenaufruf stehen. Im obigen Beispiel geschieht der Aufruf in Zeile 20 mit zwei int Werten und in Zeile 21 mit zwei double Werten. Dem Compiler ist also sofort klar, daß der Aufruf in Zeile 20 die erste max Methode auf Zeile 3 9 und der Aufruf in Zeile 21 die max Methode auf Zeile meint. Wenn auf die Parameter im Methodenaufruf keine Methode passt, so schaut der Compiler nach, ob er die Argumente im Methodenaufruf in einen anderen Typ verwandeln kann, so daß der Aufruf dann auf eine Definition paßt. Beim Wandeln der Typen werden die Regeln aus Kapitel 8 verwendet. Im obigen Beispiel werden im Aufruf in Zeile 22 ein int und ein double Wert verwendet. Eine solche Methode kennt der Compiler nicht. Er kann aber den int Wert in einen double Wert verwandeln und dann die double Methode verwenden. Kurz gesagt: Sie können beliebig viele Methoden des gleichen Namens schreiben, wenn es eine eindeutige Möglichkeit gibt, anhand der übergebenen Parameter herauszufinden, welche Methode gemeint ist. Sie können insbesondere nicht zwei Methoden schreiben, die sich nur durch den Rückgabewert unterscheiden. Warum ist das so? Nun, man muß ja den Rückgabewert einer Methode nicht unbedingt verwenden. Zum Beispiel ist folgender Programmtext legal: 115

17 int rechne(int i) { return i * 2; public static void main(string[] args) { rechne(5); reche(3); Wenn Sie nun mehrere Methoden definieren, die die gleichen Parameter definieren aber unterschiedliche Rückgabewerte haben, hätte Java keine Möglichkeit herauszufinden, welche Methode Sie meinen. Beispiel: Das folgende Beispiel würde nicht kompilieren, da sich die beiden Methoden nur durch den Rückgabewert unterscheiden. public class MethodenDemo2 { int rechne( int i ) { return i*2; double rechne( int i ) { // Fehler return i*3.0; 12.7 Konstruktoren Konstruktoren sind besondere Methoden, welche beim Erzeugen von Objekten benutzt werden. Jedesmal wenn ein Objekt erzeugt wird, wird vom Java Laufzeitsystem zunächst Speicher für das Objekt bereitgestellt, d.h. für jede Instanzvariable des Objektes wird Speicher belegt. Anschließend wird ein Konstruktor aufgerufen. Der Konstruktor dient dazu, die Instanzvariablen des Objektes zu initialisieren. Ein Konstruktor ist eine Methode, deren Namen gleich dem Namen der Klasse ist. Eine Klasse darf mehrere Konstruktoren besitzen. Welcher Konstruktor bei der Erzeugung eines Objektes aufgerufen wird, richtet sich nach den beim Erzeugen des Objektes durch den new Operator übergebenen Parametern Beispiel: Die folgende Klasse PunktND repräsentiert einen Punkt im N dimensionalen Raum. Sie enthält drei Konstruktoren: 116

18 Klasse PunktND a 1 /** Demonstriert Verwendung von Konstruktoren */ 2 class PunktND { 3 4 static int defaultdimension = 3; 5 6 double[] koord; 7 8 PunktND() { 9 koord = new double[ defaultdimension ]; 10 for(int i=0; i < koord.length; i++) { 11 koord[i] = 0.0; PunktND( double[] newkoord ) { 16 koord = new double[ newkoord.length ]; 17 for(int i=0; i < koord.length; i++) { 18 koord[i] = newkoord[i]; PunktND( double x, double y, double z) { 23 koord = new double[ 3 ]; 24 koord[0] = x; 25 koord[1] = y; 26 koord[2] = z; void show() { 30 System.out.print("Punkt im " + koord.length + "-D Raum ("); 31 for(int i = 0; i < koord.length; i++) { 32 System.out.print( " " + koord[i] + " " ); System.out.println(")"); public static void main( String[] args ) { new PunktND().show(); double[] k1 = {3.5, 2.3, 2.1, 4; 42 PunktND p1 = new PunktND(k1); 43 p1.show(); new PunktND( 1, 2, 3).show(); a Siehe Der erste Konstruktor, PunktND() wird in Zeilen 9 14 definiert. Er wird in Zeile 39 aufgerufen. Beachten Sie bitte, daß in Zeile 39 zwar durch den new Operator ein neues Objekt angelegt wird; dieses wird aber keiner Variable zugewiesen. Der zweite Konstruktor, PunktND( double[] ) wird in Zeilen definiert. Er wird in Zeile 42 verwendet. In Zeile wird ein weiterer Konstruktor, PunktND(double,double,double) definiert, welcher auf Zeile 45 verwendet wird. Auch hier wird das durch den new Operator erzeugte Objekt keiner Variable zugewiesen. 117

19 12.8 Die Parameterübergabe an eine Methode Wie werden Parameter an eine Methode übergeben? Das wollen wir am folgenden Beispielprogramm besprechen: Beispiel: Klasse ParamUebergabe a 1 class ParamUebergabe { 2 3 static void change( int a ) { 4 System.out.println("a ist " + a); 5 a = 5; 6 System.out.println("a ist jetzt " + a); static void change( int[] a ) { 10 System.out.println("a[0] ist " + a[0]); 11 a[0]=5; 12 System.out.println("a[0] ist jetzt " + a[0]); static public void main( String[] args ) { 16 int i = 3; 17 change( i ); 18 System.out.println("In main ist i = " + i ); int arr[] = {2,3,4; 21 change( arr ); 22 System.out.println("In main ist arr[0] = " + arr[0] ); a Siehe Wenn Sie das Programm starten, erhalten Sie folgende Ausgabe: a ist 3 a ist jetzt 5 In main ist i = 3 a[0] ist 2 a[0] ist jetzt 5 In main ist arr[0] = 5 Wie Sie sehen, wirkt sich die Änderung des Parameters a innerhalb der ersten change Methode nicht auf die Variable i im Hauptprogramm aus. Hingegen wirkt sich die Änderung am Array in der zweiten change Methode auf das Hauptprogramm aus. Den Grund für dieses unterschiedliche Verhalten haben wir bereits in einem vorigen Kapitel erklärt in Kapitel 11.5 haben wir Ihnen den Unterschiend zwischen Referenztypen und primitiven Typen erläutert. Genau dieser Unterschied ist es, der bewirkt, daß das Array in der Methode verändert, die int Variable jedoch nicht. Wenn Java einen Methodenaufruf sieht, so erzeugt es für jeden Parameter der Methode eine Variable und weist diesen die übergebenen Variablen zu. 118

20 Wenn Sie sich noch an die Ausführungen über die Referenztypen erinnern, sollte Ihnen nun sofort einleuchten, warum die Variable des primitiven Datentyps nicht verändert und die Array-Variable verändert wurde Zusammenfassung Sie sollten nun die folgenden Fragen beantworten können: Was ist der Unterschied zwischen Klassen- und Instanzvariablen? Was ist der Unterschied zwischen Klassen- und Instanzmethoden? Auf welche Variablen kann in einer Klassenmethode zugegriffen werden? Auf welche Variablen kann in einer Instanzmethode zugegriffen werden? Wie greift man auf eine Klassenvariable zu, wie greift man auf eine Instanzvariable zu? Wie unterscheidet sich ein Klassenkörper von einem Anweisungsblock? Wie definiert man Klassenvariablen und Instanzvariablen? Wie unterscheiden sich Klassenmethoden und Instanzmethoden? Wie definiert man einen Konstruktor und was tut er? Unter welchen Umständen dürfen innerhalb einer Klasse mehrere gleichnamige Instanz- oder Klassenmethoden definiert sein? Besprechen Sie die Unterschiede zwischen Primitiven Datentypen und Referenztypen bei der Wertübergabe an eine Methode. 119

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

Teil 2: Weitere Aspekte der Objektorientierung

Teil 2: Weitere Aspekte der Objektorientierung Teil 2: Weitere Aspekte der Objektorientierung Klassenvariablen So wie es Instanzvariablen gibt, die zu einer gewissen Instanz (Objekt) gehören und deren Attribute speichern, so gibt es aus Klassenvariablen:

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

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

Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; } Konstruktor spezielle Methode zum Initialisieren bei Erzeugen eines Objekts mit new trägt Namen der Klasse hat keinen Rückgabetyp keiner angegeben: Compiler erzeugt Standard-Konstruktor (analog: Attribute

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

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

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

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

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

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich. Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-operators gleich die Dimension zugewiesen

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

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

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 08: Mehr zu Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Wiederholung Heutige Agenda Verwendung der ArrayList 2. Teil: Weitere Aspekte der OO

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 28 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 28 1 Überblick: Variablenarten 2 Lokale Variablen 3 Lokale Variablen

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

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

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

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

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

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

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

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Objektzugriff Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Attribute sind in der Klasse mit Datentyp und Namen deklariert im Objekt sind sie mit jeweils

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Programmiertechnik Klassenvariablen & Instantiierung

Programmiertechnik Klassenvariablen & Instantiierung Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen

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

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 10 Verweise und Referenzen Inhalt von Kapitel 10 Verweise und Referenzen 10.1 Das Schlüsselwort this Definition Verwendungszweck Klassenmethoden EINSCHUB: Musterlösung zu Übung 4.1 10.2 Objektreferenzen

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

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

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

Grundlagen der Objektorientierten Programmierung - Methoden -

Grundlagen der Objektorientierten Programmierung - Methoden - Methoden In ihrem formalen Aufbau entsprechen Java-Methoden den Funktionen in C und C++. Eine Methode dient dazu, eine häufig benötigte Folge von Anweisungen unter einem Namen zusammenzufassen und zum

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition

Mehr

2. Unterprogramme und Methoden

2. Unterprogramme und Methoden 2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf

Mehr

1 Einleitung Generizität Syntax... 2

1 Einleitung Generizität Syntax... 2 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................

Mehr

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

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

Mehr

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);

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); 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); Darf hier nicht stehen! Compiler sagt: Missing return statement

Mehr

Propädeutikum Programmierung in der Bioinformatik

Propädeutikum Programmierung in der Bioinformatik Propädeutikum Programmierung in der Bioinformatik Java Klassen und Objekte Thomas Mauermeier 27.11.2018 Ludwig-Maximilians-Universität München Rückblick Imperative Programmierung Variablen Fallunterscheidungen

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

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

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

C++ - Objektorientierte Programmierung Polymorphie

C++ - Objektorientierte Programmierung Polymorphie C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie

Mehr

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Parameter-Übergabe-Mechanismen in Java und in anderen Sprachen. 1. Methoden vereinbaren mit Parametern Wenn man (z.b. in Java) eine Methode

Mehr

3.2 Datentypen und Methoden

3.2 Datentypen und Methoden Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) Übungsorganisation Bringen Sie Ihren Labtop in die Übungen mit! 09.10.2017 CuP - VO 2 Programmieren 1. Definition der Aufgabe, die das Programm lösen soll. 2.

Mehr

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen? Kapitel 3 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Anweisungen, Variablen Arten von Anweisungen Variablen Konstanten Höchste Zeit für ein Programm Gültigkeitsbereich von Variablen

Mehr

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

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Objektorientierung. Marc Satkowski 20. November C# Kurs

Objektorientierung. Marc Satkowski 20. November C# Kurs Objektorientierung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Weiterführende Verzweigungen Tertiäre-Verzweigung switch case 2. Schleifen Zählschleife (for) break & continue 3. Objektorientierung

Mehr

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

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

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

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Lokale Variablen 2 Lokale Variablen in Blocks 3 Lokale Variablen

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

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

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

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

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java

Mehr

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

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

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Christian Schamott 1 / 26 Übersicht Gemeinsamkeiten 4 Arten geschachtelte Klassen Elementklasse Lokale Klassen Anonyme Klassen Statisch geschachtelte Klassen Christian Schamott 2

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

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

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Softwareentwicklung I (IB) Objekte Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:09 Inhaltsverzeichnis Neue Typen durch Klassen............................. 2

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

Ausgabe:

Ausgabe: Aufgabe 2.10: Schreiben Sie ein Programm, das zunächst die Quadratzahlen zu den Zahlen 1-10 mit Hilfe einer While- Schleife und danach die Quadratzahlen zu den Zahlen 3, 6, 9,.., 30 mit Hilfe einer For-Schleife

Mehr

10.4 Konstante Objekte

10.4 Konstante Objekte 10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären

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

Objektorientiertes Programmieren (Java)

Objektorientiertes Programmieren (Java) Grundlagen Objektorientiertes Programmieren (Java) Java folgt gewissen Rechtschreibregeln die Syntax. Diese besagt, dass hinter jeden Befehl ein Semikolon( ; ) stehen muss, damit der Computer weiß, dass

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

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

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

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

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

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

Mehr

Programmierung für Mathematik HS11

Programmierung für Mathematik HS11 software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Bis jetzt kennen wir (fast) nur primitive Datentypen. Diese entsprechen weitestgehend der Hardware des Rechners (z.b. besitzt ein Rechner Hardware um zwei floats zu addieren).

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Christian-Albrechts-Universität zu Kiel CAU 8-1 Objektorientiertes Programmieren Die Programme, die bisher in diesem Kurs verwendet wurden, sind alle klein und überschaubar

Mehr

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen Java programmieren mit JavaKara Eine Zusammenfassung in Beispielen Kleeblätter in einer Zeile zählen @Override public void mymainprogram() { int anzahlkleeblaetter = 0; for (int x = 0; x < world.getsizex();

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

Java-Applikationen (Java-Programme)

Java-Applikationen (Java-Programme) Java-Applikationen (Java-Programme) Eine erste Applikation: 1 2 3 4 5 6 7 8 9 10 // Quelltext HalloWelt.java // Programm gibt den Text Hallo Welt aus public class HalloWelt public static void main(string[]

Mehr

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

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

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und 17.6.2008 Organisatorisches Um auf die Mailingliste aufgenommen zu werden schicke einfach eine

Mehr

Universität Paderborn Prof. Dr. Heike Wehrheim. Betreutes Arbeiten. Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) GPI, WS 07/08

Universität Paderborn Prof. Dr. Heike Wehrheim. Betreutes Arbeiten. Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) GPI, WS 07/08 Betreutes Arbeiten Ab diese Woche: freitags, 14 16, E-Pool (während Tutorium Knopf) 375 Wiederholung Klasse: class Klassenname { konzeptuelle Einheit der Modellierungsdomäne kapselt Daten und Operationen

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

Programmiertechnik Klassenmethoden

Programmiertechnik Klassenmethoden Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Programm zur Berechung von public class Eval1 { public static void main(string[] args) { java.util.scanner

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

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

Einführung in die Programmierung für NF MI. Übung 07 Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare

Mehr

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

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public

Mehr