Aktivitäten beim Entwurf

Werbung
Entwurfsstrategien
Alfred Hermes
Kinder
Mutationen
1011001101
101|1101011
101110|0|011
1111101011
111|1001101
11110011|1|1
Generieren
Kreuzen
Mutieren
Eltern
Population: Selektieren
Selektion
3
4
5
2
5
2
6
3
Kreuzung (cross over)
3
4
5
2
5
2
01110110
11010001
01110110
11010001
01110001
6
11010110
3
Mutation (bitflip)
01110001
bitflip
01010001
11010110
bitflip
11000110
Grundlagen der GA
• Selektion
• Kreuzung
• binäre
Wettkampfselektion
• 1-Point Crossover
• Mutation
• bit flip
Demonstrationsprogramm
•
•
•
•
•
Applet
Klasse
Label
TextField
Button
– ActionListener
– actionPerformed
• Methoden
– generiere()
– kreuze()
– mutiere()
Die Klasse GenCode
Attribut
Konstruktoren
Methoden
Eigenschaft
Together
Ein grafisch orientiertes Werkzeug zur
Erstellung von UML-Diagrammen
und zur Generierung von Java-Code
Konstruktoren (roh) – in Java
private int laenge;
private char[] code;
public class GenCode {
public GenCode(String s) {
}
public GenCode(int l, boolean w) {
}
public GenCode(GenCode v, int p, GenCode w) {
}
Methoden (roh) in Java
public int getLaenge(){ return laenge; }
public void setLaenge(int laenge){ this.laenge = laenge; }
public char liesCode(int pos) {
}
public void schreibCode(int i, char z) {
}
public void mutiere(int pos) {
}
public String toString() {
}
Deklaration im Java-Applet
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class GenDemo extends Applet {
Label …
TextField[] tf = new TextField[6]; // 6 Textfelder
Button...
GenCode e1, e2, k1, k2, m1, m2;
// tf [0] [3] [1] [4] [2] [5]
// 6 gen. Codes
Initialisieren-Ereignisse im Applet
public void init () {
// Gestaltung der Oberfläche . . . . .
// Anonyme Ereignisklassen
buGenerieren.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
generiere();}});
buKreuzen.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
kreuze();}});
buMutieren.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent evt) {
mutiere();}});
generiere();
}
// Start
Methoden des Applets
public void generiere() {
e1 = new GenCode(anzahl, true);
e2 = new GenCode(anzahl, true);
tf[0].setText(e1.toString());
tf[3].setText(e2.toString());
kreuze();
}
public void kreuze() {
int zufallszahl = (int) (Math.random()*anzahl);
e1 = new GenCode(tf[0].getText());
e2 = new GenCode(tf[3].getText());
k1 = new GenCode(e1, zufallszahl, e2);
k2 = new GenCode(e2, zufallszahl, e1);
// ... Anzeigen
mutiere();
}
public void mutiere() { ... }
// generiere()
// Zufall
// anzeigen
// --> kreuze()
// Zufallsstelle
// auslesen
// erzeugen
// --> mutiere()
Planung - Darstellung
• UML
– Entwurfsarten
• MVC
• Projektaktivitäten
Entwurfsarten
•
•
•
•
Komposition / Vererbung
Schnittstellen
Nebenläufige Prozesse
Benachrichtigung
MVC
• Model: Verwaltung der
Daten mit Methoden
zum Ändern und
Abfragen und
Benachrichtigen
• View: Anzeige der Daten
• Control: Reaktion auf
Benutzereingaben und
Benachrichtigung des
Modells
MVC-Schema in Java
Control 1
Control 2
Model
Control 3
Observable
Observer
View 1
View 2
View 3
Aktivitäten beim Entwurf
• Bestimmung des Zwecks und der
Funktionen
• Auswahl der Klassen
• Entwurf der Benutzerschnittstelle
• Ausarbeitung dynamischer Strukturen
• Erstellung eines Klassendiagramms
Herunterladen