8 Elementare Grundlagen der objektorientierten Programmierung

Größe: px
Ab Seite anzeigen:

Download "8 Elementare Grundlagen der objektorientierten Programmierung"

Transkript

1 8 Elementare Grundlagen der objektorientierten Programmierung 8.1 Motivation funktionale und logische Programmiersprachen eher für spezifische Anwendungen (Mathematik, formales Beweisen) prozedurale Programmiersprachen sind/waren weit verbreitet + sequentielle Abarbeitung kommt menschlicher Vorstellungskraft entgegen (mache erst dies, dann jenes) + bei kleineren Problemen schneller Ergebnis keine gute Modellierung unserer Welt Objekte mit Eigenschaften, die mit ihrer Umwelt agieren oft geringe Wiederverwendbarkeit schwierig zu erweitern objektorientierte Programmiersprachen + sehr gute Modellierung der Welt Objekt hat Eigenschaften, z.b. Auto hat Farbe Objekt führt Aktionen aus, die sich oder andere Objekte verändern, z.b. Mensch geht, Mensch fährt Fahrrad Oberbegriff-Beziehung modellierbar Vererbung z.b. Mensch ist Lebewesen + bessere Wiederverwendbarkeit durch Kapselung von Daten und Aktionen in Objekten + einfachere Entwicklung im Team aufwändige Modellierung bekanntester Vertreter der OO-Sprachen: Java + läuft auf (fast) allen Plattformen Internet + riesige Anzahl an APIs(Application Programming Interface) vorhandene Lösungen für Standardprobleme + relativ leicht erlernbar + weit verbreitet Benutzung von Java zum Erlernen des OO-Programmierens 56

2 8.2 Objekte und Klassen Computerprogramm in objektorientierter Sprache Modell eines Ausschnitts der realen Welt In diesem Ausschnitt kommen bestimmte Objekte vor müssen im Programm geeignet repräsentiert werden (Java-)Objekte modellieren Objekte eines Anwendungsbereichs Beispiel: Modellierung dieses Hörsaals vorkommende Objekte: Tische, Stühle, Overhead, Beamer, Studierende, usw. Objekte haben Eigenschaften: Studierende(r) hat Alter, Größe, Matrikelnummer,... Frage: Welches Alter hat ein Studierender? nur für spezifischen Studierenden zu beantworten in der realen Welt unterscheidet man zwischen Kategorien (wie z.b. Studierender) und einzelnen Individuen (wie z.b. der Studierende, der in der ersten Reihe ganz links sitzt) man unterscheidet in der objektorientierten Modellierung (OOM) zwischen sogenannten Klassen = Kategorien und Objekten = Individuen Objekte einer Klasse werden auch als Instanzen bezeichnet Eine Klasse beschreibt auf abstrakte Weise eine bestimmt Art (Kategorie) von Objekten. Objekte repräsentieren individuelle Instanzen einer Klasse. 57

3 8.2.1 Java - Entwicklungsumgebung BlueJ Ziel: Unterstützung für die Einführung in die OO-Programmierung sehr einfache Benutzungsschnittstelle Konzentration auf Objektorientierung und Java keine Probleme mit Rechnerumgebungen, Editoren automatische Visualisierung der Klassenstruktur gute Übersicht statt unübersichtlicher Programmcode einfache und direkte Erzeugung von Objekten zu Klassen problemloser Aufruf von Methoden (Aktionen) von Objekten ohne jedesmal lauffähige Umgebung zu erzeugen Objekte (Instanzen) erzeugen Starten Sie BlueJ und öffnen Sie das Projekt Figuren. (Es sollte folgendes Fenster sichtbar werden) 58

4 In dem Projekt Figuren sind bereits die folgenden Klassen definiert: Leinwand, Kreis, Quadrat, Dreieck Objekte bzw. Instanzen zu den diversen Klassen erzeugt man, indem man mit der rechten Maustaste auf eine Klasse (z.b. Kreis) klickt und new Kreis() auswählt. Um die unterschiedlichen Objekte unterscheiden zu können, benötigt jedes Objekt einen Namen. Wir übernehmen zunächst den vorgeschlagenen Namen kreis1 und im unteren Teil des Fensters erscheint ein rotes Rechteck: Obiges rote Rechteck repräsentiert einen spezifischen Kreis mit dem Namen kreis1. Konvention: Namen einer Klasse beginnen mit Großbuchstaben (z.b. Kreis), Namen von Objekten mit Kleinbuchstaben (z.b. kreis1) einfache Unterscheidung von Objekten und Klassen. Wir wollen natürlich nicht einfach Objekte um ihrer selbst willen erzeugen, sondern diese Objekte sollen auch etwas sinnvolles tun. 59

5 8.2.3 Methoden Führen Sie einen Rechtsklick auf der Kreis-Instanz kreis1 (Kreis-Objekt) aus. Es erscheint ein Menü mit allen Aktionen (Methoden), mit denen dieser Kreis manipuliert werden kann. Wählen Sie sichtbarmachen aus. Dies bewirkt, dass eine Repräsentation dieses Kreises (kreis1) in einem Fenster angezeigt wird: Wählen Sie nun weitere Aktionen von kreis1 aus (z.b. nachrechtsbewegen, nachuntenbewegen) und versuchen Sie den Kreis kreis1 in die Mitte des Fensters zu bewegen. Wir können mit Objekten kommunizieren, indem wir ihre Methoden aufrufen. Ein Objekt tut üblicherweise etwas, wenn eine seiner Methoden aufgerufen wird. Rufen Sie nun die Methode horizontalbewegen auf. Es erscheint ein Dialogfenster, das Sie um eine Eingabe bittet: 60

6 Geben Sie beispielsweise 50 ein und klicken Sie auf OK. Der Kreis kreis1 bewegt sich um 50 Bildschirmpunkte nach rechts. Methoden können Parameter haben, mit denen zusätzliche Informationen für eine Aktion angegeben werden. Die Methode horizontalbewegen ist somit flexibler als die Methode nachrechtsbewegen oder nachlinksbewegen, da die beiden letzteren Methoden den Kreis nur um eine festgelegte Entfernung bewegen können. Wird beispielsweise die Methode horizontalbewegen aufgerufen, so wird im oberen Bereich des Dialogfensters die Zeile void horizontalbewegen(int entfernung) angezeigt. Dies ist die Signatur der Methode. Die Signatur einer Methode benennt die benötigten Informationen für einen Aufruf der Methode. Der Teil zwischen den Klammern (int entfernung) liefert Informationen über die benötigten Parameter. Für jeden Parameter wird ein Typ und ein Name definiert. Die Signatur im obigen Beispiel sagt aus, dass die Methode horizontalbewegen einen Parameter vom Typ int mit dem Namen entfernung erwartet. Der Name sollte dabei einen Hinweis auf die Bedeutung des Parameters geben. Ein Typ gibt an, welche Art von Werten ein Parameter annehmen kann. Der Typ int beispielsweise bezeichnet ganze Zahlen (aus dem Englischen integer). Die Parameter der Methoden zum Bewegen und der Methode groesseaendern sind alle von diesem Typ. Hat eine Methode keine Parameter, folgen auf den Namen nur leere Klammern. Betrachten wir nun die Methode farbeaendern. 61

7 Der Typ String signalisiert, dass eine Zeichenkette (z.b. ein Wort, ein Satz) erwartet wird. Zeichenketten werden immer in doppelten Anführungszeichen angegeben. Der Aufrufdialog enthält außerdem einen Textabschnitt, den wir als Kommentar bezeichnen (// am Zeilenanfang). Kommentare werden angegeben, um dem menschlischen Benutzer Informationen über Klassen, Objekte und Methoden zu geben. Neben den Datentypen int und String unterstützt Java etliche weitere Datentypen. Diese werden wir zu einem anderen Zeitpunkt kennen lernen. Erzeugen Sie nun eine Instanz zu Dreieck und rufen hierfür die Methode groesseaendern auf. Die Signatur lautet: void goesseaendern(int neuehoehe, int neuebreite) Diese Methode hat zwei Parameter. Im Allgemeinen kann eine Methode beliebig viele Parameter haben, die jeweils durch Komma getrennt sind. 62

8 8.2.4 Zustand von Objekten Erzeugen Sie zunächst mehrere Kreisinstanzen, indem Sie mehrfach den Eintrag new Kreis() aus dem Kontextmenü der Klasse Kreis auswählen. Machen Sie alle Instanzen sichtbar, bewegen Sie sie an unterschiedliche Positionen und färben sie unterschiedlich ein. Von jeder Klasse können (im Prinzip) beliebig viele Instanzen erzeugt werden. Jedes Objekt hat seine eigene Position, Farbe und Größe, die jeweils durch den Aufruf einer entsprechenden Methode diese Objekts modifiziert wird. Die Menge dieser konkreten Werte für ein Objekt wird als Zustand bezeichnet. In BlueJ kann der Zustand eines Objekts sichtbar gemacht werden, indem im Kontextmenü der Eintrag inspect ausgewählt wird. Es erscheint der sogenannte Objektinspektor: Wenn Sie nun für dieses Objekt eine Methode aufrufen, so verändert sich der Zustand des Objekts. Die Einträge oder Attribute von Objekten werden Datenfelder oder nur Felder genannt. 63

9 Objekte haben einen eigenen Zustand, der durch Werte repräsentiert wird, die in Datenfeldern gehalten werden. Bei der Inspektion von unterschiedlichen Objekten stellen wir fest, dass alle Instanzen derselben Klasse gleiche Felder haben. D.h. Anzahl, Typen und Namen der Datenfelder sind gleich, nur der Wert kann unterschiedlich sein. Instanzen unterschiedlicher Klassen haben i.a. auch unterschiedliche Datenfelder. Dies ist so, weil Anzahl, Typen und Namen von Datenfeldern nicht im Objekt, sondern in der zugehörigen Klasse definiert werden. Z.B. die Klasse Kreis definiert, dass jede Kreisinstanz fünf Datenfelder hat und zwar durchmesser, xposition, yposition, farbe und istsichtbar. Zudem werden auch die Typen der Datenfelder definiert. Wir lernen hier den dritten Datentyp kennen, nämlich boolean, der nur die beiden Werte true und false annehmen kann. Wird eine Instanz zu Kreis erzeugt, hat diese Instanz automatisch diese Datenfelder, die dann jeweils mit unterschiedlichen Werten belegt werden können. 64

10 65

11 8.2.5 Objektinteraktion Wir wollen nun mit einem anderen Projekt arbeiten, d.h. wir schließen das Projekt Figuren und öffnen das Projekt Zeichnung. Erzeugen Sie eine Instanz zu Zeichnung und rufen Sie die Methode zeichne() auf. Es erscheint folgende Zeichnung: Im Prinzip hätten wir obige Zeichnung auch mit dem Projekt Figuren erzeugen können. Wir hätten jedoch zwei Quadrat-, eine Dreiecks-, und eine Kreisinstanz manuell erzeugen müssen und für die verschiedenen Instanzen entsprechende Methoden für Lage, Größe und Farbe aufrufen müssen. In der Praxis ist dies mühsam erzeuge Klasse, die diese Arbeit automatisch erledigt Methode zeichne() in Klasse Zeichnung. Hierzu muss die Methode zeichne() in der Lage sein andere Objekte zu erzeugen und zu manipulieren. Objekte können miteinander Kommunizieren, indem sie gegenseitig ihre Methoden aufrufen. Zudem können Objekte andere Objekte erzeugen. Frage: Wie schreibt man so eine Klasse für solch ein Objekt? Wir wollen uns deshalb den sogenannten Quelltext der Klasse Zeichnung 66

12 ansehen, indem im Kontextmenü der Klasse Zeichnung der Eintrag Bearbeiten aufgerufen wird (bzw. Doppelklick auf die Klasse). 67

13 Class Zeichnung (1/3) /** Diese Klasse definiert eine einfache Zeichnung. Um die Zeichnung auf dem Bildschirm anzeigen zu lassen, muss die zeichne-operation auf einem Exemplar aufgerufen werden. Aber hier steckt mehr drin: Da es eine elektronische Zeichnung ist, kann sie geändert werden. Man kann sie schwarz-weiß anzeigen lassen und dann wieder in Farbe (nachdem sie gezeichnet wurde, ist ja klar). Diese Klasse ist als frühes Java-Lehrbeispiel mit BlueJ Michael Kölling und David J. 1.0 (3. Januar 2003) / public class Zeichnung { private Quadrat wand; private Quadrat fenster; private Dreieck dach; private Kreis sonne; /** Erzeuge ein Exemplar der Klasse Zeichnung / public Zeichnung() { // nichts zu tun hier, alle Exemplarvariablen werden automatisch // mit null initialisiert. /** Zeichne die Zeichnung. / public void zeichne() { wand = new Quadrat(); wand.vertikalbewegen(80); wand.groesseaendern(100); wand.sichtbarmachen(); 68

14 Class Zeichnung (2/3) fenster = new Quadrat(); fenster.farbeaendern( schwarz ); fenster.horizontalbewegen(20); fenster.vertikalbewegen(100); fenster.sichtbarmachen(); dach = new Dreieck(); dach.groesseaendern(50, 140); dach.horizontalbewegen(60); dach.vertikalbewegen(70); dach.sichtbarmachen(); sonne = new Kreis(); sonne.farbeaendern( gelb ); sonne.horizontalbewegen(180); sonne.vertikalbewegen(-10); sonne.groesseaendern(60); sonne.sichtbarmachen(); /** Ändere die Darstellung in schwarz-weiß. */ public void inschwarzweissaendern() { if(wand!= null) // nur wenn schon gezeichnet wurde... { wand.farbeaendern( schwarz ); fenster.farbeaendern( weiss ); dach.farbeaendern( schwarz ); sonne.farbeaendern( schwarz ); /** Ändere die Darstellung in Farbe. / public void infarbeaendern() { 69

15 Class Zeichnung (3/3) if(wand!= null) // nur wenn schon gezeichnet wurde... { wand.farbeaendern( rot ); fenster.farbeaendern( schwarz ); dach.farbeaendern( gruen ); sonne.farbeaendern( gelb ); Der Quelltext ist in der Programmiersprache Java formuliert. Er definiert, welche Datenfelder und Methoden eine Klasse hat, und legt fest, was passiert, wenn eine Methode aufgerufen wird (mehr im nächsten Kapitel). Objektorientiertes Programmieren bedeutet in erster Linie, geeignete Definitionen von Klassen für ein Problem zu erstellen. Der Quelltext einer Klasse legt die Struktur und das Verhalten (Datenfelder und Methoden) aller Instanzen dieser Klasse fest. Wir können nun die Klassendefinition ändern, indem wir den Farbwert für Sonne auf gelb setzen. Verlassen wir nun den Quelltext (Änderung wird automatisch gespeichert), so erscheint das Symbol für die Klasse gestreift, d.h. der Quelltext wurde geändert, aber die Klasse muss noch übersetzt werden (in Maschinensprache). Dies erreichen wir, indem im Quelltextfenster der Knopf compile gedrückt wird. Betrachten wir zur Vertiefung ein weiteres Projekt: Laborkurse. Dieses Projekt ist ein vereinfachter Teil einer Studierendendatenbank, die entworfen wurde, um Studierende in Laborkursen zu verwalten und Kurslisten auszudrucken. Erzeugen Sie nun eine Instanz zur Klasse Student. Es wird hier nicht nur der Name der Instanz abgefragt, sondern auch weitere Parameter. 70

16 Erzeugen Sie nun mehrere Instanzen zur Klasse Student. Rufen Sie nun die Methode gibname an jeder Instanz auf. Wir bemerken, dass Methoden auch ein Ergebnis liefern können. Wir können dies wieder an der Signatur ablesen: String gibname() Der Datentyp String vor dem Namen der Methode spezifiziert den Ergebnistyp. Die bisherigen Methoden, die wir betrachtet haben, lieferten kein Ergebnis. Dies wurde durch das Schlüsselwort void gekennzeichnet. Methoden mit einem Ergebnistyp ermöglichen es uns, Informationen von einem Objekt abzufragen. Methoden können dazu dienen, den Zustand eines Objekts zu ändern oder Informationen über dessen Zustand herauszufinden. Wir erzeugen nun eine Instanz zur Klasse Laborkurs. Rufen Sie die Methode anzahlstudenten auf. Was tut Sie Betrachten wir nun die Methode tragestudentein. Der Parameter ist vom Typ Student. Wir müssen hier also eine Instanz von Student als Parameter übergeben. Diese Instanz wird dann im Laborkurs eingetragen. Als Typ eines Parameters sind auch Klassen zulässig. Beim Methodenaufruf ist eine Instanz dieser Klasse zu übergeben. 71

17 8.2.6 Zusammenfassung Objekt Java-Objekte modellieren Objekte eines Anwendungsbereichs. Klasse Objekte werden durch Klassen erzeugt. Eine Klasse beschreibt eine bestimmte Art von Objekten; Objekte repräsentieren individuelle Instanzen einer Klasse. Methode Wir können mit Objekten kommunizieren, indem wir ihre Methoden aufrufen. Ein Objekt tut üblicherweise etwas, wenn eine seiner Methoden aufgerufen wird. Parameter Methoden können Parameter haben, mit denen zusätzliche Informationen für eine Aufgabe angegeben werden. Signatur Der Kopf einer Methode wird als ihre Signatur bezeichnet. Sie benennt die benötigten Informationen für einen Aufruf der Methode. Typ Parameter haben Typen. Ein Typ definiert, welche Arten von Werten ein Parameter annehmen kann. Als Typ sind auch Klassen zulässig. Eine Klasse, viele Instanzen Von einer Klasse können viele gleichartige Instanzen erzeugt werden. Zustand Objekte haben einen Zustand. Dieser Zustand wird durch Werte repräsentiert, die in Datenfeldern gehalten werden. Methodenaufrufe Objekte können miteinander kommunizieren, indem sie gegenseitig ihre Methoden aufrufen. Quelltext Der Quelltext einer Klasse legt die Struktur und das Verhalten(die Datenfelder und die Methoden) aller Instanzen dieser Klasse fest. Ergebnis Methoden können Informationen über ein Objekt durch einen Ergebniswert zurückliefern. 72

18 8.3 Klassendefinitionen Wir befassen uns hier gründlich mit dem Quelltext einer Klasse und werden die Basiselemente einer Klassendefinition diskutieren: Datenfelder Konstruktoren Methoden Zunächst betrachten wir detailliert ein neues Projekt, nämlich die naive Implementierung eines Ticketautomaten. Diese zunächst sehr einfache Implementierung werden wir im weiteren sukzessive verbessern. Der Ticketautomat in diesem Projekt arbeitet wie folgt: Kunde wirft Geld ein und fordert Ticket an Automat erhält Information, wieviel Geld eingeworfen wurde Automat hat nur eine Ticketart mit Einheitspreis Wir öffnen nun das Projekt Naiver-Ticketautomat unter Kapitel02 und erzeugen eine Instanz Ticketautomat. Experimentieren Sie mit den Methoden dieser Instanz was passiert, wenn Sie zuviel Geld einwerfen was passiert, wenn Sie zu wenig Geld einwerfen und dann ein Ticket drucken Um das Verhalten des Ticketautomaten besser zu verstehen, sehen wir uns den Quelltext der Klasse näher an (Doppelklick auf Klassensymbol). Der Quelltext der meisten Klassen kann in zwei Hauptbestandteile unterteilt werden: äußere Klammer, die die Klasse benennt 73

19 innerer Teil, der die eigentliche Definition darstellt. Im allgemeinen ist eine Klassendefinition wie folgt definiert: public class Klassenname { Datenfelder... Konstruktoren... Methoden... (Die Reihenfolge Datenfelder, Konstruktoren, Methoden ist nicht zwingend, aber man sollte sich selbst an eine bestimmte Reihenfolge halten. In Bluej ist obige Reihenfolge immer eingehalten) Wir wollen uns nun den inneren Teil einer Klasse genauer ansehen Datenfelder Die Klasse Ticketautomat hat drei Datenfelder: preis ist ein Datenfeld für den festgelegten Preis eines Tickets bishergezahlt speichert den Betrag, der eingeworfen wurde, bevor ein Ticket gedruckt wurde gesamtsumme speichert die Summe aller Geldbeträge, die seit seiner Erzeugung eingeworfen wurden. Datenfelder beschreiben und speichern die Daten, die ein Objekt dieser Klasse benutzt. Im Quelltext ist dies wie folgt definiert: 74

20 public class Ticketautomat { // Der Preis eines Tickets dieses Automaten. private int preis; // Der Betrag, der bisher vom Automatenbenutzer eingeworfen wurde. private int bishergezahlt; // Die Geldsumme, die bisher von diesem Automaten eingenommen wurde. private int gesamtsumme; Konstruktor und Methoden wurden hier ausgelassen... Jedes Datenfeld hat seine eigene Deklaration im Quelltext. Vor jeder Deklaration sollte ein Kommentar stehen, der den Zweck des Datenfelds beschreibt. Kommentare werden im Quelltext einer Klasse angegeben, um dem menschlichen Leser Erläuterungen zu geben. Sie haben keinen Einfluss auf die Funktionalität einer Klasse. Ein einzeiliger Kommentar wird durch die beiden Zeichen // eingeleitet, zwischen denen kein Leerzeichen stehen darf. Ausführlichere Kommentare über mehrere Zeilen können mit dem Zeichenpaar /*... Kommentar */ geklammert werden. (siehe Kommentar zur Klasse Ticketautomat.) Die Definitionen der drei Datenfelder sind sehr ähnlich. Alle Definitionen besagen, dass sie private Datenfelder sind. Später werden wir ausführlich hierauf eingehen. Zunächst jedoch vereinbaren wir alle Datenfelder als private. Alle Datenfelder sind vom Typ int und können somit ganze Zahlen speichern (Geldbeträge in Cent). In Instanzen können die Datenfelder zu verschiedenen Zeitpunkten verschiedene Werte enthalten, deshalb werden sie auch Variablen bzw. Instanzvariablen genannt. 75

21 Variablen haben -wie auch Parameter von Methoden- einen Typ und einen Namen. 76

22 8.3.2 Konstruktoren Neben der Definition von Datenfeldern ist ein so genannter Konstruktor zu definieren, mit dem Instanzen zu dieser Klasse generiert und initialisiert werden können. Konstruktoren ermöglichen, dass ein Objekt nach seiner Erzeugung in einen gültigen Zustand versetzt wird, indem den Datenfeldern initiale Werte zugewiesen werden. Konstruktoren heißen immer so, wie die zugehörige Klasse, und besitzen keinen Ergebnistyp (im Unterschied zu Methoden). public class Ticketautomat { Datenfelder hier ausgelassen /** * Erzeuge einen Automaten, der Tickets zum angegebenen Preis * (in Cent) ausgibt. * Zu beachten: Der Preis muss größer als null sein, * der Automat überprüft dies jedoch nicht. */ public Ticketautomat(int ticketpreis) { preis = ticketpreis; bishergezahlt = 0; gesamtsumme = 0; Methoden hier ausgelassen Den beiden Datenfeldern bishergezahlt und gesamtsumme werden im Konstruktor sinnvolle initiale Werte zugewiesen. Für den Ticketpreis ist dies jedoch nicht möglich, da der Preis erst bei der Generierung einer Instanz festgelegt wird. Analog wie bei Methoden wird 77

23 dieser Wert über einen Parameter (definiert über Typ und Namen) übergeben und dem Datenfeld preis zugewiesen. Hinweis: In Java werden alle Datenfelder automatisch je nach Datentyp mit einem vordefinierten Wert belegt (z.b. 0 für int). Wir hätten uns also die Initialisierung der Datenfelder bishergezahlt und gesamtsumme sparen können. Man sollte jedoch immer eine explizite Initialisierung vornehmen, da man ansonsten nicht weiß, ob die implizite Initialisierung gewünscht oder die Initialisierung nur schlicht vergessen wurde. Man könnte sich nun fragen, warum wir das Datenfeld preis überhaupt benötigen, da der Parameter ticketpreis ja den gewünschten Wert bereithält. Parameter von Konstuktoren und Methoden sind jedoch sogenannte formale Parameter, die nur solange existieren wie der Konstruktor bzw. die Methode abgearbeitet wird. Das heißt, nach der Beendigung des Konstruktor- oder Methodenaufrufs kann auf die formalen Parameter nicht mehr zugegriffen werden. Beim Ticketautomaten wäre damit nach der Generierung einer Instanz mittels des Konstruktors der ticketpreis nicht mehr verfügbar. Dahingegen haben die Instanzvariablen die gleiche Lebensdauer wie das zugehörige Objekt. Deshalb wird der Wert des kurzlebigen formalen Parameters ticketpreis an die langlebige Instanzvariable preis übergeben. Dies geschieht mit Hilfe einer sogenannten Zuweisung: preis = ticketpreis; Durch den Zuweisungsoperator = wird der Wert auf der rechten Seite in der Variable der linken Seite gespeichert. Auf der rechten Seite dürfen sogenannte Ausdrücke stehen, die nach der Auswertung einen Wert ergeben, der zugewiesen wird. Ausdrücke sind z.b , preis 2, preis preis + 7 usw. Jede Zuweisung wird durch ; abgeschlossen. Zuweisungen speichern den Wert eines Ausdrucks auf der rechten Seite eines Zuweisungsoperators in der Variablen auf der linken Seite. 78

24 Beachte: Im Normalfall können nur Werte vom gleichen Typ zugewiesen werden, d.h. int int, String String, boolean boolean usw. 79

25 8.3.3 Methoden Die Klasse Ticketautomat hat vier Methoden: gibpreis, geldeinwerfen, gibbishergezahltenbetrag, ticketdrucken Zunächst sehen wir uns die Methode gibpreis an: Kopf Rumpf /** * Liefere den Preis eines Tickets dieses Automaten (in Cent). */ public int gibpreis() { return preis; Methoden bestehen aus zwei Teilen: einem Kopf und einem Rumpf. Der Kopf besteht üblicherweise aus Kommentar und Signatur der Methode. gibpreis ist vom Ergebnistyp int und benötigt keine Parameter. Der Rumpf besteht üblicherweise aus Deklarationen und Anweisungen. gibpreis deklariert keine Datenfelder und besteht aus der einzigen Anweisung: return preis; Diese Rückgabeanweisung sorgt dafür, dass der Wert der Variablen preis zurückgeliefert wird. Der Typ des zurückgelieferten Ausdrucks muss mit dem Ergebnistyp der Methode übereinstimmen. Mit der return Anweisung wird die Abarbeitung einer Methode beendet. Betrachten wir nun die Methode geldeinwerfen: /** * Nimm den angegebenen Betrag (in Cent) als Anzahlung f"ur das * n"achste Ticket. */ 80

26 public void geldeinwerfen(int betrag) { bishergezahlt += betrag; Der Ergebnistyp void dieser Methode besagt, dass geldeinwerfen kein Ergebnis zurückliefert. Zudem wird ein int-parameter mit dem Namen betrag benötigt. Die Anweisung im Rumpf addiert den Wert des Parameters auf den Wert der Variable bishergezahlt. Der Zuweisungoperator += ist eine verkürzte Schreibweise für: bishergezahlt = bishergezahlt + betrag; Da der Ergebnistyp void ist wird keine Rückgabeanweisung benötigt. Die Methode wird mit der Abarbeitung der letzten Anweisung beendet. Betrachten wir nun die komplexeste Methode: ticketdrucken /** * Drucke ein Ticket. * Aktualisiere die eingenommene Gesamtsumme und setze den gezahlten * Betrag auf Null. */ public void ticketdrucken() { // Den Ausdruck eines Tickets simulieren. System.out.println("##################"); System.out.println("# Die BlueJ-Linie"); System.out.println("# Ticket"); System.out.println("# " + preis + " Cent."); System.out.println("##################"); System.out.println();\\ // Die Gesamtsumme mit dem eingezahlten Betrag aktualisieren. gesamtsumme += bishergezahlt; // Die bisherige Bezahlung zur"ucksetzen. bishergezahlt = 0; 81

27 ticketdrucken liefert kein Ergebnis und benötigt keinen Parameter. Die ersten sechs Anweisungen sorgen für folgenden Ausdruck: ################## # Die BlueJ-Linie # Ticket # 500 Cent. ################## Die Anweisungen sind Aufrufe der Methode println im Objekt System.out, das in der Sprache Java zur Ausgabe von Ergebnissen integriert ist. Beachte: Der +-Operator in der vierten Anweisung bedeutet hier die Konkatenation von Zeichenketten, wobei der Wert der Variablen preis als Zeichenkette verwendet wird, da preis nicht in Anführungszeichen "" steht. Der Aufruf der Methode println ohne Parameter (siehe sechste Anweisung) ist zulässig. Es wird eine leere Zeile erzeugt. Die Klasse Ticketautomat weist mehrere Schwächen auf: Sie enthält keine Prüfung, ob der Kunde genug Geld eingeworfen hat, wenn das Ticket gedruckt wird. Sie gibt kein Geld zurück, falls der Kunde zuviel Geld eingeworfen hat. Sie überprüft nicht, ob der Kunde sinvolle Beträge einwirft (z.b. keine negativen Beträge) Sie überprüft nicht, ob der Ticketpreis, der dem Konstruktor übergeben wird, sinvoll ist. Wir wollen uns nun im Folgenden ansehen, wie wir diese Verbesserungen vornehmen können. 82

28 8.3.4 Zusammenfassung und Bewertung des naiven Ticketautomaten Wir haben die interne Struktur der Klasse des naiven Ticketautomaten nun ausführlich untersucht. Wir haben gesehen, dass die Klasse eine schmale äußere Hülle hat, die der Klasse einen Namen gibt, sowie einen sehr viel umfangreicheren Rumpf, der Datenfelder, einen Konstruktor und einige Methoden definiert. Datenfelder halten Werte und ermöglichen Objekten damit, einen Zustand zu halten. Konstruktoren versetzen ein Objekt in einen Anfangszustand, nachdem es erzeugt wurde. Ausgehend von diesem gültigen Anfangszustand ist das Objekt nach seiner Erzeugung in der Lage, angemessen auf Methodenaufrufe zu reagieren. Methoden implementieren das definierte Verhalten der Objekte einer Klasse. Sondierende Methoden liefern Informationen über den Objektzustand, verändernde Methoden ändern den Zustand. Wir haben gesehen, dass Konstruktoren sich von Methoden dadurch unterscheiden, dass sie den gleichen Namen tragen wie die Klasse, in der sie definiert sind. Sowohl Konstruktoren als auch Methoden können Parameter entgegennehmen, aber nur Methoden können einen Ergebnistyp definieren. Ergebnistypen, die nicht void sind, erlauben uns, aus einer Methode ein Ergebnis zurückzuliefern. Eine Methode mit einem Ergebnistyp ungleich void hat eine Rückgabeanweisung als letzte Anweisung in ihrem Rumpf. Rückgabeanweisungen sind nur verwendbar in Methoden, weil Konstruktoren niemals einen Ergebnistyp haben - nicht einmal void. 83

29 8.3.5 Entscheidungen treffen: Bedingte Anweisungen Öffnen Sie nun das Projekt Besserer Ticketautomat und schauen Sie sich den Quelltext genauer an. Die Datenfelder, der Konstruktor und die ersten beiden Methoden sind identisch. Geändert hat sich die Methode geldeinwerfen: /** * Nimm den angegebenen Betrag (in Cent) als Anzahlung f"ur das * n"achste Ticket. Pr"ufe, ob der Betrag sinnvoll ist. */ public void geldeinwerfen(int betrag) { if (betrag > 0) { bishergezahlt += betrag; else { System.out.println("Bitte nur positive Betr"age verwenden: " + betrag); Nun wird bevor der eingeworfene Betrag gutgeschrieben wird, getestet, ob der Betrag größer 0 ist. Dies geschieht mit Hilfe der so genannten if-anweisung, die im allgemeinen wie folgt aussieht: if (führe eine Prüfung durch, die true oder false liefert) { auszuführende Anweisungen, wenn die Prüfung true geliefert hat else { auszuführende Anweisungen, wenn die Prüfung false geliefert hat Im Bedingungsteil steht ein sogenannter Boolscher Ausdruck, der nur die beiden Ergebnisse true oder false haben kann. 84

30 Eine bedingte Anweisung führt eine von zwei Aktionen aus, abhängig vom Ergebnis eines Tests. Analog wird nun in der Methode ticketausgeben geprüft, ob genügend Geld eingeworfen wurde: if (bishergezahlt >= preis) { Details der Ausgabe hier ausgelassen // Die Gesamtsumme um den Ticketpreis erh"ohen. gesamtsumme += preis; // Den Preis von der bisherigen Bezahlung abziehen. bishergezahlt -= preis; else { System.out.println("Sie müssen noch mindestens " + (preis - bishergezahlt) + " Cent einwerfen."); Die Anweisung bishergezahlt -= preis arbeitet analog dem += -Operator, d.h. die obige Anweisung ist eine Abkürzung für: bishergezahlt = bishergezahlt - preis; Entweder kann der Kunde den Restbetrag für ein weiteres Ticket verwenden oder er kann ihn sich auszahlen lassen (Methode wechselgeldauszahlen ). Hier lernen wir ein weiteres Konzept kennen, nämlich lokale Variablen. 85

31 8.3.6 Lokale Variablen Die Methode wechselgeldauszahlen enthält drei Anweisungen und eine Deklaration, die eine neue Variablenart illustriert. public int wechselgeldauszahlen() { int wechselgeld; wechselgeld = bishergezahlt; bishergezahlt = 0; return wechselgeld; Die Variable wechselgeld ist kein Datenfeld der zugehörigen Klasse, da Datenfelder außerhalb von Methoden definiert werden. Sie ist auch kein Parameter, da diese im Kopf einer Methode deklariert werden. Die Variable wechselgeld ist eine lokale Variable, da sie innerhalb einer Methode definiert wird. Eine lokale Variable ist eine Variable, die innerhalb einer Methode deklariert und benutzt wird. Sie ist nur innerhalb dieser Methode zugreifbar und ihre Lebensdauer entspricht der Lebensdauer der Methode (analog den Parametern von Methoden). Lokale Variablen werden oft bei der Deklaration initialisiert, d.h. man könnte die ersten beiden Zeilen der Methode wechselgeldauszahlen wie folgt zusammenfassen: int wechselgeld = bishergezahlt; Lokale Variablen werden analog zu Datenfeldern jedoch ohne private bzw. public definiert. 86

32 8.3.7 Übersicht: Datenfelder, Parameter, lokale Variablen Alle drei Arten von Variablen können einen Wert halten, der ihrem jeweiligen Typ entspricht. Eine Variable vom Typ int beispielsweise kann einen ganzzahligen Wert halten. Datenfelder werden außerhalb von Konstruktoren und Methoden deklariert. Datenfelder halten Daten, die über die gesamte Lebensdauer eines Objekts erhalten bleiben. Sie halten somit den Zustand eines Objekts. Sie haben die gleiche Lebensdauer wie das Objekt, in dem sie definiert sind. Datenfelder haben Klassenweite Sichtbarkeit: Sie sind in der gesamten Klasse zugreifbar und können somit in jedem Konstruktor und jeder Methode ihrer Klasse benutzt werden. Solange ein Datenfeld als private deklariert ist, kann auf es nicht außerhalb der definierenden Klasse zugegriffen werden. Formale Parameter und lokale Variablen existieren nur für die Dauer der Ausführung eines Konstruktors oder einer Methode. Ihre Lebensdauer beträgt nur die Zeit der Ausführung, so dass ihre Werte zwischen den Aufrufen verloren gehen. Sie dienen somit temporärer statt dauerhafter Datenhaltung. Formale Parameter werden im Kopf einer Methode definiert. Sie bekommen ihre Werte von außen, indem sie mit den Werten der aktuellen Parameter des Konstruktor- oder Methodenaufrufs initialisiert werden. Die Sichtbarkeit formaler Parameter ist auf den definierenden Konstruktor oder die definierende Methode beschränkt. Lokale Variablen werden im Rumpf eines Konstruktors oder einer Methode definiert. Sie können initialisiert werden und es kann nur im Rumpf des Konstruktor oder der Methode auf sie zugegriffen werden. Lokale Variablen müssen explizit initialisiert werden, bevor sie in einem Ausdruck benutzt werden dürfen - sie werden nicht automatisch mit einem Standardwert initialisiert. Die Sichtbarkeit lokaler Variablen ist auf den Block beschränkt, in dem sie definiert wurden. Sie sind außerhalb dieses Blocks nicht zugreifbar. 87

33 8.3.8 Zusammenfassung der Konzepte Datenfeld Datenfelder speichern Daten, die ein Objekt benutzt. Datenfelder werden auch als Instanzvariablen bezeichnet. Kommentar Kommentare werden im Quelltext einer Klasse angegeben, um dem meschlichen Leser Erläuterungen zu geben. Sie haben keinen Einfluss auf die Funktionalität einer Klasse. Konstruktor Konstruktoren ermöglichen, dass ein Objekt nach seiner Erzeugung in einen gültigen Zustand versetzt wird. Sichtbarkeit Durch die Sichtbarkeit einer Variablen wird der Bereich innerhalb des Quelltextes definiert, in dem eine Variable zugreifbar ist. Lebensdauer Die Lebensdauer einer Variablen legt fest, wie lange sie existiert, bevor sie zerstört wird. Zuweisung Zuweisungen speichern den Wert auf der rechten Seite eines Zuweisungsoperators in der Variablen, die auf der liken Seite genannt ist. Methode Methoden bestehen aus zwei Teilen: einem Kopf und einem Rumpf. Sondierende Methoden Sondierende Methoden liefern Informationen über den Zustand eines Objekts. Verändernde Methoden Verändernde Methoden ändern den Zustand eines Objekts. println Die Methode System.out.println(...) gibt ihren Parameter auf der Konsole aus. Bedingte Anweisung Eine bedingte Anweisung führt eine von zwei Aktionen aus, abhängig vom Ergebnis einer Prüfung. Boolscher Ausdruck Boolsche Ausdrücke haben nur zwei mögliche Werte: wahr (true) und falsch (false). Sie werden oft verwendet, um die Auswahl zwischen zwei Ausführungspfaden in einer bedingten Anweisung zu treffen. Lokale Variable Eine lokale Variable ist eine Variable, die innerhalb einer Methode deklariert und benutzt wird. Sie ist nur innerhalb der Methode zugreifbar und ihre Lebensdauer entspricht der ihrer Methode. 88

1 Grundlagen der Objektorientierung

1 Grundlagen der Objektorientierung Kapitel 1 Grundlagen der Objektorientierung Seite 1/8 1 Grundlagen der Objektorientierung Dieses Kapitel stellt eine solide, pragmatische Einführung in die fundamentalen Konzepte der Objektorientierung

Mehr

Praktische Informatik 1

Praktische Informatik 1 Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012 Was bisher geschah... Konzepte: Klassen und ihre...... Instanzen, die

Mehr

Kapitel 06. Klassen und Objekte. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 06. Klassen und Objekte. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 06 Klassen und Objekte Inhalt des 6. Kapitels Klassen und Objekte 6.1 Was ist eine Klasse? Definition Die Klasse String 6.2 Klassendefinition äußerer Teil innerer Teil - Datenfelder - Konstruktor

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 Programmierung mit BlueJ

Einführung in die Programmierung mit BlueJ Einführung in die Programmierung mit BlueJ Thema 4 Steuerstrukturen - Verzweigungen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Daten speichern: Datenfelder Instanzvariablen,

Mehr

Informatik 10 Objektorientiertes Modellieren und Programmieren mit Java

Informatik 10 Objektorientiertes Modellieren und Programmieren mit Java Informatik 10 Objektorientiertes Modellieren und Programmieren mit Java 1. Klassen und Objekte Zunächst wollen wir mit Hilfe eines Miniprogramms die Entwicklungsumgebung BlueJkennen lernen. Die Installation

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

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

3. Die Programmiersprache Java

3. Die Programmiersprache Java 3. Die Programmiersprache Java 3.1 Arbeiten mit BlueJ 3.2 Objekte und Klassen 3.3 Klassen und Unterklassen 3.4 Daten und Operationen 3.5 Ausdrücke 3.6 Algorithmische Kernsprache 3.7 Sprachbeschreibung

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

Tag 8 Repetitorium Informatik (Java)

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

Mehr

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH 1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch

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

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

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

1.2 Attribute und Methoden Aufbau einer Java-Klasse: Aufbau einer Java-Klasse: public class Quadrat { int groesse; int xposition; String farbe; boolean istsichtbar; public void sichtbarmachen() { istsichtbar = true; public void horizontalbewegen(int distance){

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

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

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

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

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

1 Aufgaben 1.1 Objektorientiert: (extended-hamster) Sammel-Hamster 1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:

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

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

Am Anfang werden die Attribute deklariert public class Kreis {

Am Anfang werden die Attribute deklariert public class Kreis { Klassendiagramm Kreis Entwerfen Sie ein Klassendiagramm der Klasse Kreis mit allen Attributen und min. drei Methoden. public class Kreis { sichtbar Platz für Atributeund Methoden protected int xposition;

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

Analyse der Klasse Konto

Analyse der Klasse Konto Klasse Konto erzeugt Objekte vom Typ Konto mit gleichen Eigenschaften mit gleichen Fähigkeiten Welche Eigenschaften hat ein Konto? Attribute Datenfelder - Konto hat eine Nummer - Konto hat Inhaber - Konto

Mehr

Variablen in Java. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang. Ziele

Variablen in Java. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang. Ziele Variablen in Java Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 11/04 2 Ziele Unterschiedliche Arten von Variablen in Java verstehen Bestimmen von Gültigkeitsbereich

Mehr

Einstieg in die Informatik mit Java

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

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

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

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

2. Vererbung und Kapselung

2. Vererbung und Kapselung 2. Vererbung und Kapselung Die Objekte der Klasse BALL werden im Gegensatz zu den Objekten von KREIS noch nicht graphisch dargestellt. Um die BALL-Objekte auch graphisch darzustellen zu können, muss BALL

Mehr

Kapitel 1: Die ersten Schritte 1

Kapitel 1: Die ersten Schritte 1 Kapitel 1: Die ersten Schritte Thema: Programmieren Seite: 1 Kapitel 1: Die ersten Schritte 1 Starten Sie Eclipse. Importieren Sie das Eclipse-Projekt scenarios-chapter-1. Gehen Sie in den Unterordner

Mehr

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

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

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp ZAIK Universität zu Köln WS 07/08 1 / 6 Datentypen Arten von Datentypen

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

Java-Programmierung mit NetBeans

Java-Programmierung mit NetBeans Java-Programmierung mit NetBeans Klassen, Objekte, Alternativen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Grundlegende Definitionen - Objekt Ein Objekt ist allgemein ein Gegenstand

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

Fakultät IV Elektrotechnik/Informatik

Fakultät IV Elektrotechnik/Informatik Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

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

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

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

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

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

Praktische Informatik 1

Praktische Informatik 1 Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012 Session 2 Programmierung Begriffe C/C++ Compiler: übersetzt Quellcode

Mehr

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

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden 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

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

Programmieren für Wirtschaftswissenschaftler SS 2015

Programmieren für Wirtschaftswissenschaftler SS 2015 DEPARTMENT WIRTSCHAFTSINFORMATIK FACHBEREICH WIRTSCHAFTSWISSENSCHAFT Programmieren für Wirtschaftswissenschaftler SS 2015 Lucian Ionescu Blockveranstaltung 16.03 27.3.2015 6. Klassen Agenda Klassen und

Mehr

In BlueJ geht es einfach

In BlueJ geht es einfach Arbeiten mit BlueJ Compilieren, Editieren, Objekte erzeugen, Methoden aufrufen, Objekte inspizieren, vorhandene Klassen benutzen, eigene Klassen und Methoden erstellen In BlueJ geht es einfach BlueJ durch

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung

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

Klassendefinitionen verstehen

Klassendefinitionen verstehen Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen

Mehr

Tag 2 Repetitorium Informatik (Java)

Tag 2 Repetitorium Informatik (Java) Tag 2 Repetitorium Informatik (Java) Dozent: Daniela Novac Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Zeichen und

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

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

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

Ein erstes "Hello world!" Programm

Ein erstes Hello world! Programm OOP Henrik Horstmann 14. September 2014 Inhaltsverzeichnis Inhaltsverzeichnis 1 Bedeutung der Symbole...1 2 Die Benutzer Oberfläche von HOOPLU...2 2.1 Projekte öffnen und speichern...2 2.2 Die Klasse Program

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

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

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge

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

Kapitel Was ist ein Header? Was ist ein Body? Header: public Account(String newowner, int newpin)

Kapitel Was ist ein Header? Was ist ein Body? Header: public Account(String newowner, int newpin) Kapitel 2.6 1. Was ist ein Header? Was ist ein Body? Header: public Account(String newowner, int newpin) Body: Alles im Block darunter: [...] 2. Geben Sie die Methodensignaturen der TicketMachine (Code

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

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

Mehr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr Organisatorisches Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, 14.10., 14 Uhr bis Do, 23.10., 8Uhr. 14.10.2014 IT I - VO 1 1 IT I: Heute Wiederholung CuP ctd: this Arrays, ArrayLists Schleifen:

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

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

Mehr

Kapitel 9 Das Labyrinth

Kapitel 9 Das Labyrinth Kapitel 9 Das Labyrinth Seite 1 / 12 Kapitel 9 Das Labyrinth Lernziel: Wiederholung: eindimensionales Feld, Wiederholung mit fester Anzahl neu: Feld mit Objektreferenzen, zweidimensionales Feld 9.1 Felder

Mehr

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw. Objekt-Orientierung Die ersten objektorientierten Sprachen wurden ab 1967 entwickelt (Simula, Smalltalk). Die Grundidee besteht darin, Objekte der realen Welt abzubilden. Java-Programme bestehen aus Klassen.

Mehr

Projekt 3 Variablen und Operatoren

Projekt 3 Variablen und Operatoren Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.

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

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

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Übungsblatt 1. Java Vorkurs (WS 2017)

Übungsblatt 1. Java Vorkurs (WS 2017) Übungsblatt 1 Java Vorkurs (WS 2017) Aufgabe 1 Hallo-Welt Erstelle ein neues Projekt mit dem Namen HelloJava. Erzeuge in diesem Projekt eine neue Klasse HelloJava. (a) Schreibe die main-methode in die

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen

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

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine

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

Algorithmen implementieren. Implementieren von Algorithmen

Algorithmen implementieren. Implementieren von Algorithmen Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente

Mehr

Abschnitt 6: Klassen, Objekte und Methoden in Java

Abschnitt 6: Klassen, Objekte und Methoden in Java Abschnitt 6: Klassen, Objekte und Methoden in Java 6. Klassen, Objekte und Methoden in Java 6.1 Klassen 6.2 Objekte 6.3 Methoden 6.4 Zusammenfassung 6 Klassen, Objekte und Methoden in Java Informatik 2

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

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

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90 Konstruktor Stephan Kleuker 90 Wie erstellt man Objekte mit den bisher erstellten Code kann man genau genommen nichts anfangen, da Klassen nur Rahmen sind zur Erzeugung eines Objektes muss es die Möglichkeit

Mehr

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor: 4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

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

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der

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

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

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

Programmierkonventionen - 1 -

Programmierkonventionen - 1 - Die wichtigsten Bestandteile der Programmierkonventionen für Java werden hier erläutert. Dies sind: Schreibweise von Bezeichnern Einrückkonventionen Kommentare Programmierkonventionen - 1 - Einleitung

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben

Mehr