iterativ inkrementelle Entwicklung

Größe: px
Ab Seite anzeigen:

Download "iterativ inkrementelle Entwicklung"

Transkript

1 iterativ inkrementelle Entwicklung Stephan Kleuker 312

2 Fallstudie: Studentenverwaltung Aufgabenstellung: Zu entwickeln ist eine auf Texteingaben und Textausgaben basierende Verwaltung von Studierenden, dabei soll folgende Funktionalität geboten werden: neuen Studenten eintragen und in die Verwaltung übernehmen Studenten anhand der Matrikelnummer suchen Vor- und Nachname eines anhand seiner Matrikelnummer identifizierten Studenten ändern Ermittlung der Anzahl der Studierenden in einem ausgewählten Studiengang Die bisherige Klasse Student kann genutzt werden Stephan Kleuker 313

3 Zentrale Idee 1: systematische Planung welche Klassen benötigt man welche Methoden müssen Objekte der Klassen zur Verfügung stellen ersten beiden Schritte werden schrittweise durch Programmieraufgaben gelehrt und in der Veranstaltung "Objektorientierte Analyse und Design" aufgearbeitet welchen Algorithmus nutzt man in den Methoden Erfahrungen einfließen lassen ähnliche Aufgaben mit zugehörigen Lösungen studieren Algorithmus auf Papier als Aktivitätsdiagramm spezifizieren Inkrementell und iterativ entwickeln Stephan Kleuker 314

4 Zentrale Idee 2: Inkrementelle Entwicklung Programm wird schrittweise entwickelt zuerst eine Funktionalität vollständig realisieren, dann nächste ergänzen jede entwickelte Funktionalität wird zuerst getestet, dann neue hinzugefügt nach jeder neuen Funktionalität werden alte Tests wiederholt Vorgehen auch auf Aktivitätsdiagramme übertragbar: erst typischen Ablauf (einfache Sequenz) zeichnen dann für jede Aktion nacheinander über mögliche Alternativen nachdenken Stephan Kleuker 315

5 Zentrale Idee 3: Iterative Entwicklung zuerst nur minimale Implementierung public void methodeohnerueckgabe(<parameter>){ public Integer methodemitrueckgabe(<parameter>){ return null; dann typischen Ablauf ergänzen dann Alternativen analysieren, Spezialfälle früh abarbeiten bei komplexeren Berechnungen über Auslagerung in private Methoden nachdenken bei Code-Wiederholung Auslagerung in private Methode (eng verwandt mit Inkrement-Begriff) Stephan Kleuker 316

6 Erste Programmplanung statt Programmcode steht gewünschte Berechnung in Aktion Funktionalität auswählen [neuer Studi] [Studi suchen] [Studi ändern] [Anzahl berechnen] [Ende] Studentendaten eintragen und in Liste packen Matrikelnummer eingeben und zugehörigen Studenten ausgeben Matrikelnummer eingeben und Studentendaten ändern Studiengang eingeben und zugehörige Studentenzahl ausgeben Stephan Kleuker 317

7 weitere Entwicklung nach der ersten Planung kann mit der Realisierung begonnen werden Planung erlaubt hier parallele Arbeiten an einzelnen Funktionalitäten, nachdem Klassenaufbau geklärt ist import java.util.arraylist; public class Studentenverwaltung{ private ArrayList<Student> studenten; public Studentenverwaltung(){ this.studenten = new ArrayList<Student>(); hier nur ein Weg vorgestellt Stephan Kleuker 318

8 Überlegung zu get- und set-methoden set-methode und Konstruktor garantieren, dass man nicht über die leere Liste nachdenken muss damit nicht auf "Innereien" gearbeitet wird, gibt es Methode hinzufuegen public ArrayList<Student> getstudenten() { return this.studenten; public void setstudenten(arraylist<student> studenten) { if(studenten!= null){ this.studenten = studenten; public void hinzufuegen(student neu){ this.studenten.add(neu); Stephan Kleuker 319

9 Realisierung des Dialogs (Prinzip bekannt) (1/2) public void steuern(){ Integer ein = -1; EinUndAusgabe io = new EinUndAusgabe(); while(ein!=0){ io.ausgeben("n\u00e4chste Aktion:\n" + " (0) Programm beenden\n" + " (1) Neuen Studenten einf\u00fcgen\n" + " (2) Student mit Matrikelnummer suchen\n" + " (3) Studierendendaten \u00e4ndern\n" + " (4) Studierende pro Studiengang: "); ein = io.leseinteger(); switch(ein){ case 0: { break; case 1: { studenteingeben(); break; Stephan Kleuker 320

10 Realisierung des Dialogs (Prinzip bekannt) (2/2) case 2: { studentsuchen(); break; case 3: { studentbearbeiten(); break; case 4: { studentenzaehlen(); break; default: { io.ausgeben("zahl zwischen 0 und 4 eingeben\n"); break; io.ausgeben("\n"); Stephan Kleuker 321

11 Erstes Inkrement mit erster Iteration komplettieren Steuerung manuell testbar durch folgende Methoden public void studenteingeben(){ public void studentsuchen(){ public void studentbearbeiten(){ public void studentenzaehlen(){ Stephan Kleuker 322

12 studenteingeben() mit Hilfsmethoden (bekannt) letzte Zeile leicht modifiziert public void studenteingeben(){ Student ergebnis = new Student(); ergebnis.setvorname(nichtleerertext("vorname")); ergebnis.setnachname(nichtleerertext("nachname")); ergebnis.setstudiengang(nichtleerertext("studiengang")); ergebnis.setgeburtsjahr(zahlzwischen("geburtsjahr",1900,2000)); ergebnis.setmatrikelnummer(zahlzwischen("matrikelnummer",99999, )); this.studenten.add(ergebnis); Stephan Kleuker 323

13 studentsuchen() Aktivitätsdiagramm verfeinern Iteration 0 Iteration 1 Matrikelnummer eingeben und zugehörigen Student ausgeben Matrikelnummer eingeben Student suchen Iteration 2 [gefunden] Matrikelnummer eingeben Student suchen Student ausgeben nicht gefunden ausgeben [nicht gefunden] Student ausgeben Stephan Kleuker 324

14 Aktion "Student suchen" verfeinert Student ergebnis = null Parameter: Matrikelnummer m Iterator<Student> it= this.studenten.iterator() [!it.hasnext()] [it.hasnext()] Student s = it.next() return ergebnis [s hat übergebene Matrikelnummer m] ergebnis = s [!(s hat übergebene Matrikelnummer m)] Stephan Kleuker 325

15 studentsuchen() Realisierung (1/2) Berechnung von Ein- und Ausgabe trennen Methoden mit gleichen Namen erlaubt, solange Parametertypen unterschiedlich public void studentsuchen(){ EinUndAusgabe io = new EinUndAusgabe(); Integer mat = zahlzwischen("matrikelnummer:", 99999, ); Student s = studentsuchen(mat); if(s!= null){ io.ausgeben("daten: "+s+"\n"); else { io.ausgeben("nicht gefunden\n"); Stephan Kleuker 326

16 studentsuchen() Realisierung (2/2) einfacher Iterator, da Liste nicht leer sein kann Hinweis: Implementierung erlaubt leider doppelte Matrikelnummern public Student studentsuchen(integer mat){ Student ergebnis = null; for(student s:this.studenten){ if(s.getmatrikelnummer().equals(mat)){ ergebnis = s; return ergebnis; Erinnerung: Stephan Kleuker 327

17 Aufbau einer Testumgebung import org.junit.assert; import org.junit.before; import org.junit.test; public class StudentenverwaltungTest { private Studentenverwaltung studis; private Student s1 =new Student("Uwe","X",1987,"IMI",424241); private Student s2 =new Student("Ute","Y",1988,"IMI",424242); private Student s3 =new Student("Ulf","X",1989,"MID",424243); private Student s4 =new public void setup(){ studis = new Studentenverwaltung(); studis.hinzufuegen(s1); studis.hinzufuegen(s2); studis.hinzufuegen(s3); studis.hinzufuegen(s4); Stephan Kleuker 328

18 studentsuchen() - Tests Programme mit direkten Nutzerinteraktionen sind (für uns) recht schwer testbar, Rest geht aber public void testsuchenerfolgreich(){ public void testsuchenerfolglos1(){ public void testsuchenerfolglos2(){ studis = new Studentenverwaltung(); Assert.assertTrue(studis.studentSuchen(424242)==null); Stephan Kleuker 329

19 studentbearbeiten() - Aktivitätsdiagramm Matrikelnummer eingeben und Studentendaten ändern [gefunden] Matrikelnummer eingeben Student suchen [nicht gefunden] neuen Vornamen eingeben neuen Nachnamen eingeben nicht gefunden ausgeben Student aktualisieren Stephan Kleuker 330

20 studentbearbeiten() - Realisierung private void studentbearbeiten(){ EinUndAusgabe io = new EinUndAusgabe(); Integer mat = zahlzwischen("matrikelnummer:", 99999, ); Student s = studentsuchen(mat); if(s == null){ io.ausgeben("nicht gefunden\n"); return; String neuvor = nichtleerertext("neuer Vorname (" +"alt:"+s.getvorname()+"): "); String neunach = nichtleerertext("neuer Nachname (" +"alt:"+s.getnachname()+"): "); s.setvorname(neuvor); s.setnachname(neunach); io.ausgeben("neu: "+s); Stephan Kleuker 331

21 studentenzaehlen() Aktivitätsdiagramm (1/2) Iteration 0 Iteration 1 Studiengang eingeben und zugehörige Studentenzahl ausgeben Studiengangnamen eingeben Studierende zählen Anzahl ausgeben Stephan Kleuker 332

22 studentenzaehlen() Aktivitätsdiagramm (2/2) Integer ergebnis = 0 Parameter: Studiengang fach Iterator<Student> it= this.studenten.iterator() [!it.hasnext()] [it.hasnext()] Student s = it.next() return ergebnis [s ist im übergebenen Studiengang fach] ergebnis =ergebnis +1 [!(s ist im übergebenen Studiengang fach)] Stephan Kleuker 333

23 studentenzaehlen() Realisierung private void studentenzaehlen(){ EinUndAusgabe io = new EinUndAusgabe(); String fach = nichtleerertext("studiengang: "); Integer anzahl = studentenzaehlenin(fach); io.ausgeben("in "+fach+": "+anzahl+"\n"); private Integer studentenzaehlenin(string fach){ Integer ergebnis = 0; for(student s:this.studenten){ if(s.getstudiengang().equals(fach)){ ergebnis = ergebnis + 1; return ergebnis; Stephan Kleuker 334

24 studentenzaehlen() - public void testzaehlen1(){ public void testzaehlen2(){ public void testzaehlen3(){ public void testzaehlen4(){ studis = new Studentenverwaltung(); Assert.assertTrue(studis.studentenZaehlenIn("IMI").equals(0)); Stephan Kleuker 335

25 Beispiel: Inkrementelle Entwicklung nächstes Inkrement: Es sollen Studenten gelöscht werden können. Dazu wird eine Matrikelnummer eingegeben und der zugehörige Student gelöscht. Problem für den Hinterkopf: Wenn man über eine Liste iteriert, kann man dann in der laufenden Bearbeitung Elemente entfernen? Matrikelnummer eingeben und Studenten mit dieser Nummer löschen Stephan Kleuker 336

26 zentraler Löschalgorithmus Parameter: Matrikelnummer m Student ergebnis = null Iterator<Student> it= this.studenten.iterator() [!it.hasnext()] [it.hasnext()] Student tmp = it.next() [tmp hat übergebene Matrikelnummer m] studenten.remove(tmp) [!(tmp hat übergebene Matrikelnummer m)] Stephan Kleuker 337

27 Änderung im Nutzungsdialog in steuern():... + " (4) Studierende pro Studiengang\n" + " (5) Student l\u00f6schen: "); // neu ein = io.leseinteger(); switch(ein){... case 5: { // neu studentloeschen(); break;... Stephan Kleuker 338

28 Löschen mit klassischem Iterator public void studentloeschen(){ Integer mat = zahlzwischen("matrikelnummer", 99999, ); studentloeschen(mat); // mit Iterator löschen, recht einfach public void studentloeschen1(integer mat) { EinUndAusgabe io = new EinUndAusgabe(); Iterator<Student> it = studenten.iterator(); while(it.hasnext()){ Student tmp = it.next(); if(tmp.getmatrikelnummer().equals(mat)){ it.remove(); io.ausgeben("student gel\u00f6scht\n"); Stephan Kleuker 339

29 public void testloeschenerfolg(){ studis.studentloeschen(424242); Assert.assertTrue(studis.studentSuchen(424242)==null); Assert.assertTrue(studis.studentenZaehlenIn("IMI").equals(1)); public void testloeschennichtexistent(){ studis.studentloeschen(414242); Assert.assertTrue(studis.studentenZaehlenIn("IMI").equals(2)); Assert.assertTrue(studis.studentenZaehlenIn("MID").equals(2)); Stephan Kleuker 340

30 Genauere Analyse mit dem Debugger (1/2) Stephan Kleuker 341

31 Genauere Analyse mit dem Debugger (2/2) Stephan Kleuker 342

32 Löschvariante mit direktem Positionszugriff // mit einfacher for-schleife; kritisch bearbeitete // Liste zu ändern, geht aber public void studentloeschen(integer mat) { EinUndAusgabe io = new EinUndAusgabe(); for(integer i=0; i<this.studenten.size(); i++){ Student tmp = this.studenten.get(i); if(tmp.getmatrikelnummer().equals(mat)){ this.studenten.remove(i); io.ausgeben("student gel\u00f6scht\n"); Stephan Kleuker 343

33 Löschvariante mit Iterator und direktem Zugriff public void studentloeschenfalsch(integer mat) { EinUndAusgabe io = new EinUndAusgabe(); for(student tmp:this.studenten){ if(tmp.getmatrikelnummer().equals(mat)){ this.studenten.remove(tmp); io.ausgeben("student gel\u00f6scht\n"); Methode funktioniert nicht!!! es wird eine ConcurrentModificationException geworfen durch impliziten Iterator wird Listenänderung verweigert Stephan Kleuker 344

34 Löschvariante mit Iterator und späterem Zugriff public void studentloeschen3(integer mat) { EinUndAusgabe io = new EinUndAusgabe(); Student weg = null; for(student tmp:this.studenten){ if(tmp.getmatrikelnummer().equals(mat)){ weg = tmp; if (weg!= null){ this.studenten.remove(weg); io.ausgeben("student gel\u00f6scht\n"); Stephan Kleuker 345

35 Löschen mehrerer Elemente nächstes Inkrement: es soll der unwahrscheinliche Fall ergänzt werden, dass alle Studierenden eines Studiengangs gelöscht werden sollen wieder sind alle vorgestellten Varianten möglich hier: Trennung in zu löschende Elemente heraussuchen und danach alle Elemente entfernen falls man sich Positionen der zu entfernenden Elemente merkt (ist weitere Variante), muss man beim Löschen beachten, dass sich Positionen durch das Löschen verändern können Bsp: Lösche an Position 2 und 3, muss als remove(2) und remove(2) realisiert werden (oder: remove(3); remove(2)) Stephan Kleuker 346

36 Studiengang löschen public void studiengangloeschen(){ EinUndAusgabe io = new EinUndAusgabe(); String fach = nichtleerertext("studiengang: "); Integer anzahl = studiengangloeschen(fach); io.ausgeben("es werden "+anzahl+" Studenten gel\u00f6scht\n"); public Integer studiengangloeschen(string fach) { ArrayList<Student> weg = new ArrayList<Student>(); for(student tmp:this.studenten){ if(tmp.getstudiengang().equals(fach)){ weg.add(tmp); for(student tmp:weg){ this.studenten.remove(tmp); return weg.size(); Stephan Kleuker 347

37 public void testloeschenexistierendenstudiengangs(){ Integer anzahl = studis.studiengangloeschen("mid"); asserttrue(anzahl.equals(2)); asserttrue(studis.studentenzaehlenin("imi").equals(2)); public void testloeschennichtexistentenstudiengangs(){ Integer anzahl = studis.studiengangloeschen("iti"); asserttrue(anzahl.equals(0)); asserttrue(studis.studentenzaehlenin("imi").equals(2)); asserttrue(studis.studentenzaehlenin("mid").equals(2)); Stephan Kleuker 348

38 Erweiterung: Austauschstudierende Ansatz 1 Inkrement: es sollen Austauschstudenten mit verwaltet werden können, für die das Herkunftsland mit aufgenommen werden soll; bei einigen Methoden sollen Studierende unterschieden werden ist keine rein funktionale Erweiterung, da neue Objektvariable Ansatz 1: Ergänzung der Klasse Student um Objektvariablen String land Boolean istaustausch machbar, aber Nachteil dass häufig if (this.isaustausch== true) in vielen Methoden steht Stephan Kleuker 349

39 Erweiterung: Austauschstudierende Ansatz 2 Ansatz 2: Ergänzung der Klasse Student um Objektvariable String land Trick: wenn kein Austauschstudent dann land == null; machbar, aber Nachteil dass häufig if (this.land == null) in vielen Methoden steht cool, aber für andere schwer lesbar, da Variable land bzw. Wert null eine besondere Bedeutung zugeordnet wird Stephan Kleuker 350

40 Vererbung Stephan Kleuker 351

41 Erweiterung: Austauschstudierende - Vererbung objektorientierte Antwort heißt: Erweiterung einer existierenden Klasse (meist Vererbung genannt) Der Zugriff auf Teile der erweiterten Klasse erfolgt mit super statt this Stephan Kleuker 352

42 Vererbung mit Konstruktornutzung public class Austauschstudent extends Student{ private String land = null; public Austauschstudent(String land, String vorname, String nachname, Integer geburtsjahr, String studiengang, Integer matrikelnummer){ super(vorname, nachname, geburtsjahr, studiengang, matrikelnummer); this.land = land; // geht auch ohne super, da Student() existiert public Austauschstudent(){ public String getland() { return land; public void setland(string land) { this.land = land; Stephan Kleuker 353

43 Vererbung und Konstruktoren genauer Jeder Konstruktor in einer erbenden (= erweiternden) Klasse ruft Konstruktor der beerbten (= erweiterten) Klasse auf dieser Konstruktoraufruf muss erste Zeile in Konstruktoren der erbenden Klasse sein wird kein Konstruktoraufruf in der erbenden Klasse angegeben, wird automatisch der Default-Konstruktor (= parameterloser Konstruktor) der beerbten Klasse zuerst aufgerufen hat dann beerbte Klasse keinen Default-Konstruktor wird ein Fehler ausgegeben Grundregel der sauberen Programmierung: In Konstruktoren von erbenden Klassen wird als erstes immer ein Konstruktor der Oberklasse aufgerufen; also: public Austauschstudent(){ super(); Stephan Kleuker 354

44 Vererbung, was geht nicht Stephan Kleuker 355

45 Vererbung Nutzung von Gemeinsamkeiten Grundsätzlich kann ein Objekt der erbenden Klasse an jeder Stelle genutzt werden, an der auch ein Objekt der beerbten Klasse stehen kann damit sind alle public-methoden aus der beerbten Klasse in der erbenden Klasse nutzbar! Zuweisungen an Variablen vom Typ der beerbten Klasse sind erlaubt Student s = new Austauschstudent(); Austauschstudent aus = new Student(); // geht nicht, nie!!! Sammlungen mit Objekten des Typs der beerbten Klasse können Objekte der erbenden Klasse aufnehmen ArrayList<Student> studis = new ArrayList<Student>(); studis.add(new Austauschstudent()); Stephan Kleuker 356

46 Integration in die Studentenverwaltung (1/2) in steuern(): + " (7) Austauschstudent einf\u00fcgen: "); // neu ein = io.leseinteger(); switch(ein){... case 7: { // neu austauschstudenteneingeben(); break;... public void austauschstudenteneingeben(){ Austauschstudent ergebnis = new Austauschstudent(); ergebnis.setvorname(nichtleerertext("vorname")); ergebnis.setnachname(nichtleerertext("nachname")); ergebnis.setstudiengang(nichtleerertext("studiengang")); ergebnis.setgeburtsjahr( zahlzwischen("geburtsjahr",1900,2000)); ergebnis.setmatrikelnummer( zahlzwischen("matrikelnummer",99999, )); ergebnis.setland(nichtleerertext("land")); this.studenten.add(ergebnis); Stephan Kleuker 357

47 Integration in die Studentenverwaltung (2/2) leicht modifiziertes Test-Setup mit drei IMI-Studis private Studentenverwaltung studis; private Student s1 =new Student("Uwe","X",1987,"IMI",424241); private Student s2 =new Austauschstudent("CHN","Xi","Yu", 1988,"IMI",424242); private Student s3 =new Austauschstudent("USA","Mo","Jo", 1989,"MID",424243); private Student s4 =new Student("Uta","B",1987,"MID",424244); Alle Tests laufen weiterhin! Stephan Kleuker 358

48 Überschreiben Stephan Kleuker 359

49 Vererbung: Möglichkeiten zur Individualisierung Ab und zu möchte man, dass sich eine Methode bei einer erbenden Klasse etwas anders als bei der beerbten Klasse verhält; hierzu können Methoden überschrieben werden aktuell wird für Austauschstudent und Student die gleiche tostring-methode genutzt public void austauschstudentausgeben(){ Austauschstudent aus =new Austauschstudent("USA","Mo","Jo",1989,"MID",424243); EinUndAusgabe io = new EinUndAusgabe(); io.ausgeben("ausgabe: "+aus); Ausgabe: Mo Jo (424243):MID Nun soll bei Austauschstudenten nur Vorname, Name, Land und Studiengang ausgegeben werden Stephan Kleuker 360

50 Methoden public String tostring(){ return super.getvorname() + " " + super.getnachname() +" (" + this.land+"): " + super.getstudiengang(); Ausgabe: Mo Jo (USA):MID Zugriff auf Methoden der beerbten Klasse über super.<methode> Stephan Kleuker 361

51 zu ist eine Annotation (Erinnerung Annotationen werden zur deklarativen Programmierung genutzt; d. h. es wird beschrieben, was gemacht werden soll, aber nicht wie hier: Der Compilier soll prüfen, dass eine Methode der beerbten Klasse überschrieben wird Annotationen können beliebige Sprachkonstrukte (z. B. Klassen, Objektvariablen, Methoden, lokale Variablen) annotieren Annotationen spielen in C# und Java bei fortgeschrittenen Programmierkonzepten häufig eine zentrale Rolle; wird in der Anfängerveranstaltung aber nicht betrachtet Stephan Kleuker 362

52 Direkter Zugriff auf geerbte Objektvariablen generell können mit get- und set-methoden die Objektvariablen der beerbten Klasse bearbeitet werden einfacher wird es, wenn man Sichtbarkeit protected nutzt public class Student{ protected String vorname ="Eva"; protected String nachname ="Mustermann"; protected Integer geburtsjahr = 1990; protected String studiengang = "IMI"; protected Integer matrikelnummer = ; in public String tostring(){ return super.vorname + " " + super.nachname + " (" + this.land + "): " + super.studiengang; direkter Zugriff auf Objektvariablen der beerbten Klasse durch super.<objektvariable> Stephan Kleuker 363

53 Welche Ausgabemethode wird genutzt? Methode in Klasse Analyse public void waswirdgezeigt(){ ArrayList<Student> list = new ArrayList<Student>(); list.add(new Austauschstudent("USA", "Mo","Jo",1989,"MID",424243)); list.add(new Student("Mo","Jo",1989,"MID",424243)); EinUndAusgabe io = new EinUndAusgabe(); for(student s:list){ io.ausgeben(s+"\n"); Mo Jo (USA): MID Mo Jo (424243):MID Stephan Kleuker 364

Vererbung. Programmierung 1. Stephan Kleuker 423

Vererbung. Programmierung 1. Stephan Kleuker 423 Vererbung Stephan Kleuker 423 Erweiterung: Austauschstudierende - Vererbung objektorientierte Antwort heißt: Erweiterung einer existierenden Klasse (meist Vererbung genannt) Der Zugriff auf Teile der erweiterten

Mehr

Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt. Thema: Grundlagen Programmierung Dozent: Prof. Dr. Stephan Kleuker Seitennummer: Seite 1 von 12 Studiengang: Informatik Technische Informatik Studiensemester: 1 Datum: 26.11.2018 Bearbeitungszeit: 120

Mehr

Eingeben, Ausgeben, Übergeben, Zurückgeben

Eingeben, Ausgeben, Übergeben, Zurückgeben Eingeben, Ausgeben, Übergeben, Zurückgeben eingeben: Werte werden vom Nutzer oder Eingabegeräten (z. B. Maus) eingelesen ausgeben: Werte werden auf der Konsole, in einem Display oder einer Datei ausgegeben

Mehr

Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren.

Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren. Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren. 267 Das hier skizzierte Problem basiert auf der strategischen Entscheidung

Mehr

Genauer müssen in den eckigen Klammern eigentlich Boolesche Bedingungen stehen. Man kann hinter jeden dargestellten Bedingungstext ein "ausgewählt"

Genauer müssen in den eckigen Klammern eigentlich Boolesche Bedingungen stehen. Man kann hinter jeden dargestellten Bedingungstext ein ausgewählt 265 266 267 268 Genauer müssen in den eckigen Klammern eigentlich Boolesche Bedingungen stehen. Man kann hinter jeden dargestellten Bedingungstext ein "ausgewählt" setzen, um dies auch sprachlich zu erreichen.

Mehr

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90

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

Mehr

Klasse Object. Grundlagen Programmierung. Stephan Kleuker 427

Klasse Object. Grundlagen Programmierung. Stephan Kleuker 427 Klasse Object Stephan Kleuker 427 Klasse Object In Java erben alle Klassen automatisch von der Klasse Object, dies ist nicht änderbar Ansatz erlaubt es, über dynamische Polymorphie Gemeinsamkeiten von

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung

Mehr

Objektorientierung. Marc Satkowski 20. November C# Kurs

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

Mehr

Auf dieser und den beiden folgenden Folien wurde jeweils ein neues Objekt der Klasse FigurMalerei erstellt und die angegebene Methode ausgeführt.

Auf dieser und den beiden folgenden Folien wurde jeweils ein neues Objekt der Klasse FigurMalerei erstellt und die angegebene Methode ausgeführt. 432 433 434 435 Auf dieser und den beiden folgenden Folien wurde jeweils ein neues Objekt der Klasse FigurMalerei erstellt und die angegebene Methode ausgeführt. 436 437 438 439 440 441 442 443 Die verkürzte

Mehr

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics

Mehr

Programmierung Nachklausurtutorium

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

Mehr

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife 303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - n 1. Grundelemente der Programmierung n 2. Objekte, Klassen und Methoden n 3. Rekursion und dynamische Datenstrukturen n 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und

Mehr

Objektmethoden. Grundlagen der Programmierung. Stephan Kleuker 121

Objektmethoden. Grundlagen der Programmierung. Stephan Kleuker 121 Objektmethoden Stephan Kleuker 121 Reden mit Objekten bei Objekten können Methoden aufgerufen werden aufgerufene Methoden können Werte der Objektvariablen verändern aufgerufene Methoden können Berechnungen

Mehr

geschachtelte Schleifen

geschachtelte Schleifen geschachtelte Schleifen Stephan Kleuker 270 Einschub: Ineinander geschachtelte Schleifen die innere Schleife wird für jedes Element der äußeren Schleife durchlaufen!!! public void schleifeinschleife(){

Mehr

Zahlensammlung zurückgeben

Zahlensammlung zurückgeben Zahlensammlung zurückgeben Aufgabe: Alle Zahlen von 0 bis einschließlich einem Grenzwert zurück geben in der Klasse ErsteSchleifen public ArrayList zahlenbiszurueckgeben( int grenze){ ArrayList

Mehr

Klassenvariablen und Klassenmethoden

Klassenvariablen und Klassenmethoden Klassenvariablen und Klassenmethoden Stephan Kleuker 394 Erinnerung: zentrale Idee Objektorientierung Klasse public class Student { private int mat; private String name; new new new unabhängige Objekte

Mehr

Wiederholung. Klassenhierarchie:

Wiederholung. Klassenhierarchie: Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse

Mehr

Algorithmen und Datenstrukturen 07

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

Mehr

Erste Java-Programme (Java Wiederholung & Vererbung)

Erste Java-Programme (Java Wiederholung & Vererbung) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Java Wiederholung & ) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 1 - n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen

Mehr

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode folgt im Anschluss. Beispielcode Es gibt eine Klasse Benutzerverwaltung, welche eine Liste mit Benutzern

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

Einführung in C# Teil 3. Matthias Nübling

Einführung in C# Teil 3. Matthias Nübling Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel

Mehr

Programmiertechnik Klassenvariablen & Instantiierung

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

Mehr

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3 Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Einführung in das Programmieren Probeklausur Lösungen

Einführung in das Programmieren Probeklausur Lösungen Einführung in das Programmieren Probeklausur Lösungen Frederik Kanning 01.07.2013 Aufgabe 1 b/c) void definiert Methode ohne Rückgabewert return beendet aktuellen Methodenaufruf wenn Rückgabetyp nicht

Mehr

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7. CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)

Mehr

Probeklausur Informatik 2 Sommersemester 2013

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

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung

Mehr

M3 M4 M7 VORNAME: Gewinnt VERTIEFUNG:

M3 M4 M7 VORNAME: Gewinnt VERTIEFUNG: NACHNAME: Vier SEMESTER: M5 M6 M3 M4 M7 VORNAME: Gewinnt VERTIEFUNG: FV IM VERWENDETE KLASSEN: Als Anlage erhalten Sie einen Ausdruck des vorab bekannt gemachten Quelltextes von verschiedenen Klassen.

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

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

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Eine weitere Veranschaulichung ist, dass wenn eine Methode auf den ganzen Zahlen von 23 bis 42 funktioniert, sie nur durch eine Methode überschrieben

Eine weitere Veranschaulichung ist, dass wenn eine Methode auf den ganzen Zahlen von 23 bis 42 funktioniert, sie nur durch eine Methode überschrieben 365 Eine weitere Veranschaulichung ist, dass wenn eine Methode auf den ganzen Zahlen von 23 bis 42 funktioniert, sie nur durch eine Methode überschrieben werden darf, die zumindest auch auf den Zahlen

Mehr

Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt

Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 13 30.1.2017 Threads II Aufgabe 13.1. Synchronisiertes Lesen und Schreiben Betrachten

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1 Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16 1 Zauberer und Zwerge, Aufgabenteil 1 Stellen Sie sich vor, Sie sollen eine Charakterverwaltung für das neue Onlinerollenspiel

Mehr

Probeklausur: Programmierung WS04/05

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

Mehr

2 Programmieren in Java I noch ohne Nachbearbeitung

2 Programmieren in Java I noch ohne Nachbearbeitung 1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe

Mehr

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article 2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String

Mehr

Informatik II Übung 6

Informatik II Übung 6 Informatik II Übung 6 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 11.4.2018 Carina Fuss 11.4.2018 1 Übung 6 Nachbesprechung Übung 5 Objektorientierung Vererbung, Polymorphie, abstrakte Klassen, Interfaces,

Mehr

Leider gibt es in einigen Fällen keine wirklich einheitlichen Fachbegriffe im Deutschen, obwohl einige als "der Standard" bezeichnet werden.

Leider gibt es in einigen Fällen keine wirklich einheitlichen Fachbegriffe im Deutschen, obwohl einige als der Standard bezeichnet werden. 37 Leider gibt es in einigen Fällen keine wirklich einheitlichen Fachbegriffe im Deutschen, obwohl einige als "der Standard" bezeichnet werden. der Begriff der Klasse ist immer eindeutig. Die verschiedenen

Mehr

Java II - Übungsgruppe

Java II - Übungsgruppe Java II - Übungsgruppe Exercise 1 - Regular Expression Christian Bürckert Universiät des Saarlandes 5. November 2015 1 / 20 Musterlösung - Regular Expression 1 // Static pattern that parses : 2 //

Mehr

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe. Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe http://www.zitate-online.de/autor/goethe-johann-wolfgang-von/ http://www.weimar-lese.de/files_weimar_lese/johann_wolfgang_von_goethe_bearbeitet_von_andreas_werner.jpg

Mehr

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

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

Mehr

Überschreiben von Methoden

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

Mehr

Fragen zur OOP in Java

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

Mehr

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 { Hochschule Harz Programmierung1 Aufgabe 10: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Hashing und Generische Klassen Versuchsziele Kenntnisse

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

Programmieren in Java

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

Mehr

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139 Aufgabe 139 Aufgabe 139 Aufgabenstellung Stellen Sie den folgenden in Feldbaum-Darstellung beschriebenen Binärbaum a) graphisch (welcher Knoten ist die Wurzel?), b) in halbsequentieller Darstellung, c)

Mehr

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

9. Vererbung und Polymorphie. Informatik Vererbung und Polymorphie 1

9. Vererbung und Polymorphie. Informatik Vererbung und Polymorphie 1 9. Vererbung und Polymorphie 1 Wiederholung Vererbung bedeutet, dass eine Klasse Attribute und Methoden an eine andere Klasse weitergeben kann. Im Klassendiagramm stellt man dies durch einen durchgezogenen

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

II.4.6 Collections - 1 -

II.4.6 Collections - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.6 Collections - 1 - Typische Datenstrukturen

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 12.12.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 8 Abgabe: Montag, 19.12.2011, 12.00 Uhr, Informatik

Mehr

Javakurs für Anfänger

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

Mehr

Listing 1: Cowboy. Listing 2: Woody

Listing 1: Cowboy. Listing 2: Woody Musterlösung Test 3 Aufgabe 1: Cowboy Listing 1: Cowboy class Cowboy { public String rope ( Cowboy that ) { if ( this == that ) { return exclaim (); 5 else { return " Caught "; public String exclaim ()

Mehr

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II 432 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 433 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2016/2017 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

JUnit 4 Tutorial. Wolfgang Stöttinger

JUnit 4 Tutorial. Wolfgang Stöttinger JUnit 4 Tutorial Wolfgang Stöttinger JUnit 4 Tutorial... 1 1 Einführung in JUnit 4... 3 1.1 Wie funktioniert JUnit?... 3 1.2 Annotations... 3 1.2.1 Test Annotation... 3 1.2.2 Before Annotation... 3 1.2.3

Mehr

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II 446 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 447 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 3. Klausur Lösung Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Arten von Klassen-Beziehungen

Arten von Klassen-Beziehungen Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Objektorientierung III

Objektorientierung III Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 10 9.1.2017 Objektorientierung III Aufgabe 10.1. Wir sind doch alle gleich In der Vorlesung

Mehr

PROGRAMMIERUNG IN JAVA

PROGRAMMIERUNG IN JAVA PROGRAMMIERUNG IN JAVA ZUWEISUNGEN (1) Deklaration nennt man die Ankündigung eines Platzhalters (Variablen) und Initialisierung die erste Wertvergabe bzw. die konkrete Erstellung des Platzhalters. In einem

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen Fortgeschr. Objektorientierung SS 2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Vorlesung Objektorientierte Programmierung Klausur

Vorlesung Objektorientierte Programmierung Klausur Prof. Dr. Stefan Brass 16. Februar 2007 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Klausur Name: Matrikelnummer: Studiengang: Aufgabe

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung WS 2006/2007 Klassen und Vererbung in Java Walter Binder Universität Lugano 2006-11-23 Objektorientierte Programmierung 1 Überblick Konstruktoren Verdecken versus Überschreiben

Mehr

IT I: Heute. Nachbetrachtung Wissensüberprüfung. Einführung Vererbung. Roboter in becker.robots. Filialenbelieferung 4.11.

IT I: Heute. Nachbetrachtung Wissensüberprüfung. Einführung Vererbung. Roboter in becker.robots. Filialenbelieferung 4.11. IT I: Heute Nachbetrachtung Wissensüberprüfung Einführung Vererbung Roboter in becker.robots Filialenbelieferung 4.11.2014 IT I - VO 4 1 Organisatorisches Tutorium am Mi, 12.11. schon um 11 Uhr (bis 12:30).

Mehr

Schleife. Programmierung 1. Stephan Kleuker 291

Schleife. Programmierung 1. Stephan Kleuker 291 Schleife Stephan Kleuker 291 Idee - Schleife oftmals sollen gleiche Programmzeilen wiederholt ausgeführt werden wiederholtes Hinschreiben keine gute Idee weiterhin muss festgelegt werden können, wie oft

Mehr

Zweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts

Zweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts Iterator (Cursor) Zweck: sequentieller Zugriff auf Elemente eines Aggregats Anwendungsgebiete: Zugriff auf Aggregatinhalt innere Darstellung bleibt gekapselt mehrere Abarbeitungen des Aggregatinhalts einheitliche

Mehr

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Aufgaben zur Klausur Objektorientierte Programmierung im WS 2003/04 (IA 252) Zeit: 90 Minuten erlaubte Hilfsmittel: keine

Mehr