iterativ inkrementelle Entwicklung
|
|
- Gotthilf Becker
- vor 6 Jahren
- Abrufe
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 Stephan Kleuker 423 Erweiterung: Austauschstudierende - Vererbung objektorientierte Antwort heißt: Erweiterung einer existierenden Klasse (meist Vererbung genannt) Der Zugriff auf Teile der erweiterten
MehrDies 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
MehrEingeben, 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
MehrDurch 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
MehrGenauer 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.
MehrKonstruktor. 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
MehrKlasse 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
MehrII.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
MehrObjektorientierung. 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
MehrAuf 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
MehrVerkettete 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).
MehrProgrammieren 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
MehrProgrammierung 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
MehrBei 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
MehrII.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
MehrObjektmethoden. 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
Mehrgeschachtelte 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(){
MehrZahlensammlung 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
MehrKlassenvariablen 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
MehrWiederholung. 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
MehrAlgorithmen 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
MehrErste 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/
MehrII.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
MehrStä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
MehrInstitut 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
MehrVorkurs 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
MehrEinfü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,
MehrAufgabenblatt 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
MehrProgrammiertechnik 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
MehrVorausgesetzte 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,
MehrEinfü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
MehrCoMa 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)
MehrProbeklausur 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
MehrII.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
MehrM3 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.
MehrJavakurs 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
MehrEinfü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
MehrEinfü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
MehrC++ - 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.
MehrII.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
MehrSoftware 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
MehrEinfü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
MehrJavakurs 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
MehrFH 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
MehrEine 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
MehrLehrstuhl 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
MehrJavakurs 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
MehrSoftware 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
MehrTutorial 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
MehrProbeklausur: 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,
Mehr2 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
Mehr2.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
MehrInformatik 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,
MehrLeider 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
MehrJava 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 //
MehrWas 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
MehrObjektorientierte 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
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
MehrFragen 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?...
MehrAufgabe11. 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
MehrKapitel 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
MehrProgrammieren 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
MehrIT 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
Mehr4. 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
MehrGrundlagen 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)
MehrBeispiel: 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
MehrTU 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)
Mehr9. 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
MehrObjektorientierte 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
MehrII.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
MehrFakultä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
MehrJavakurs 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
MehrListing 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 ()
MehrPolymorphie. 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
MehrProbeklausur 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
MehrJUnit 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
MehrPolymorphie. 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
Mehr1 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
MehrProgrammiermethodik 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
MehrArten 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
MehrProgrammieren 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
MehrObjektorientierung 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
MehrPROGRAMMIERUNG 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
MehrJavakurs 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
MehrUniversitä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
MehrEinstieg 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
MehrTheorie 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
MehrEinstieg 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
MehrVorlesung 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
MehrObjektorientierte 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
MehrIT 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).
MehrSchleife. 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
MehrZweck: 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
MehrPhysikalisch 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