SS Stephan Gimbel. Repetitorium PG 1. Übungsblatt. Original Klausur von Prof. Dr. Johannes Arz

Größe: px
Ab Seite anzeigen:

Download "SS 2011. Stephan Gimbel. Repetitorium PG 1. Übungsblatt. Original Klausur von Prof. Dr. Johannes Arz"

Transkript

1 SS 2011 Stephan Gimbel Repetitorium PG 1 Übungsblatt 1 Übung - Probeklausur WS 2009/2010 Original Klausur von Prof. Dr. Johannes Arz ACHTUNG: Statt Array kann auch ein STL vector verwendet werden. Geschichte Am fand in Kapstadt die Gruppenauslosung zur Fußballweltmeisterschaft 2010 in Südafrika statt. Unter den Augen von Bundestrainer Jogi Löw wurde Deutschland in die Gruppe D zusammen mit Australien, Serbien und Ghana gelost. Kommentar des Ehrengastes Amalie Klein: Das werden geile Spiele. Aufgabe Schreiben Sie ein Programm, das die Gruppen modelliert. Ausbaustufen 1. (Note 4) Implementieren Sie eine Klasse Mannschaft mit dem Attribut land als Zeichenkette (String), sowie den dazu gehörenden put- und get-funktionen (hier: putland, getland; entsprechende Notation gilt für die anderen Attribute anderer Klassen) sowie zwei Konstruktoren vom Typ Mannschaft (void) und Mannschaft (char *), ferner eine Methode browse, die die Mannschaftsdaten am Bildschirm anzeigt. Siehe Hinweis (Note 3) Implementieren Sie weiter eine Klasse Gruppe mit den Attributen name vom Typ char (Die Gruppenbezeichner sind Buchstaben von A bis H.) und einem Attribut Mannschaft * mannschaft [4] mit den dazu gehörenden put- und get-funktionen sowie einen Konstruktor, ferner eine Methode browse, die alle Attribute einer Gruppe am Bildschirm anzeigt. Erzeugen Sie im Hauptprogramm die Gruppe D. 1

2 3. (Note 2) Implementieren Sie ein Methode zeigepaarungen, die die Liste von Spielpaarungen einer beliebigen Gruppe berechnet und am Bildschirm ausgibt. Bekanntlich spielt jede Mannschaft einer Gruppe einmal gegen jedes andere Gruppenmitglied. Testen Sie die Methode für die Gruppe D. 4. (Note 1) Ersetzen Sie die Methode browse in Gruppe und Mannschaft je durch einen überladenen Operator <<. Hinweise zur Realisierung 1. Außer dem Hilfesystem des Visual C++ sind keine Hilfsmittel erlaubt. 2. Die Einhaltung der Ausbaustufen ist zwingend vorgeschrieben. Sichern Sie jede Ausbaustufe in einem Unterverzeichnis mit Namen NoteX; X = 1,2,3,4. Wer nur eine Ausbaustufe hat, kann bestenfalls die Note ausreichend erhalten. 3. Schreiben Sie in jede *.cpp oder *.h Datei, die Sie erzeugen, Ihren Namen als Kommentar, damit auch im Notfall eine Zuordnung möglich ist. 4. Die Verwendung der angegebenen Klassen, Methoden und Attribute auch in Ihren Bezeichnungen ist vorgeschrieben. Abweichungen werden mit Punkteabzug gewertet. 5. Es gelten weiterhin die Allgemeinen Programmierrichtlinien. Verstöße werden mit Punkteabzug gewertet. 6. Statt des oben genannten Datentyps char * kann auch der Typ string verwandt werden und statt des Feldes ein Vektor über Mannschaftszeiger. Ansonsten sind die Datentypen der Attribute zwingend vorgeschrieben. 2 Übung - Probeklausur WS 2007 / 2008 Original Klausur von Prof. Dr. Hans-Peter Weber Empfehlung: Arbeiten Sie in kleinen Schritten und sorgen Sie dafür, dass Sie jederzeit ein lauffähiges Anwendungssystem haben. Allgemeine Vorgaben: Keine globalen Variablen/Objekte, Verwendung der vorgegebenen Bezeichner ist verpflichtend, Eigene Bezeichner sind selbsterklärend; Kommentare nur wenn nötig, Principle of least privilege (z.b. const-correctness ) ist zu beachten. Aufgabenstellung: Sie sollen das Geburtstagsparadoxon aus der Wahrscheinlichkeitsrechnung durch eine Simulation über-prüfen. Hierbei wird untersucht, wieviele Personen in einer Gruppe sein müssen, damit die Wahrscheinlich-keit dafür, dass es zwei Personen in dieser Gruppe gibt, 2

3 die am selben Tag Geburtstag haben, größer als 50% ist. Erstaunlicherweise ist dies schon für relativ kleine Gruppen der Fall (daher die Bezeichnung Geburtstagsparadoxon ). Ihr Simulationsprogramm soll die Klasse Group und eine unterstützende Klasse Date (s. Klassendiagram-me) enthalten: Besonderheiten der Methoden sind: Der Standardkonstruktor von Date soll das erzeugte Objekt auf ein zufälliges Datum setzen, wie unter setrandomdate beschrieben. setrandomdate soll die Datenelemente dayinyear und year unter den folgenden Randbedingungen setzen: dayinyear soll auf zufällige Weise so gesetzt werden, dass jeder der 365 Tage eines Jahres (Schaltjahre werden nicht berücksichtigt) mit der gleichen Wahrscheinlichkeit auftritt. Der Wert für year soll zufällig und gleichverteilt aus dem Bereich 1950 bis 2007 (jeweils einschließlich) genommen werden. getdayinmonth und getmonth sollen den im Datenelement dayinyear gespeicherten Tag in der üblichen Form Tag im Monat bzw. Monat zurückgeben. Hat dayinyear also z.b. den Wert 35, gibt getdayinmonth den Wert 4 und get- Month den Wert 2 zurück. print soll das im Date-Objekt enthaltene Datum in der Form auf dem Bildschirm ausgeben. Die (konstante!) Klassenvariable numberofbirthdays hat den Wert 200. Der Konstruktor von Group soll das Attribut size auf den übernommenen Parameterwert setzen, falls dieser zwischen 1 und numberofbirthdays liegt, andernfalls auf numberofbirthdays. size gibt die Anzahl der Date-Objekte im Array birthdays an, die das aktuelle Group-Objekt nutzt (und damit die Größe der aktuell betrachteten Gruppe). birthdayonthesameday soll true zurückgeben, falls birthdays mindestens zwei Einträge mit gleichem dayinyear enthält, andernfalls false. Hierbei sind natürlich nur die ersten size Elemente von birthdays relevant! (Anmerkung: Das Geburtsjahr ist hier hier also uninteressant; es geht nur darum, dass zwei Personen am selben Tag Geburtstag haben, egal wie alt sie werden.) 3

4 sort soll die relevanten Date-Objekte im Array birthdays aufsteigend sortieren. Sie können ein Sortierverfahren Ihrer Wahl benutzen; die Sortierung soll zunächst nach year erfolgen, bei gleichem Wert von year soll nach dayinyear sortiert werden. print soll den Wert von size und die im Array birthdays enthaltenen relevanten Date-Objekte in einer geeigneten Formatierung auf dem Bildschirm ausgeben. isfull soll genau dann den Wert true zurückgeben, falls birthdays voll ist 4

5 Das Anwendungsprogramm (main) soll die beiden Klassen testen. Dazu sollen der Reihe nach folgende Aktionen ablaufen (eine Menüsteuerung soll also nicht realisiert werden): Erzeugung eines Group-Objektes mit 200 Geburtstagen, Sortieren und Ausgabe der sortierten Geburtstage. Erzeugung von zwanzig Group-Objekten mit jeweils 35 Geburtstagen und Ausgabe für jedes einzelne Objekt, ob mindestens zwei der Geburtstage auf denselben Tag im Jahr fallen oder nicht. Erzeugung von jeweils Group-Objekten beginnend ab der Größe 2 bis zur Größe 50 und Ausgabe, bei wieviel Prozent der Objekte mindestens zwei der Geburtstage auf denselben Tag im Jahr fallen. Das Ergebnis soll in Form ei-ner Tabelle ausgegeben werden, deren erste Zeilen etwa so aussehen sollten wie rechts abgebildet. Aus der Tabelle ist dann abzulesen, wie groß ein Group-Objekt sein muss (d.h. wieviele Geburtstage es enthalten muss), damit die Wahrscheinlichkeit dafür, dass mindestens zwei auf denselben Tag im Jahr fallen, größer als 50% ist (Geburtstagsparadoxon). 3 Übung - Probeklausur WS 2008 / 2009 Original Klausur von Prof. Dr. Hans-Peter Weber Empfehlung: Arbeiten Sie in kleinen Schritten und sorgen Sie dafür, dass Sie jederzeit ein lauffähiges Anwendungssystem haben. Allgemeine Vorgaben: Keine globalen Variablen/Objekte, Verwendung der vorgegebenen Bezeichner ist verpflichtend, Eigene Bezeichner sind selbsterklärend; Kommentare nur wenn nötig, Principle of least privilege (z.b. const-correctness ) ist zu beachten. 5

6 Aufgabenstellung: Aufgabenstellung: Sie sollen ein Ticketverkaufsprogramm für ein Theater mit 10 Sitzreihen und 15 Plätzen pro Reihe erstellen. Ihr Programm soll die Klassen Theatre und Ticket (s. Klassendiagramme) enthalten: 6

7 Besonderheiten der Methoden sind: Der Standardkonstruktor von Ticket soll einen unbesetzten Sitzplatz erzeugen (Die Reihennummer row und die Platznummer seat haben den Wert 0, der Ticketpreis price den Wert 0.0 und die Information occupied - ob der Platz besetzt ist - den Wert false). Ein zweiter Konstruktor übernimmt Werte für row, seat, price und occupied von außen. print soll alle Datenelemente eines Ticket-Objekts in einer geeigneten Formatierung auf dem Bildschirm ausgeben. Das Theatre hat 10 Sitzreihen und 15 Plätze pro Reihe, d.h. die (konstante!) Klassenvariable numberoftickets hat den Wert 150. Der Standardkonstruktor von Theatre soll ein unbesetztes Theater erzeugen, dessen Tickets (d.h. also die Ticket-Objekte im Array tickets) aber schon die richtigen Reihennummern und Platznummern enthalten. Außerdem soll der Preis für jedes Ticket nach folgendem System gesetzt werden: Die äußeren Plätze in der letzten Reihe (also Platz 1 und 15 in der Reihe 10) kosten beide 10 Euro. Für jede Reihe weiter vorn erhöht sich der Ticketpreis um 1 Euro und gleichzeitig erhöht sich der Ticketpreis für jeden Sitz in Richtung Mitte um 0,50 Euro. Der teuerste Platz im Theater ist also der Platz 8 in der ersten Reihe mit 22,50 Euro. sellticket soll ein vom Anwendungsprogramm übergebenes Ticket-Objekt auf folgende Weise verarbeiten: Falls der Platz mit der row und dem seat des übergebenen Objekts in dem Theatre-Objekt schon besetzt ist, soll false zurückgegeben und das übergebene Objekt nicht weiter verarbeitet werden. Falls nicht, wird der occupied-wert des passenden Platzes auf true gesetzt und außerdem true zurückgegeben. sortbyprice soll die Ticket-Objekte innerhalb des Arrays tickets nach fallendem Preis sortieren. Hierbei soll das Sortierverfahren Direktes Auswählen (Selection- Sort) benutzt werden. sortbyseat soll die Ticket-Objekte innerhalb des Arrays tickets aufsteigend nach Reihennummer und innerhalb der gleichen Reihe nach Platznummer sortieren. Sie können ein Sortierverfahren Ihrer Wahl (außer Selection-Sort, s.oben) benutzen. soldtickets soll die Anzahl der verkauften Tickets ermitteln und zurückgeben. totalrevenues soll die Gesamteinnahmen in Euro ermitteln und zurückgeben. printseats soll den Saalplan des Theaters im unten angegebenen Format auf dem Bildschirm ausgeben. Hierbei wird für einen besetzten Sitz ein x ausgegeben und für einen freien Sitz ein -. 7

8 Das Anwendungsprogramm (main) soll die beiden Klassen testen. Dazu sollen der Reihe nach folgende Aktionen ablaufen (eine Menüsteuerung soll also nicht realisiert werden): Erzeugung eines Theatre-Objektes und Ausgabe des Saalplans des leeren Theaters. Einfügen von Ticket-Objekten für zufällig ausgewählte Plätze in das Theatre- Objekt, bis insgesamt 50 Plätze besetzt sind. (Falls der gewählte Platz schon besetzt ist, soll eine entsprechende Meldung ausgegeben werden und ein weiterer Platz zufällig gewählt werden). Ausgabe der Anzahl der verkauften Tickets, der erzielten Gesamteinnahmen und des Saalplans des Theaters (entsprechend der Abbildung oben). Ausgabe aller verkauften Tickets in Form einer nach dem Ticketpreis sortierten Liste. Danach: Ausgabe aller verkauften Tickets in Form einer nach Reihe und Sitzplatz sortierten Liste. Anmerkung für das Repetitorium Wenn sie keinen geeigneten Sortieralgorithmus kennen schauen sie z.b. bei Wikipedia nach: Übung - Probeklausur SS 2010 Typ Prof.Humm Aufgabe : Hotelverwalungssystem In dieser Klausur werden Sie prototypisch ein Hotelverwalungssystem implementieren. Das folgende UML Diagramm gibt eine Übersicht über die gesamte zu erstellende Anwendung: 8

9 9

10 Entwickeln Sie die Anwendung Schritt für Schritt in der angegebenen Reihenfolge. Insgesamt gibt es 100 Punkte zu erreichen. 1: Klasse Hotel (10 Punkte) 1. Erstellen Sie eine neue Klasse Hotel. 2. Erstellen Sie eine private Instanzvariable name vom Typ string. 3. Entwickeln Sie die Funktion string getname() mit der üblichen Getter-Semantik. 4. Entwickeln Sie einen Konstruktor Hotel(string name ), in dem die Instanzvariable name initialisiert wird. 5. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 2: Klasse Guest (10 Punkte) 1. Erstellen Sie eine neue Klasse Guest (Gast). 2. Erstellen Sie eine private Instanzvariable name vom Typ string. 3. Entwickeln Sie die Funktion string getname() mit der üblichen Getter-Semantik. 4. Entwickeln Sie einen Konstruktor Guest(string name ), in dem die Instanzvariable name initialisiert wird. 5. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 3: Klasse Room (12 Punkte) 1. Erstellen Sie eine neue Klasse Room (Zimmer). 2. Erstellen Sie zwei private Instanzvariablen roomnumber und bedquantity jeweils vom Typ integer. 3. Entwickeln Sie die Funktion int getroomnumber() mit der üblichen Getter-Semantik. 4. Entwickeln Sie die Funktion int getbedquantity() mit der üblichen Getter-Semantik. 5. Entwickeln Sie einen Konstruktor Room(int roomnumber, int bedquantity ), in dem die Instanzvariable roomnumber und bedquantity initialisiert werden. 6. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 4: Klasse Reservation (16 Punkte) 1. Erstellen Sie eine neue Klasse Reservation (Reservierung). 10

11 2. Erstellen Sie drei private Instanzvariablen : guest vom Typ Guest*, room vom Typ Room* und hotel vom Typ Hotel*. 3. Entwickeln Sie die Funktion Guest* getguest() mit der üblichen Getter-Semantik. 4. Entwickeln Sie die Funktion Room* getroom() mit der üblichen Getter-Semantik. 5. Entwickeln Sie die Funktion Hotel* gethotel() mit der üblichen Getter-Semantik. 6. Entwickeln Sie einen Konstruktor Reservation(Guest* guest, Room* room, Hotel* hotel ), in dem die Instanzvariablen guest, room und hotel initialisiert werden. 7. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 5: ManagementSystem (22 Punkte) 1. Erstellen Sie eine neue Klasse ManagementSystem (ManagementSystem). 2. Erstellen Sie vier private Instanzvariablen : guest vom Typ vector<guest*>, room vom Typ vector<room*>, reservation vom Typ vecor<reservation*> und hotel vom Typ Hotel*. 3. Entwickeln Sie die Funktion Room* addroom(int roomnumber, int bedquantity) (Zimmer hinzufügen). In ihr wird ein neues Room Objekt angelegt und roomnumber und bedquantity gesetzt. Das Room Objekt wird dem Vektor room hinzugefügt und zurückgegeben. 4. Entwickeln Sie die Funktion Guest* addguest(string name) (Gast hinzufügen). In ihr wird ein neues Guest Objekt angelegt und name gesetzt. Das Guest Objekt wird dem Vektor guest hinzugefügt und zurückgegeben. 5. Entwickeln Sie die Funktion Reservation* addreservation(guest* guest, Room* room, Hotel* hotel) (Reservierung hinzufügen). In ihr wird ein neues Reservation Objekt angelegt und guest, room und hotel gesetzt. Das Reservation Objekt wird dem Vektor reservation hinzugefügt und zurückgegeben. 6. Entwickeln Sie einen Konstruktor ManagementSystem(Hotel* hotel ), in dem die Instanzvariable hotel initialisiert wird. 7. Entwickeln Sie die Funktion printallreservations() welche alle Reservierungen in folgender Form ausgibt: Hotel Name Zimmernummer Anzahl der Betten Hilton Peter 2 2 Hilton Ulla 9 1 Hilton Rosi Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 11

12 6: Tests (20 Punkte) 1. Erstellen Sie ein Hotel Objekt mit dem Namen Hilton 2. Erstellen Sie ein ManagementSystem Objekt und übergeben sie dem Konstruktor das Hotel Objekt 3. Erstellen Sie drei Guest Objekte mit den Namen Ulla, Rosi und Peter 4. Erstellen Sie 100 Room Objekte mit den Zimmernummern Jedes Zimmer mitungerader Zimmernummer besitzt dabei ein (1) Bett und Zimmer mit gerade Zimmernummer besitzt zwei (2) Betten. 5. Erzeugen Sie drei Reservierungen: Ulla reserviert Zimmer 2, Peter das Zimmer 9 und Rosi das Zimmer Geben Sie alle Reservierungen am Bildschirm aus 7: Dokumentation (10 Punkte) Dokumentieren Sie die Außensicht Ihrer Anwendung, also alle öffentlichen Operationen in den *.h-dateien in deutscher oder englischer Sprache. Hinweise zur Realisierung 1. Außer dem Hilfesystem des Visual C++ sind keine Hilfsmittel erlaubt. 2. Die Einhaltung der Ausbaustufen ist zwingend vorgeschrieben. Sichern Sie jede Ausbaustufe in einem Unterverzeichnis mit Namen NoteX; X = 1,2,3,4. Wer nur eine Ausbaustufe hat, kann bestenfalls die Note ausreichend erhalten. 3. Schreiben Sie in jede *.cpp oder *.h Datei, die Sie erzeugen, Ihren Namen als Kommentar, damit auch im Notfall eine Zuordnung möglich ist. 4. Die Verwendung der angegebenen Klassen, Methoden und Attribute auch in Ihren Bezeichnungen ist vorgeschrieben. Abweichungen werden mit Punkteabzug gewertet. 5. Es gelten weiterhin die Allgemeinen Programmierrichtlinien. Verstöße werden mit Punkteabzug gewertet. 6. Statt des oben genannten Datentyps char * kann auch der Typ string verwandt werden und statt des Feldes ein Vektor über Mannschaftszeiger. Ansonsten sind die Datentypen der Attribute zwingend vorgeschrieben. Aufgabe: Marco Münch B.Sc. 12

13 5 Übung - Probeklausur SS 2010 Typ Prof.Humm Aufgabe : Bank-Verwaltungs-System In dieser Klausur werden Sie prototypisch ein Bank-Verwaltungs-System implementieren. Das folgende UML Diagramm gibt eine Übersicht über die gesamte zu erstellende Anwendung: Entwickeln Sie die Anwendung Schritt für Schritt in der angegebenen Reihenfolge. Insgesamt gibt es 100 Punkte zu erreichen. 1: Klasse Customer (10 Punkte) 1. Erstellen Sie eine neue Klasse Customer. 2. Erstellen Sie eine private Instanzvariable name vom Typ string. 3. Entwickeln Sie die Funktion string getname() mit der üblichen Getter-Semantik. 4. Entwickeln Sie einen Konstruktor Customer(string customer ), in dem die Instanzvariable name initialisiert wird. 5. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 2: Klasse Account (10 Punkte) 13

14 1. Erstellen Sie eine neue Klasse Account (Konto). 2. Erstellen Sie zwei private Instanzvariablen accountnumber vom Typ int und balance vom Typ float. 3. Entwickeln Sie die Funktion float getbalance() mit der üblichen Getter-Semantik. 4. Entwickeln Sie die Funktion void setbalance(float Balance) mit der üblichen Setter- Semantik. 5. Entwickeln Sie die Funktion int getaccountnumber() mit der üblichen Getter- Semantik. 6. Entwickeln Sie die Funktion void printaccount() welche die beiden Attribute am Bildschirm ausgibt. Kontonummer: Kontostand: Euro 7. Entwickeln Sie einen Konstruktor Account(int accountnumber ), in dem die Instanzvariable accountnumber und initialisiert wird. 8. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 3: Klasse AccountManagementSystem (16 Punkte) 1. Erstellen Sie eine neue Klasse AccountManagementSystem (Kontoverwaltungssystem). 2. Erstellen Sie drei private Instanzvariablen : accountid vom Typ int, customer vom Typ Customer* und acounts vom Typ vector<account*>. 3. Entwickeln Sie einen Konstruktor AccountManagementSystem(int accountid, Customer* customer ), in dem die Instanzvariablen accountid und customer initialisiert werden. 4. Entwickeln Sie die Funktion int getaccountid() mit der üblichen Getter-Semantik. 5. Entwickeln Sie die Funktion Customer* getcustomer() mit der üblichen Getter- Semantik. 6. Erstellen Sie die Funktion Account* createnewaccount(int accountnumber). In ihr wird ein neues Account Objekt angelegt und accountnumber gesetzt. Das Account Objekt wird dem Vektor accounts hinzugefügt und als Pointer zurückgegeben. 7. Erstellen Sie die Funktion void PayIn(Account* account, float value). Die Funktion zahlt den Geldbetrag (value) auf ein bestimmtes Konto (account) ein. ACHTUNG! Die Berechnung erfolgt im AccountManagementSystem. Tipp: getund setbalance 14

15 8. Erstellen Sie die Funktion void PayOut(Account* account, float value). Die Funktion zieht den Geldbetrag (value) auf ein bestimmtes Konto (account) ab. ACHTUNG! Die Berechnung erfolgt im AccountManagementSystem. Tipp: getund setbalance 9. Erstellen Sie die Funktion void printaccounts() welche eine Übersicht aller Konten eines Kunden ausgibt und am Ende deren Gesamt Salto. Kontostand der Konten mit der ID : Kontonummer: Kontostand: Euro Kontonummer: Kontostand: Euro Kontonummer: 3238 Kontostand: Euro Gesamtsalto Euro 10. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 4: Bank (32 Punkte) 1. Erstellen Sie eine neue Klasse Bank. 2. Erstellen Sie drei private Instanzvariablen : customer vom Typ vector<customer*>, accountmanagementsystem vom Typ vector<accountmanagementsystem*> und account vom Typ vecor<account*>. 3. Entwickeln Sie die Funktion Customer* addcustomer(string name ) (Kunde hinzufügen). In ihr wird ein neues Customer Objekt angelegt und name gesetzt. Das Customer Objekt wird dem Vektor customer hinzugefügt und zurückgegeben. 4. Entwickeln Sie die Funktion Customer* getcustomer() mit der üblichen Getter- Semantik. 5. Entwickeln Sie die Funktion AccountManagementSystem* addaccountmanagement- System(Customer* customer, int accountid) (Account Management System hinzufügen). In ihr wird ein neues AccountManagementSystem Objekt angelegt, customer und accountid setzt. Das AccountManagementSystem Objekt wird dem Vektor AccountManagementSystem hinzugefügt und zurückgegeben. 6. Entwickeln Sie die Funktion AccountManagementSystem* getaccountmanagement- System(Customer* customer ) mit der üblichen Getter-Semantik. 7. Entwickeln Sie die Funktion Account* addaccount(accountmanagementsystem* AccountManagementSystem, int accountnumber) (Konto hinzufügen). In ihr wird ein neues Account Objekt angelegt und AccountManagementSystem und account- Number gesetzt. Das Account Objekt wird dem Vektor account hinzugefügt und zurückgegeben. 15

16 8. Entwickeln Sie die Funktion void printallaccounts(), welche alle Konten auf dem Bildschirm ausgibt: Kontostand der Konten mit der ID : Kontonummer: Kontostand: Euro Kontonummer: Kontostand: Euro Kontonummer: 3238 Kontostand: Euro Gesamtsalto Euro Kontostand der Konten mit der ID : Kontonummer: 3678 Kontostand: Euro Gesamtsalto Euro 9. Entwickeln Sie die Funktion bool transfer(account* inputacount, Acount* output- Account, float value) welche einen Geldbetrag (value) vom einem bestimmten Konto (inputacount) aus ein anderes Empfängerkonto (outputaccount). Die Funktion soll false zurückgeben wenn das Konto (inputacount) über weniger Geld verfügt als der Geldbetrag zu überweisen das Empfängerkonto (outputaccount) nicht existiert 10. Stellen Sie sicher, dass Ihr Code fehler- und warnungsfrei kompiliert. 5: Tests (20 Punkte) 1. Erzeugen Sie ein Bank Objekt. 2. Erzeugen Sie drei Kunden mit addcustomer: Rosi, Heinrich und Ingrid 3. Erstellen Sie für diese drei Kunden jeweils ein Account Managment System. 4. Erzeugen Sie für diese drei Kunden jeweils ein Konto (Account) mit einer von Ihnen gewählten Kontonummer. 5. Der Kunde Heinrich eröffnet ein zusätzliches Konto 6. Zahlen Sie auf jedes Konto 500 Euro ein 7. Zeigen Sie eine komplette Übersicht aller Konten an 8. Überweisen (transfer) Sie 50 Euro vom Konto Rosi auf das Konto von Ingrid 9. Überweisen (transfer) Sie 250 Euro vom einem Konto von Heinrich auf das Konto von Ingrid 16

17 10. Zeigen Sie eine komplette Übersicht aller Konten an 6: Dokumentation (restliche Punkte) Dokumentieren Sie die Außensicht Ihrer Anwendung, also alle öffentlichen Operationen in den *.h-dateien in deutscher oder englischer Sprache. Hinweise zur Realisierung 1. Außer dem Hilfesystem des Visual C++ sind keine Hilfsmittel erlaubt. 2. Die Einhaltung der Ausbaustufen ist zwingend vorgeschrieben. Sichern Sie jede Ausbaustufe in einem Unterverzeichnis mit Namen NoteX; X = 1,2,3,4. Wer nur eine Ausbaustufe hat, kann bestenfalls die Note ausreichend erhalten. 3. Schreiben Sie in jede *.cpp oder *.h Datei, die Sie erzeugen, Ihren Namen als Kommentar, damit auch im Notfall eine Zuordnung möglich ist. 4. Die Verwendung der angegebenen Klassen, Methoden und Attribute auch in Ihren Bezeichnungen ist vorgeschrieben. Abweichungen werden mit Punkteabzug gewertet. 5. Es gelten weiterhin die Allgemeinen Programmierrichtlinien. Verstöße werden mit Punkteabzug gewertet. 6. Statt des oben genannten Datentyps char * kann auch der Typ string verwandt werden und statt des Feldes ein Vektor über Mannschaftszeiger. Ansonsten sind die Datentypen der Attribute zwingend vorgeschrieben. Aufgabe: Björn Berezowski B.Sc. Marco Münch B.Sc. 17

SS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

SS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof. SS 2010 Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1 Übungsblatt 1 Übung - Probeklausur SS 2010 Typ Prof.Humm Aufgabe : Bank-Verwaltungs-System In dieser Klausur werden

Mehr

17 00 01 Übungen zu Computeranwendung und Programmierung WS 13/14

17 00 01 Übungen zu Computeranwendung und Programmierung WS 13/14 17 00 01 Übungen zu Computeranwendung und Programmierung WS 13/14 Übungseinheit 2. - 6. Dezember 2013 Aufgabe 1 Es gibt zwei Roboter in einem durch Mauern abgeschlossenen Labyrinth unbekannter Größe. Der

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Arrays Fortgeschrittene Verwendung

Arrays Fortgeschrittene Verwendung Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung

Mehr

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

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen

Mehr

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

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

Mehr

Grundlagen Programmierung

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

Mehr

Kapitel 3 Das Projekt Bankkonto Seite 1

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

Mehr

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

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

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

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

Mehr

JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung

JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung Dipl.

Mehr

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

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

Mehr

Javakurs 2013 Objektorientierung

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

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

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

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

Mehr

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

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

Mehr

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

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

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird

Mehr

Inhalt: Version 1.7.5

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

Mehr

Klassenattribute und -methoden, Vererbung

Klassenattribute und -methoden, Vererbung Klassenattribute und -methoden, Vererbung Michael Dienert 27. März 2002 1 Prüfungsaufgabe Anwendungsentwicklung Winter 2001 Die folgende Aufgabe stammt aus der Abschlussprüfung für Fachinformatiker Anwendungsentwicklung

Mehr

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004

Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Name : Vorname : Matrikelnummer : Hauptfach : Nebenfach/Fachrichtung Hinweise : 1. Überprüfen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Software Engineering Übung 4 Architektur, Modulentwurf

Software Engineering Übung 4 Architektur, Modulentwurf software evolution & architecture lab Software Engineering Übung 4 Architektur, Modulentwurf 1 Informationen 1.1 Daten Ausgabe Di 27.10.2009 Abgabe So 08.11.2009 bis 23:59 Uhr Besprechung am Di 17.11.2009

Mehr

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

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

Mehr

Meeting C++ C++11 R-Value Referenzen

Meeting C++ C++11 R-Value Referenzen Meeting C++ Detlef Wilkening http://www.wilkening-online.de 09.11.2012 Inhalt Motivation L-Values und R-Values R-Value Referenzen Move Semantik std::move Funktionen mit R-Value-Referenz Parametern Fazit

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

Projekt AGB-10 Fremdprojektanalyse

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

Mehr

Programmierprojekt Aufgabe 1

Programmierprojekt Aufgabe 1 v01 10.05.2009 Die Formalitäten vorab (WICHTIG!!!): Technische Universität Darmstadt Fachbereich Informatik Prof. Dr. Johannes Fürnkranz Allgemeine Informatik 2 im SS 2009 Programmierprojekt Aufgabe 1

Mehr

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

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

Mehr

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

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

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Bachelor-Klausur im WiSe 2013 / 2014. Grundlagen der Informatik

Bachelor-Klausur im WiSe 2013 / 2014. Grundlagen der Informatik Fachhochschule Kaiserslautern FB Informatik und Mikrosystemtechnik Prof. Dr. M. Duque-Antón Bachelor-Klausur im WiSe 2013 / 2014 im Fach Grundlagen der Informatik Angewandte Informatik / Medieninformatik

Mehr

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

Mehr

Kapitel 6. Vererbung

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

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Kapitel 6. Vererbung

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

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

Perzentile mit Hadoop ermitteln

Perzentile mit Hadoop ermitteln Perzentile mit Hadoop ermitteln Ausgangspunkt Ziel dieses Projektes war, einen Hadoop Job zu entwickeln, der mit Hilfe gegebener Parameter Simulationen durchführt und aus den Ergebnissen die Perzentile

Mehr

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

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

Mehr

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords 4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2) DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2) Aufgabe 3 Bankkonto Schreiben Sie eine Klasse, die ein Bankkonto realisiert. Attribute für das Bankkonto sind der Name und Vorname des Kontoinhabers,

Mehr

Vorkurs C++ Programmierung

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

Mehr

Lösungsvorschlag für Übungsblatt 4 Software Engineering 1 (WS 2012/13)

Lösungsvorschlag für Übungsblatt 4 Software Engineering 1 (WS 2012/13) Prof. Ina Schaefer Software Systems Engineering TU Braunschweig Lösungsvorschlag für Übungsblatt 4 Software Engineering 1 (WS 2012/13) Ausgabe: Kleine Übung: 07. Dezember/10. Dezember 2012 Abgabe: Kleine

Mehr

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

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

Mehr

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

Mehr

Java Einführung Methoden in Klassen

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

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr Aufgabe 8.1: Zeigerverdopplung Ermitteln Sie an folgendem Beispiel den Rang für jedes Listenelement sequentiell und mit dem in der Vorlesung vorgestellten parallelen

Mehr

Vertrieb durch: h+f Informatik und Elektrotechnik Washingtonstrasse 32 CH-9400 Rorschach Tel: +41 (0)71 845 45 40 Mobile: +41 (0)79 600 80 57

Vertrieb durch: h+f Informatik und Elektrotechnik Washingtonstrasse 32 CH-9400 Rorschach Tel: +41 (0)71 845 45 40 Mobile: +41 (0)79 600 80 57 ELEKTRONISCHES RESERVIERUNGSSYSTEM Version 9.0 Vertrieb durch: h+f Informatik und Elektrotechnik Washingtonstrasse 32 CH-9400 Rorschach Tel: +41 (0)71 845 45 40 Mobile: +41 (0)79 600 80 57 starten Eingabe

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009 Überblick Teil 1: Lexen und Parsen Die Sprache LFP +C Professur

Mehr

Softwareentwicklung Dokumentation mit JavaDoc

Softwareentwicklung Dokumentation mit JavaDoc Mag. iur. Dr. techn. Michael Sonntag Softwareentwicklung Dokumentation mit JavaDoc E-Mail: sonntag@fim.uni-linz.ac.at http://www.fim.uni-linz.ac.at/staff/sonntag.htm Institut für Informationsverarbeitung

Mehr

PHP Programmierung. Seminarunterlage. Version 1.02 vom

PHP Programmierung. Seminarunterlage. Version 1.02 vom Seminarunterlage Version: 1.02 Version 1.02 vom 27. August 2013 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

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

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und

Mehr

5 Projekt Bankverwaltung

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

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Winter 2009/2010, 18. Februar 2010 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name:

Mehr

OO-Design. Klausur FHF * WI1 / WI2 * SS 2000 MUSTERLÖSUNG

OO-Design. Klausur FHF * WI1 / WI2 * SS 2000 MUSTERLÖSUNG OO-Design Klausur FHF * WI / WI2 * SS 2000 MUSTERLÖSUNG Aufgabe : (28 Punkte) - Ergänzen Sie zum Fallbeispiel "Seminaranmeldung" (s. Anhang) das vorgegebene Use-Case- Diagramm um die fehlenden Use Cases,

Mehr

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

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

Mehr

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java Grundlagen von Java Aufgabe 1: Typen und Zuweisungen in Java Welche der folgenden Java-Anweisungen sind fehlerhaft? Handelt es sich um einen Compiler- oder einen Laufzeitfehler? Anmerkung: Folgefehler

Mehr

Kapitel 14. Systemarchitektur

Kapitel 14. Systemarchitektur 1 Kapitel 14 Ziele 2 Grundprinzipien der verstehen Schichtenarchitekturen kennenlernen Modelle und Programme mit Paketen strukturieren Eine Architektur für eine einfache Bankanwendung konstruieren Grundprinzipien

Mehr

Objektorientierte Programmierung

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

Mehr

Einführung in C++ Operatoren überladen (Klassen)

Einführung in C++ Operatoren überladen (Klassen) Einführung in C++ Operatoren überladen (Klassen) Operatoren überladen Die Überladung von Operatoren ermöglicht es, vorhandene Operatoren (+,-,...) auch auf Objekte von Klassen anzuwenden. Die meisten der

Mehr

Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse

Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 25. Mai 2009 1/10 Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse Prof. G. Kemnitz Institut

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

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

Mehr

PHP Übungsaufgabe 3 1 / 5. Doing Web Apps. PHP Übungsaufgabe 3

PHP Übungsaufgabe 3 1 / 5. Doing Web Apps. PHP Übungsaufgabe 3 1 / 5 Doing Web Apps PHP Übungsaufgabe 3 Werkzeuge Text-Editor, beispielsweise Notepad++ Webserver mit aktiviertem PHP Modul + MySQL-Datenbank Unterlagen Ziele SelfHTML PHP API Handbuch Alle Dokumente

Mehr

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung C++ - Einführung in die Programmiersprache Objektorientierte Programmierung hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Projekt

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Verarbeitung der Eingangsmeldungen in einem Callcenter

Verarbeitung der Eingangsmeldungen in einem Callcenter Q-up ist ein Produkt der: Anwendungsbeispiele Verarbeitung der Eingangsmeldungen in einem Callcenter Der Testdatengenerator Der Testdatengenerator Verarbeitung der Eingangsmeldungen in einem Callcenter

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println("Current Bank balance: " + b.

// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println(Current Bank balance:  + b. / Testtreiberklasse, welche das Bankensystem testet. Es werden neue Bankkonten angelegt und Geld deponiert, abgehoben und transferiert. public class Main { / Main Methode fuehrt bestimmte Testfaelle aus.

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Einführung in ActionScript

Einführung in ActionScript Fachbereich Mathematik und Informatik Softwareprojekt: Spieleprogrammierung Einführung in ActionScript Do, Hoang Viet(do@mi.fu-berlin.de) Freie Universität Berlin, SoSe 2012 Agenda Allgemeine Einführung

Mehr

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Java-Vorkurs 2015. Wintersemester 15/16

Java-Vorkurs 2015. Wintersemester 15/16 Java-Vorkurs 2015 Wintersemester 15/16 Herzlich Willkommen! package de.unistuttgart.47.01.javavorkurs; public class WelcomeErstis { public static void main(string[] args){ System.out.println( Herzlich

Mehr

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

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

Mehr

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

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

Mehr

Problemdefinition. Cash Flow Reminder. 1 Problembeschreibung: 2 Projektziel: 3 Aufgaben des Benutzers

Problemdefinition. Cash Flow Reminder. 1 Problembeschreibung: 2 Projektziel: 3 Aufgaben des Benutzers Cash Flow Reminder Problemdefinition 1 Problembeschreibung: Viele Studenten verfügen über ein eher geringes monatliches Budget, mit welchem sie aber alle Lebensunterhaltskosten decken sollten. Deshalb

Mehr

Kurs 1575, Musterlösung zur Winter Klausur 2002/03

Kurs 1575, Musterlösung zur Winter Klausur 2002/03 1 0 Kurs 1575, Musterlösung zur Klausur im Wintersemester 2002/03 1 Kurs 1575, Musterlösung zur Winter Klausur 2002/03 Aufgabe 1: Warteschlange Wer kennt das Problem nicht? Sie wollen noch schnell im Supermarkt

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

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

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Leitfaden zur Schulung

Leitfaden zur Schulung AWO Ortsverein Sehnde Reiner Luck Straße des Großen Freien 5 awo-sehnde.de PC Verwaltung für Vereine Leitfaden zur Schulung Inhalt Sortieren nach Geburtsdaten... 2 Sortieren nach Ort, Nachname, Vorname...

Mehr

17.2 MS-Access Projekte

17.2 MS-Access Projekte 964 Von MS-Access 2000 zum SQL-Server 17.2 MS-Access Projekte MS-Access-Projekte, die die Dateiendung adp besitzen, werden als Front-End-Anwendung verwendet. Für die Back-End-Seite gibt es mehrere Möglichkeiten.

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

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

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr