SE Besprechung Übung 1 Programmverständnis, Dokumentation SE, 11.10.11 Mengia Zollinger
Teaching Assistant Mengia Zollinger <mengia.zollinger@uzh.ch> 7. Semester Wirtschaftsinformatik Fasttrack bei A. Bernstein 11.10.2011 Besprechung SE Übung 1 2
Abgabe Erlaubte Datentypen: Dokument als PDF, Source Code als.java keine Bilder Beschriftung: Einteilung: Abgabe an: Namen der Gruppenmitglieder in Kopfzeile 3er Gruppen, keine Einzelarbeiten Nicolas Hoby <nhoby@access.uzh.ch> und Irina Todoran <todoran@ifi.uzh.ch> 11.10.2011 Besprechung SE Übung 1 3
Übung 1 Aufgabe 1: Allgemeine Informationen Aufgabe 2: Einführung und Installationsanleitung der JGAP Bibliothek 11.10.2011 Besprechung SE Übung 1 4
Aufgabe 3.1 Struktur Ziel: Gesamtüberblick über Quellcode gewinnen UML Klassendiagramm auffrischen Aufgabe: Klassendiagramm modellieren Alle Klassenvariabeln & mind. 5 Methoden modellieren Konstruktoren & Setter/Getter nicht modellieren 11.10.2011 Besprechung SE Übung 1 5
Kritik: Nur die angegebenen Klassen modellieren Alle Klassen auf eine A4 Seite Nicht von Hand zeichnen, z.b. mit Visio, UMLet, etc. Attribute, Methoden & Verbindungen vergessen Methoden in der falschen Klasse modelliert (Interface) 11.10.2011 Besprechung SE Übung 1 6
Kritik: <<Stereotyp>> Klassenname {Eigenschaftswert} + Attributname: Attributtyp + Methodenname(Parameter:Typ):Eigenschaft 11.10.2011 Besprechung SE Übung 1 7
+ public, - private, # protected, (~ package) Package Name weglassen <<Interface>> IChromosome - FITNESS_VALUE: String - S_ALLELES: String - S_APPLICATION_DATA: String - S_SIZE: String + cleanup() + size(): int + getgenes(): Gene[] + getgene(a_desiredlocus: int): Gene Primitive Datentypen klein: int, double Klassen gross: String Array: square braces [ ] Static: existiert nur einmal, unterstrichen Final: unveränderbar, Grossbuchstaben Operation: visibility name (Parameter): Typ Parameter: Name: Typ 11.10.2011 Besprechung SE Übung 1 8
Initialwert weglassen! Population +CHROM_DELIMITER:String +CHROM_DELIMITER_HEADING:String -m_fittestchromosome:ichromosome -m_changed:boolean Population +CHROM_DELIMITER:String = ~ +CHROM_DELIMITER_HEADING:String ={ -m_fittestchromosome:ichromosome -m_changed:boolean 11.10.2011 Besprechung SE Übung 1 9
BaseChromosome Vererbung: Oberklasse ist eine Generalisierung der Unterklasse Is-a Beziehung Chromosome Pfeile nicht beschriften (ausser mit Zahlen) 11.10.2011 Besprechung SE Übung 1 10
Realisierung: Beziehung zu einer Schnittstelle BaseChromosome <<Interface>>IChromosome 11.10.2011 Besprechung SE Übung 1 11
Realisierung: Implementierte Methoden eines Interfaces werden nur im Interface modelliert BaseChromosome <<Interface>>IChromosome +getbusinesskey():string # encode(a_string:string):string +size() +increaseage() +resetoperatedon() +operatedon():int 11.10.2011 Besprechung SE Übung 1 12
Person Instanzbeziehung: Object is instance of Class Fritzli 11.10.2011 Besprechung SE Übung 1 13
Komposition: Teil kann nur existieren wenn Ganzes auch existiert BaseChromosome <<Interface>>IChromosome 1..* 1...* 11.10.2011 Besprechung SE Übung 1 14
Aggregation: Teil kann existieren auch wenn Ganzes nicht existiert Vorlesung Student 0..* 3...* 11.10.2011 Besprechung SE Übung 1 15
Aufgabe 3.2 Anwendungsbereich Ziel: Überblick über einzelnen Anwendungsbereich gewinnen Aufgabe: Art von Genen identifizieren Klassennamen & Datentypen eruieren Supergenes, abstrakte Klassen & Interfaces ignorieren 11.10.2011 Besprechung SE Übung 1 16
Kritik: Nicht alle Klassen aufgezählt Nur Klassenname & Datentypen gefragt 11.10.2011 Besprechung SE Übung 1 17
Klassenname BaseGeneImpl BooleanGene CompositeGene Datentyp Object Boolean Depends on subgenes FixedBinaryGene Numbers, only 0 and 1 MapGene MathGene MyIntegerGene Map of alleles Mathematical operators Integer 11.10.2011 Besprechung SE Übung 1 18
DoubleGene IntegerGene MultipleIntegerGene SetGene StringGene Double Integer Integer with restrictions Set of alleles String 11.10.2011 Besprechung SE Übung 1 19
CompositeGene ist kein eigener Datentyp, sondern besteht aus mehreren Subgenen Unterstützt mehrere Datentypen 11.10.2011 Besprechung SE Übung 1 20
Aufgabe 3.3 Verhalten Ziel: Teilablauf der künstlichen Evolution nachvollziehen können Verhalten der Methode evolve() der Klasse GABreeder verstehen UML Sequenzdiagramm auffrischen Aufgabe: Obersten 24 Zeilen der Methode evolve() modellieren 11.10.2011 Besprechung SE Übung 1 21
Kritik: Auf die Darstellung achten: unschön schön 11.10.2011 Besprechung SE Übung 1 22
Aktivierungsbereiche nicht eingezeichnet falsch richtig 11.10.2011 Besprechung SE Übung 1 23
Aktivierungsbereich nur, wo Klasse effektiv aktiv ist 11.10.2011 Besprechung SE Übung 1 24
<create> nur, wenn Objekt neu erstellt wird (new Operator), nicht wenn es zum ersten Mal benutzt wird Nur Methodenaufrufe darstellen, keine Variablenzuweisungen 11.10.2011 Besprechung SE Übung 1 25
11.10.2011 Besprechung SE Übung 1 26
Aufgabe 4 Verbessern des Codes Aufgabe 4.1 Dokumentation Ziel: Javadoc Kommentare erarbeiten Aufgabe: 3 Methoden dokumentieren (Javadoc Kommentar & innerhalb) 11.10.2011 Besprechung SE Übung 1 27
Aufgabe 4 Verbessern des Codes Bewertung Je 0.5 Punkte für Methodenkommentare (3) Je 0.25 Punkte für Kommentare im Code (6) 1 Bonuspunkt für allgemeinen Eindruck Kritik: Nicht alle Kommentare ausgefüllt Nicht Code nacherzählen, sondern erklären warum etwas geschieht 11.10.2011 Besprechung SE Übung 1 28
Aufgabe 4 Verbessern des Codes Schlechtes Beispiel: Gutes Beispiel: 11.10.2011 Besprechung SE Übung 1 29
Aufgabe 4 Verbessern des Codes Aufgabe 4.2 Verbesserung des Codes Ziel: Code analysieren Verbesserungsvorschläge ausarbeiten Aufgabe: Analyse der Methode checkminfitness() Stichworte zur Verbesserung der Methode notieren 11.10.2011 Besprechung SE Übung 1 30
Aufgabe 4 Verbessern des Codes Auswahl an Schwachstellen: Methodenname checkminfitness(): Methode checkt nicht nur, sie verändert auch den Zustand des Systems Feedback fehlt: Methode gibt keine Auskunft darüber, ob und was gemacht wurde Kommentare: erzählen den Code (..is doubled), anstatt ihn zu erklären Methodenkommentare erwähnen Variablen, ohne dass User darauf Zugriff hat 11.10.2011 Besprechung SE Übung 1 31
Aufgabe 4 Verbessern des Codes Bewertung: 0.5 Punkte pro gültigem Punkt, max. 2 Punkte Kritik: private static int MAX_ALLOWED_EVOLUTIONS Ist keine Konstante, auch wenn sie wie eine aussieht (nicht final) Der Fehler ist nicht, dass im Code eine Konstante verändert wird (was nicht geht), sondern dass eine Nicht-Konstante wie eine Konstante deklariert wird 11.10.2011 Besprechung SE Übung 1 32
Übung 1 Resultate 11.10.2011 Besprechung SE Übung 1 33
Allgemeines Fragen/Feedback zu Übung 1? Fragen zur Gruppeneinteilung? 02.11.2010 Besprechung SE Übung 2 34