Modulüberblick Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 5.1 Eigenschaften von Ausdrücken 5.2 „Klassische“ Operationen 5.3 Sonstige Operatoren und Regeln 5.4 Verzweigungen 5.5 Schleifen 5.6 Sprunganweisungen 6 Objektorientierte Programmierung 7 Übungsaufgaben Ausdrücke Ausdrücke und Anweisungen in Java und Anweisungen in Java Sonstige Operatoren und Regeln Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Fragezeichenoperator: Der Fragezeichenoperator ist der einzige Operator in Java, der drei Operanden verarbeitet. Er erwartet einen logischen Ausdruck und zwei weitere Ausdrücke, die entweder beide numerisch, von einem Referenztyp oder vom Typ boolean sind. Ist der Wert des logischen Ausdrucks wahr, wird der erste Operand ausgewertet, ansonsten der zweite. Das Ergebnis des Ausdrucks a ? b : c ist also b, falls a wahr ist, ansonsten c. 144 Ausdrücke und Anweisungen in Java 145 Sonstige Operatoren und Regeln Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausgewählte Operatoren für Objekte: Der + Operator kann nicht nur mit numerischen Operanden verwendet werden, sondern auch zur Verkettung von Strings (String-Verkettung). Ist mindestens einer der Operanden in a + b ein String, so wird der gesamte Ausdruck als String-Verkettung ausgeführt. Als Ergebnis der Operation wird ein String geliefert, in dem beide Operanden hintereinander stehen. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Sonstige Operatoren und Regeln Ausgewählte Operatoren für Objekte: 146 Ausdrücke und Anweisungen in Java Sonstige Operatoren und Regeln Ausgewählte Operatoren für Objekte: Soll eine inhaltliche Gleichheit getestet werden, kann auf die Methode boolean equals (Object obj) Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde zurückgegriffen werden. 147 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Sonstige Operatoren und Regeln Ausgewählte Operatoren für Objekte: 148 Ausdrücke und Anweisungen in Java 149 Sonstige Operatoren und Regeln Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausgewählte Operatoren für Objekte: In Java werden Objekte mit Hilfe des new-Operators erzeugt. Der instanceof-Operator kann verwendet werden, um herauszufinden, zu welcher Klasse eine bestimmtes Objekt gehört. Der Ausdruck a instanceof b liefert genau dann true, wenn a eine Instanz der Klasse b oder einer ihrer Unterklassen ist. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Sonstige Operatoren und Regeln Ausgewählte Operatoren für Objekte: 150 Ausdrücke und Anweisungen in Java 151 Sonstige Operatoren und Regeln Operatorvorgangsregeln: Priorität Operatoren Typisierung Assoziativität Bezeichnung Priorität 1 [] A L Arrayindex () A L Methodenaufruf . A L Komponentenzugriff ++ N R Prä- oder Postinkrement -- N R Prä- oder Postdekrement + - N R Vorzeichen ! L R logische Negation (type) A R Typ-Umwandlung new R R Erzeugung Priorität 3 * / % N, N L Multiplikation, Division, Rest Priorität 4 + - N, N L Addition, Subtraktion + S, A L String-Verkettung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Priorität 2 Typisierung (Operandentypen): N = Numerische Typen I = Integrale Typen (ganzzahlige) L = Logische Typen S = String-Typen Typisierung (Operandentypen): R = Referenztypen P = Primitive Typen A = Alle Typen möglich V = Variable erforderlich Assoziativität: L = Links R = Rechts Ausdrücke und Anweisungen in Java 152 Sonstige Operatoren und Regeln Operatorvorgangsregeln: Priorität Operatoren Typisierung Assoziativität Bezeichnung Priorität 6 < <= N, N L Vergleich kleiner, kleiner gleich > >= N, N L Vergleich größer. größer gleich Instanceof R, R L Typüberprüfung eines Objekts == P, P oder R, R L Gleichheit != P, P oder R, R L Ungleichheit Priorität 8 & L, L L logisches Und (vollst. Auswertung) Priorität 9 ^ L, L L boolesches Exklusives Oder Priorität 10 | L, L L logisches Oder (vollst. Auswertung) Priorität 11 && L, L L logisches Und Priorität 12 || L, L L logisches Oder Priorität 13 ? : L, A, A R bedingte Auswertung Priorität 14 = V, A R Wertzuweisung += -= *= /= %= V, N R kombinierte Zuweisung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Priorität 7 Typisierung (Operandentypen): N = Numerische Typen I = Integrale Typen (ganzzahlige) L = Logische Typen S = String-Typen Typisierung (Operandentypen): R = Referenztypen P = Primitive Typen A = Alle Typen möglich V = Variable erforderlich Assoziativität: L = Links R = Rechts Modulüberblick Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 5.1 Eigenschaften von Ausdrücken 5.2 „Klassische“ Operationen 5.3 Sonstige Operatoren und Regeln 5.4 Verzweigungen 5.5 Schleifen 5.6 Sprunganweisungen 6 Objektorientierte Programmierung 7 Übungsaufgaben Ausdrücke und Anweisungen in Java 154 Verzweigungen Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Grundlagen zur Ablaufsteuerung: Ausdrücke haben in Java stets einen Rückgabewert – Anweisungen haben keinen Rückgabewert! Eine Anweisung wird immer von einem Semikolon beendet. Ein Block ist eine Zusammenfassung von Anweisungen, die nacheinander ausgeführt werden und syntaktisch als eine Anweisung verstanden werden. Innerhalb eines Blocks können lokale Variablen definiert werden. { Anweisung1; Anweisung2; … } Ausdrücke und Anweisungen in Java Verzweigungen Grundlagen zur Ablaufsteuerung: Es werden u. a. folgende Anweisungen unterschieden: Verzweigungsanweisungen, Schleifenanweisungen, Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrucksanweisungen. 155 Ausdrücke und Anweisungen in Java Verzweigungen Exkurs: Struktogramm (Nassi-Shneidermann-Diagramm): Darstellung des Kontrollflusses bei strukturierter Programmierung Strukturierte Programmierung Fortsetzung des Prinzips der Hierarchisierung in der Spezifikation Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Beschränkung auf drei elementare Kontrollstrukturen: – Sequenz (Folge) – Auswahl (Selektion, Verzweigung) – Iteration (Repitition, Schleife, Wiederholung) 156 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Verzweigungen Exkurs: Struktogramm (Nassi-Shneidermann-Diagramm): 157 Ausdrücke und Anweisungen in Java 158 Verzweigungen Verzweigungen: Verzweigungen dienen in Java dazu, bestimmte Programmteile nur beim Eintreten vorgegebener Bedingungen, die erst zur Laufzeit bekannt werden, auszuführen. An Verzweigungen bietet Java … Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde … die if-Anweisung, … die if-else-Anweisung, … die else-if-Anweisung, … die switch-Anweisung. Ausdrücke und Anweisungen in Java 159 Verzweigungen if-Anweisung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde if (ausdruck){ anweisung; } if (ausdruck){ anweisung1; else { anweisung2; } ausdruck muss vom Typ boolean sein. Trifft die Bedingung zu (hat also ausdruck den Wert true), so wird anweisung1 ausgeführt. Trifft die Bedingung nicht zu (hat also ausdruck den Wert false), so wird anweisung2 ausgeführt, falls ein else Zweig vorhanden ist. Anstelle einer einzelnen Anweisung darf auch eine Folge von Anweisungen aufgerufen werden, wenn diese innerhalb eines Blocks {...} stehen. } if (ausdruck){ anweisung1; } else if (ausdruck){ anweisung2; } else { anweisungX; } Ausdrücke und Anweisungen in Java Verzweigungen if-Anweisung – Beispiel: Implementieren Sie ein Programm if-Anweisung, das eine Division durch 0 abfängt. Gehen Sie dabei wie im Struktogramm beschrieben vor. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Testen Sie es für die Werte a = 4, b = 0! 160 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Verzweigungen if-Anweisung (Lösung): 161 Ausdrücke und Anweisungen in Java 162 Verzweigungen Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde switch-Anweisung: switch (ausdruck) { case constant1: anweisung; case constant2: anweisung; … default: anweisung; } Mehrfachverzweigung (ausdruck) muss vom Typ byte, short, char oder int sein Es wird die Sprungmarke angesprungen, deren Konstante mit dem Ergebnis des Ausdrucks übereinstimmt. Das optionale default-Label wird dann angesprungen, wenn keine passende Sprungmarke gefunden wird. Nach einem Sprung werden alle dahinter stehenden Anweisungen ausgeführt, außer die Abarbeitung wird durch eine breakAnweisung unterbrochen. Ausdrücke und Anweisungen in Java 163 Verzweigungen switch-Anweisung – Beispiel: Implementieren Sie ein Programm Monat, das einen beliebigen Monat im Jahr ausgibt. Gehen Sie dabei wie im Struktogramm beschrieben vor. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Testen Sie es für int monat = 4! Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java switch mit break 164 Verzweigungen switch-Anweisung: switch ohne break Ausdrücke und Anweisungen in Java Verzweigungen Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde switch-Anweisung: Jede switch-Anweisung kann auch durch eine if-Anweisung ersetzt werden. switch prüft jedoch nur auf Gleichheit von Werten – im Gegensatz zur ifAnweisung, bei der ein logischer Ausdruck ausgewertet wird. Der Bewertungsausdruck der switch-Anweisung kann nur ganzzahlige Werte oder Zeichen verarbeiten. 165 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Verzweigungen switch-Anweisung: Beispiel: 166 Ausdrücke und Anweisungen in Java 167 Aufgaben Schreiben Sie ein Programm, das ein Array vname mit den Werten {Max, Walter} sowie ein Array nname :mit den Werten {Walter, Mueller} erzeugt. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Überprüfen Sie, ob die beiden Arrays die gleiche Anzahl an Elementen haben und geben Sie diese mit Hilfe der Methode System.out.println aus! Überprüfen Sie, ob die beiden Arrays einen gemeinsamen Eintrag haben. Ist dies der Fall, so geben Sie mit Hilfe der Methode System.out.println eine Fehlermeldung aus, dass die Daten gegebenenfalls inkonsistent sind! Modellieren Sie die Aufgabe mit Hilfe eines Struktogramms! Modulüberblick Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 5.1 Eigenschaften von Ausdrücken 5.2 „Klassische“ Operationen 5.3 Sonstige Operatoren und Regeln 5.4 Verzweigungen 5.5 Schleifen 5.6 Sprunganweisungen 6 Objektorientierte Programmierung 7 Übungsaufgaben Ausdrücke und Anweisungen in Java 169 Schleifen Überblick: Schleifen führen Anweisungen wiederholt aus, solange eine Bedingung erfüllt ist. Java besitzt die drei Schleifenanweisungen : Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde die while-Schleife (abweisend), die do-Schleife (nichtabweisend) und die for-Schleife (Zählschleife). Ausdrücke und Anweisungen in Java 170 Schleifen while-Anweisung: Die while-Schleife ist eine abweisende Schleife, d.h. die Ausführungsbedingung wird jeweils vor Eintritt in die Schleife geprüft. (ausdruck) muss vom Typ boolean sein. Hat (ausdruck) den Wert true wird die anweisung ausgeführt, andernfalls nicht. Um keine Endlosschleife zu erhalten, muss ein Teil des Bewertungsausdrucks innerhalb der anweisung manipuliert werden. while (ausdruck){ anweisung; Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde } Ausdrücke und Anweisungen in Java 171 Schleifen 9 summe a a 0 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Schleifen while-Anweisung: 172 Ausdrücke und Anweisungen in Java 173 Schleifen do-Anweisung: Die do-Schleife ist eine nichtabweisende Schleife, d.h. die Anweisungen im Schleifenkörper werden immer mindestens einmal ausgeführt. (ausdruck) muss vom Typ boolean sein. Hat (ausdruck) den Wert false wird die Schleife beendet. do { anweisung; Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde } while (ausdruck) Ausdrücke und Anweisungen in Java 174 Schleifen do-Anweisung – Beispiel: Implementieren Sie ein Programm DoSchleife, das die folgende Formel berechnet: 9 summe a Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde a 0 Gehen Sie dabei wie im Struktogramm beschrieben vor! Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Schleifen do-Anweisung : 175 Ausdrücke und Anweisungen in Java 176 Schleifen for-Anweisung: init ist eine Anweisung, in der typischerweise eine Zählvariable (i.d.R. ganzzahlig) mit einem Startwert initialisiert wird. test ist ein boolean-Ausdruck. Der Schleifenrumpf wird solange wiederholt, wie der Ausdruck wahr (true) ist. update ist eine Anweisung, in der typischerweise die Zählvariable inkrementiert (erhöht) oder dekrementiert (erniedrigt) wird. (z.B. i++ oder i-- ) for (init; test; update) { anweisung; Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde } Ausdrücke und Anweisungen in Java Schleifen for-Anweisung – Beispiel: Implementieren Sie ein Programm Zählschleife, das fünf Mal die Schleife durchläuft und bei jedem Durchlauf den aktuellen Stand der for-Anweisung ausgibt. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Gehen Sie dabei wie im Struktogramm beschrieben vor! 177 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Schleifen for-Anweisung: 178 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Schleifen for-Anweisung: 179 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Schleifen geschachtelte for-Anweisung: 180 Ausdrücke und Anweisungen in Java Schleifen Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde While–Anweisung vs. For–Anweisung: Die While Schleife verwendet man normalerweise bei dynamischen Abbruchbedingungen – wenn also erst während der Laufzeit bestimmt wird, wie viele Schleifendurchläufe es gibt! (Bsp.: Programmierung von Netzwerkverbindungen) Die For Schleife verwendet man meistens, wenn bereits während der Programmierung feststeht, wie oft die Schleife durchlaufen wird. (Bsp.: Berechnung von n!) 181 Ausdrücke und Anweisungen in Java 182 Aufgabe Sortieralgorithmen: Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde In der Programmierung gibt es zahlreiche Möglichkeiten, um Elemente in einer Liste zu sortieren: Quicksort Bubblesort (nicht Klausurrelevant) Mergesort (nicht Klausurrelevant) Selectionsort (nicht Klausurrelevant) Heapsort (nicht Klausurrelevant) Recherchieren Sie die grundlegende Funktionalität eines Sortieralgorithmus und stellen Sie diese in der nächsten Vorlesungseinheit vor. Zur Bearbeitung der Aufgabe können Sie sich in Gruppen von je 2 – 3 Personen zusammen schließen (jede Gruppe bearbeitet einen Algorithmus!). Die Präsentation sollte folgende Punkte enthalten: Skizzierter Ablauf des Algorithmus (z. B. mit Hilfe eines Struktogramms) Vor- und Nachteile des Algorithmus Laufzeitverhalten ... Modulüberblick Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 5.1 Eigenschaften von Ausdrücken 5.2 „Klassische“ Operationen 5.3 Sonstige Operatoren und Regeln 5.4 Verzweigungen 5.5 Schleifen 5.6 Sprunganweisungen 6 Objektorientierte Programmierung 7 Übungsaufgaben Ausdrücke und Anweisungen in Java Sprunganweisungen Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Übersicht: Die Sprunganweisung break wird hauptsächlich verwendet, um Schleifendurchgänge vorzeitig zu beenden. Sie kann um ein label ergänzt werden, das oft verwendet wird, um zwei oder mehr ineinander verschachtelte Schleifen zu beenden. 184 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ausdrücke und Anweisungen in Java Sprunganweisungen Übersicht: 185 Ausdrücke und Anweisungen in Java Aufgaben Schreiben Sie ein Programm, welches die größte Zahl in einem array berechnet. Testen Sie es für die Werte für: int [] a = {11, 999, 81, 102, 4}; Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Gegeben ist das array a = [0,3,6,10]. Überprüfen Sie, ob die Zahl 20 in a enthalten ist und geben Sie eine Bestätigung auf der Konsole aus. 186 Ausdrücke und Anweisungen in Java Aufgaben Schreiben Sie für folgende Aufgabe ein Programm: Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Sie haben 3 Euro und stehen vor einem Regal mit Bonbons, die 10 Cent, 20 Cent, 30 Cent usw. bis hinauf zu einem Euro kosten. Sie kaufen aufsteigend von jeder Sorte einen Bonbon, beginnend bei 10 Cent, bis ihr Restgeld für keinen weiteren Kauf ausreicht. Wie viele Bonbons können Sie kaufen und wie hoch ist das Restgeld? Programmieren Sie das Problem mit einer FORSchleife! Implementieren das Problem mit einer WHILE – Schleife! 187 Ausdrücke und Anweisungen in Java Aufgaben Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Schreiben Sie ein Programm, das die Anzahl der Sekunden im Monat Mai berechnet. (Der Mai hat 31 Tage!) 188 Ausdrücke und Anweisungen in Java Aufgaben Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Implementieren Sie ein Programm fak, das die Fakultät einer Zahl n berechnet. Gehen Sie dabei wie im Struktogramm beschrieben vor. Testen Sie es für n = 5! 189 Ausdrücke und Anweisungen in Java Aufgaben Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Implementieren Sie ein Programm ggt, das den „Größten Gemeinsamen Teiler“ zweier Zahlen berechnet. Gehen Sie dabei wie im Struktogramm beschrieben vor. Testen Sie es für die Werte x = 20 und y = 12! 190 Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 6 Objektorientierte Programmierung 6.1 Klassen und Objekte 6.2 Variable und Methoden 6.3 Vererbung 6.4 Kapselung 7 Übungsaufgaben Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 6 Objektorientierte Programmierung 6.1 Klassen und Objekte 6.2 Variable und Methoden 6.3 Vererbung 6.4 Kapselung 7 Übungsaufgaben Objektorientierte Objektorientierte Programmierung Programmierung Klassen und Objekte Klassen: Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Java-Programme bestehen aus Klassendefinitionen. [Modifizierer] class Klassenname [extends Basisklasse] { Variablendeklarationen Methodendeklarationen } 193 Objektorientierte Objektorientierte Programmierung Programmierung 194 Klassen und Objekte Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Konstruktoren: Konstruktoren erzeugen eine Instanz einer Klasse. Sie werden bei der Erzeugung einer Instanz mit new aufgerufen und werden benutzt, um einen Anfangszustand für das Objekt herzustellen. Ein Konstruktor trägt den Namen der zugehörigen Klasse und besitzt keinen Rückgabewert. Besitzt eine Klasse keinen expliziten Konstruktor, wird automatisch der default-Konstruktor aufgerufen. Objektorientierte Programmierung Klassen und Objekte Instanz: Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Um von einer Klasse eine Instanz anzulegen, muss eine Variable vom Typ der Klasse deklariert und ihr mit Hilfe des new-Operators eine neu erzeugte Instanz zugewiesen werden. Auto porsche = new Auto(); 195 Objektorientierte Programmierung Klassen und Objekte Instanz: Der Zugriff auf die Variablen einer Instanz erfolgt über die Punktnotation. Instanzname.Variablenname Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Beispiel: porsche.name = „Porsche 311“; porsche.erstzulassung = 2000; System.out.println( porsche.name ); System.out.println( porsche.erstzulassung ); 196 Objektorientierte Programmierung Klassen und Objekte this-Objekt: this ist eine Referenzvariable, die beim Anlegen eines Objekts automatisch generiert wird. Sie zeigt auf das aktuelle Objekt, so dass man über sie die eigenen Methoden und Instanzvariablen ansprechen kann. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde this wird benutzt, um … … auf verdeckte Variablen der eigenen Klasse zuzugreifen, … die eigene Instanz als Wert zurückzugeben oder … sie als Argument beim Aufruf einer anderen Methode zu verwenden. 197 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Objektorientierte Programmierung Klassen und Objekte Konstruktoren: 198 Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 6 Objektorientierte Programmierung 6.1 Klassen und Objekte 6.2 Variable und Methoden 6.3 Vererbung 6.4 Kapselung 7 Übungsaufgaben Objektorientierte Programmierung 200 Variable und Methoden Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Klassenvariable: Neben Instanzvariablen können in Klassen auch Klassenvariablen mit Hilfe des Modifizierers „static“ definiert werden. Eine Klassenvariable enthält Informationen, die sich alle Instanzen teilen. Wenn ein Objekt diese Variable ändert, ändert sich der Wert der Variable auch für alle anderen Instanzen. Ebenso können Klassenmethoden (mit „static“) deklariert werden. static int aktuelleGeschwindigkeit = 20; Objektorientierte Programmierung Variable und Methoden Definition: Methoden definieren das Verhalten von Objekten. Sie werden innerhalb der Klassendefinition angelegt und haben Zugriff auf alle Variablen des Objekts. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde [Modifizierer] Rückgabetyp Methodenname ([Parameterliste]) { Anweisungen; } Beispiel: public void drucken (int a) { System.out.println (a); } 201 Objektorientierte Programmierung Variable und Methoden Parameter: Jeder Methode kann eine Parameterliste übergeben werden. public void drucken (int a, int b) { Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde ... } Mehrere Parameter (Typ und Name) werden durch Kommata getrennt. 202 Objektorientierte Programmierung 203 Variable und Methoden Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Rückgabewert: Jede Methode in Java ist typisiert, d. h. es wird bei der Definition der Methode festgelegt, von welchem Typ der Rückgabewert ist. Dieser kann von einem beliebigen einfachen Datentyp, einem Referenztyp oder vom Typ void sein. Methoden vom Typ void liefern keinen Rückgabewert. Ist eine Methode nicht vom Typ void, muss sie mit Hilfe der returnAnweisung einen Wert an den Aufrufer zurückgeben. public int meineMethode (int a) { ... return a - 1; } Objektorientierte Programmierung Variable und Methoden Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Aufruf: Ähnlich der Verwendung bei Instanzvariablen erfolgt der Aufruf einer Methode für eine Instanz über die Punktnotation. Es müssen immer die Parameter der Methode in Klammern angegeben werden (selbst wenn Liste leer ist). 204 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Objektorientierte Programmierung Variable und Methoden Aufruf: 205 Objektorientierte Programmierung 206 Variable und Methoden Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Exkurs: Rekursive Programmierung Idee: Zerlegung eines Problems in seine Teilprobleme. Die Zerlegung wird solange durchgeführt, bis eine Abbruchbedingung eintritt. Eine Funktion ist rekursiv ("zurücklaufend"), wenn sie durch sich selbst definiert ist. Sie ruft sich (im Methodenrumpf) selbst auf um ein Problem zu lösen, bis eine bestimmte Abbruchbedingung erfüllt wird. Beispiel: Berechnung der Fakultät (Abbruchbedingung: 1! = 1) 4! 4 * 3! 4 * 3 * 2! 4 * 3 * 2 * 1! Objektorientierte Programmierung Variable und Methoden Exkurs: Rekursive Programmierung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Aufgabe: Programmieren Sie eine Funktion, die rekursiv die Fakultät einer Zahl berechnet. Gehen Sie dabei wie im Struktogramm beschrieben vor. 207 Objektorientierte Programmierung Variable und Methoden Aufgaben: Schreiben Sie eine Klasse Grundrechenarten.java, mit den folgenden Methoden: Addition, Subtraktion Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Multiplikation Division (! schließen Sie den Fall aus, dass durch Null geteilt wird) ggt Schreiben Sie eine zweite Klasse Berechnung.java, in der Sie die Methoden mit beliebigen Werten testen! 208 Objektorientierte Programmierung Variable und Methoden Aufgaben: Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Schreiben Sie für die Klasse „Person“ eine Anwendungs-Klasse „PersonTest“. Erzeugen Sie zwei neue Instanzen und speichern die Namen „Max Mustermann“ und „Mona Lisa“ in die dafür vorgesehnen Variablen. Lassen Sie sich die Werte am Bildschirm ausgeben! (Die Datei Person.java finden Sie in den Vorlesungsunterlagen auf unserer Webseite.) 209 Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 6 Objektorientierte Programmierung 6.1 Klassen und Objekte 6.2 Variable und Methoden 6.3 Vererbung 6.4 Kapselung 7 Übungsaufgaben Objektorientierte Programmierung Vererbung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Ableiten einer Klasse: Java unterstützt lediglich Einfachvererbung. Um eine neue Klasse aus einer bestehenden abzuleiten, ist durch das Schlüsselwort extends ein Verweis auf die Basisklasse zu geben. public class Unterklasse extends Oberklasse { ... } Die Vererbung erlaubt die beliebige Wiederverwendung des Codes der Superklasse. 211 Objektorientierte Programmierung 212 Vererbung Umsetzung in Java: public class Fahrrad { public static int instanzzaehler = 0; Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde public double aktGeschw; public double bremse (double geschw) { aktGeschw = aktGeschw - geschw; public class Mountainbike extends Fahrrad{ public static void main(String[] args) { Mountainbike scott = new Mountainbike (); scott.aktGeschw = 30; scott.bremse(20.0); System.out.println (scott.aktGeschw); return aktGeschw; }} instanzzaehler = instanzzaehler + 1; System.out.println (instanzzaehler + " Instanzen erzeugt"); }} Objektorientierte Programmierung 213 Vererbung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Polymorphismus: In der objektorientierten Programmierung können mehrere Methoden den gleichen Namen besitzen, auch wenn sie auf das gleiche Objekt angewendet werden bzw. sich in der gleichen Klasse befinden. Dieses Konzept nennt man Polymorphismus. Dabei kommen zwei grundlegende Techniken zum Tragen: das Überladen (Overloading) das Überschreiben (Overriding) Objektorientierte Programmierung 214 Vererbung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Polymorphismus: Überladen Überladen bedeutet, dass in der Superklasse und Subklasse bzw. innerhalb einer Klasse mehrere Methoden mit gleichem Namen parallel vorhanden sind, die sich allerdings in der Parametersignatur unterscheiden. Eine Parametersignatur besteht aus Anzahl und Typ der übergebenen Parameter. Beispiele für Einsatzmöglichkeiten: Definition von Konstruktoren Java API (siehe Beispiel println()) Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Objektorientierte Programmierung Vererbung Polymorphismus: Überladen 215 Objektorientierte Programmierung 216 Vererbung Polymorphismus: Überschreiben Erbt eine Klasse eine Methode der Superklasse, hat sie die Möglichkeit, diese Methode zu überschreiben. Dabei sind folgende Regeln einzuhalten: Der Methodenname muss übereinstimmen. Die Parameterliste und der Rückgabetyp müssen übereinstimmen. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Die Funktionalität der Methode kann beliebig geändert werden. Wurde eine Methode überschrieben, wird beim Aufruf der Methode immer die überschriebene Version verwendet. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Objektorientierte Programmierung Vererbung Beispiel: Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 6 Objektorientierte Programmierung 6.1 Klassen und Objekte 6.2 Variable und Methoden 6.3 Vererbung 6.4 Kapselung 7 Übungsaufgaben Objektorientierte Programmierung 219 Kapselung Variablen (Zustand) Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Methoden (Verhalten) Als Datenkapselung (information hiding) bezeichnet man das Verbergen von Daten oder Informationen vor dem Zugriff von außen. Der direkte Zugriff auf die interne Datenstruktur wird unterbunden und erfolgt statt dessen über definierte Schnittstellen, die über Methoden realisiert werden. Hierfür existieren in Java unterschiedliche Zugriffs- und Sicherheitsebenen, mit denen man den Zugriff von anderen Objekten auf die Variablen und Methoden eines Objekts steuern kann (z. B. mit Hilfe von Modifizieren). Objektorientierte Programmierung Kapselung Modifizierer: Modifizierer regeln u. a. den Zugriff auf Klassen, Methoden und Variablen. Sie haben insb. Einfluss auf deren … Lebensdauer, Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Sichtbarkeit und Veränderbarkeit. 220 Objektorientierte Programmierung 221 Kapselung Arten von Modifizieren: Modifier Klasse Variablen Methode Konstruktor X X X X protected X X X private X X X static X X X X Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde public final X abstract X X Objektorientierte Programmierung 222 Kapselung Modifizierer: public/private/protected Zugriffsrechte auf Klassen, Variablen, Methoden und Konstruktoren werden über public, protected und private gesteuert. public protected Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde private zugreifbar in allen Klassen zugreifbar in allen Subklassen zugreifbar in der Klasse Methoden oder Variablen vom Typ private sind nur in der aktuellen Klasse sichtbar, in allen anderen Klassen (auch abgeleitete Klassen) dagegen unsichtbar. Variablen sollten immer als private definiert werden und über get-/setMethoden zugänglich gemacht werden (Datenkapselung – Information Hiding). Objektorientierte Programmierung 223 Kapselung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Exkurs: Information Hiding (Kapselung) Verstecken der Implementierung einer Klasse hinter den Methoden, die auf ihre internen Daten ausgeführt werden. Entkopplung von Schnittstelle (Interface) und Implementierung Ziel: Wechsel/ Erweiterung der Implementierung – Algorithmen und Datenstrukturen ohne Probleme austauschbar „sichtbare“ Schnittstelle ändert sich nicht Vermeidung von unerwartetem Objektverhalten nur gewollte Zugriffe auf Variablen möglich Information Hiding wird durch spezielle Zugriffsmethoden (get & set Methode) realisiert, die die privaten Attribute einer Klasse schützen. Objektorientierte Programmierung Kapselung Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Exkurs: Information Hiding (Kapselung) Die Deklaration der Variablen als private verhindert den unerwünschten Zugriff auf die Variablen von außerhalb der Klasse. Beispiel: class student { private String name; private int matrNr; ... } 224 Objektorientierte Programmierung Kapselung Exkurs: Information Hiding (Kapselung) Auf die Variablen kann nur über die Methoden get () und set () zugegriffen werden. Diese Methoden müssen public deklariert werden. Beispiel: class student { Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde private String name; private int matrNr; public String getName () { return name; } public int getMatrNr () { return matrNr; } } 225 Objektorientierte Programmierung Kapselung Exkurs: Information Hiding (Kapselung) Mit den set () - Methoden können den Variablen Werte zugewiesen werden. Beispiel: class student { private String name; Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde private int matrNr; public String getName () { return name; } public int getMatrNr () { return matrNr; } public void setName (String name) { this.name = name; } public void setMatrNr (int matrNr) { this.matrNr = matrNr; } } 226 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Objektorientierte Programmierung Kapselung Exkurs: Information Hiding (Kapselung) Beispiel: 227 Objektorientierte Programmierung 228 Aufgaben Studentenverwaltung: Implementieren Sie eine Klasse Student mit den Attributen Name und Matrikelnummer! Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Fügen Sie der erzeugten Klasse Student geeignete Methoden hinzu und berücksichtigen dabei die Paradigmen der Objektorientierung (Datenkapselung)! Implementieren Sie in der Klasse Student die Methode getZaehler(), welche die Anzahl der erzeugten Studenten in der Variablen zaehler speichert. Warum sollte die Methode getZaehler() sowie die Variable zaehler als „static“ deklariert sein? Erzeugen Sie in der Klasse Student zwei Studenten mit den Namen „Max“ und „Moritz“! Lassen Sie sich die Anzahl der erzeugten Studenten mit Hilfe der Methode getZaehler() ausgeben! Objektorientierte Programmierung 229 Aufgaben Sie haben 750 Euro geschenkt bekommen und ein sensationelles Angebot für Festgeld entdeckt, welches Ihnen 7,5 % Verzinsung pro Jahr bietet. Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Wie viele Jahre benötigen Sie, damit Sie sich z. B. ein neues Notebook im Wert von 1000 Euro kaufen können? Beschreiben Sie zunächst den Kontrollfluss des Programms mit Hilfe einer in der Vorlesung vorgestellten Methodik! Setzen Sie den Algorithmus in Java um! Um eine künftige Widerverwendbarkeit des Programms zu ermöglichen, berücksichtigen Sie bei der Implementierung die Paradigmen der Objektorientierung! Objektorientierte Programmierung 230 Aufgaben Implementieren Sie die Klasse Sparbuch mit den Attributen kapital und zinssatz und den folgenden Methoden: zahleEin: erhöht das Guthaben um einen bestimmten Betrag hebeAb: vermindert das Guthaben um einen bestimmten Betrag verzinse: erhöht das Guthaben um den Jahreszins Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde getKapital: liefet das Guthaben Erzeugen Sie eine neue Instanz der Klasse (z. B. MeinSparbuch) und testen Sie die Methoden der Klasse. Übersicht 1 Grundlagen der Systementwicklung 2 Objektorientierte Softwareentwicklung 3 Grundlagen der Java-Technologie 4 Datentypen und Variablen in Java 5 Ausdrücke und Anweisungen in Java 6 Objektorientierte Programmierung 7 Übungsaufgaben Übungsaufgaben Teil 1 Erzeugen Sie ein "Klassendiagramm" mit Hilfe von UML mit folgenden Begriffen. Berücksichtigen sie Klassen, Attribute, Methoden, Beziehungen, Vererbung, ..... Auto Peugeot Räder Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Motor Fahrgestellnummer links blinken Mercedes Volkswagen beschleunigen Golf II 232 Übungsaufgaben Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Teil 2 Beschreiben Sie ein in der Vorlesung behandeltes Vorgehensmodell! Was ist der Unterschied zwischen Validierung und Verifikation? Was für Programmarten der Programmiersprache Java haben Sie in der Vorlesung kennen gelernt? Beschreiben Sie diese kurz. Wie sehen Kommentare im Quelltext aus? Warum sind sie sinnvoll? Beschreiben Sie die verschiedenen Formen der Konvertierung. Welche Probleme könnten ggf. auftreten? Was ist ein Struktogramm? Welche Kontrollstrukturen haben Sie kennen gelernt? Erstellen Sie ein Struktogramm, das den Vorgang „Geld abheben“ beschreibt. Welche Datentypen haben Sie in der Vorlesung kennen gelernt und welche Werte speichern diese? Wie kann in einer System.out.println-Methode zusätzlich zu Text weiterer Inhalt ausgegeben werden? 233 Übungsaufgaben Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Teil 3 Was sind Methoden in Java und.was ist ihre Aufgabe? Wie sind Methoden aufgebaut? Wie kann eine Fallunterscheidung in Java dargestellt werden? Wie lautet die Syntax dieser Verzweigung in Java und im Struktogramm. Welche Schleifen haben Sie in der Vorlesung kennen gelernt? Beschreiben Sie die generelle Funktionsweise von Schleifen. Wie lautet die Syntax der Schleifen in Java und im Struktogramm. Welche Möglichkeiten eröffnet die Verwendung von Arrays? Nennen Sie die wichtigsten Merkmale von Arrays. Wie können Sie die Anzahl der Elemente eines Arrays herausfinden? Wie sieht der Aufruf bei zwei- und dreidimensionalen Arrays aus? Was versteht man unter dem Begriff „Definite Assignment“? 234 Übungsaufgaben 235 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Teil 4 Was ist ein Klassendiagramm? In welcher Phase der Softwareentwicklung wird es eingesetzt? Begründen Sie Ihre Antwort. Was sind Multiplizitäten? Geben Sie jeweils ein Beispiel für eine (1:1), (1:*), (*:*) Multiplizität an. Was ist der Unterschied zwischen einer Assoziation und einer Aggregation. Nennen Sie ein Beispiel. Beschreiben Sie die Unterschiede folgender Modifizierer: public protected private Wie wird Information Hiding in Java umgesetzt. Was sind abstrakte Klassen. Wie werden sie in Java umgesetzt? Übungsaufgaben Teil 5 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde Beschreiben Sie die folgenden Prinzipien der Objektorientierung: Objekt-Klassen-Prinzip Kapselungsprinzip Vererbungsprinzip Polymorphieprinzip 236 Katholische Universität Eichstätt-Ingolstadt Lehrstuhl für ABWL und Wirtschaftsinformatik Prof. Dr. Klaus D. Wilde