Subtrees hinzugefügt
This commit is contained in:
parent
155d0786a6
commit
3cc08a2004
443 changed files with 131415 additions and 0 deletions
7
Quellcodes/Alg_DS_Entscheidungsbaum/.gitignore
vendored
Normal file
7
Quellcodes/Alg_DS_Entscheidungsbaum/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
**/*.sh
|
||||
**/*.class
|
||||
**/*.ctxt
|
||||
repo.adoc
|
||||
repo_subtree.adoc
|
||||
/alt
|
||||
/hide
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
/**
|
||||
* Ihre Implementation eines Binärbaums
|
||||
*
|
||||
* @author Rainer Helfrich
|
||||
* @version Oktober 2020
|
||||
*/
|
||||
public class Binaerbaum<T>
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
|
||||
/**
|
||||
* Stellt das Fenster dar, in dem der Baum dargestellt wird.
|
||||
* Sie müssen die abstrakten Methoden der Oberklasse mit Inhalt füllen.
|
||||
*
|
||||
* @author Rainer Helfrich
|
||||
* @version Oktober 2020
|
||||
*/
|
||||
public class EntscheidungsFrame extends EntscheidungsFrameBase
|
||||
{
|
||||
/**
|
||||
* Der Entscheidungsbaum, der durchlaufen werden soll.
|
||||
*/
|
||||
private Binaerbaum<String> baum;
|
||||
|
||||
/**
|
||||
* Erzeugt ein neues Fenster
|
||||
* @param baum Der Entscheidungsbaum, der durchlaufen werden soll
|
||||
*/
|
||||
private EntscheidungsFrame(Binaerbaum<String> baum)
|
||||
{
|
||||
this.baum = baum;
|
||||
displayCurrent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Erzeugt einen Entscheidungsbaum und übergibt ihn an ein Fenster
|
||||
* Dann wird das Fenster geöffnet
|
||||
*/
|
||||
public static void entscheidungsbaumTesten()
|
||||
{
|
||||
Binaerbaum<String> meinBaum = null;
|
||||
//# Hier muss meinBaum auf einen Entscheidungsbaum gesetzt werden
|
||||
|
||||
|
||||
//# der folgende Aufruf muss stehen bleiben
|
||||
new EntscheidungsFrame(meinBaum);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wird ausgeführt, wenn der Benutzer auf "Ja" klickt.
|
||||
* Setzt den aktuellen Knoten des Entscheidungsbaums entsprechend weiter.
|
||||
*/
|
||||
protected void jaGeklickt()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Wird ausgeführt, wenn der Benutzer auf "Nein" klickt.
|
||||
* Setzt den aktuellen Knoten des Entscheidungsbaums entsprechend weiter.
|
||||
*/
|
||||
protected void neinGeklickt()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft, ob der aktuelle Knoten ein Blattknoten ist und wir damit bei einer Lösung angekommen sind.
|
||||
* @return true, wenn es sich beim aktuellen Knoten um einen Blattknoten handelt; false sonst
|
||||
*/
|
||||
protected boolean istLoesung()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Wert des momentan ausgewählten Knotens im Entscheidungsbaum zurück
|
||||
* @return Die Beschreibung am aktuellen Knoten
|
||||
*/
|
||||
protected String aktuellerText()
|
||||
{
|
||||
return "<nächste Frage>";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.*;
|
||||
|
||||
/**
|
||||
* Das Fenster, in dem der Entscheidungsbaum durchlaufen wird
|
||||
* Hier sollte nichts geändert werden.
|
||||
*
|
||||
* @version 1.0 vom 26.10.2020
|
||||
* @author Rainer Helfrich
|
||||
*/
|
||||
|
||||
public abstract class EntscheidungsFrameBase extends JFrame {
|
||||
|
||||
private JTextArea jTextArea1 = new JTextArea("");
|
||||
private JScrollPane jTextArea1ScrollPane = new JScrollPane(jTextArea1);
|
||||
private JButton bJa = new JButton();
|
||||
private JButton bNein = new JButton();
|
||||
|
||||
|
||||
public EntscheidungsFrameBase()
|
||||
{
|
||||
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
||||
int frameWidth = 537;
|
||||
int frameHeight = 312;
|
||||
setSize(frameWidth, frameHeight);
|
||||
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
|
||||
int x = (d.width - getSize().width) / 2;
|
||||
int y = (d.height - getSize().height) / 2;
|
||||
setLocation(x, y);
|
||||
setTitle("Entscheidungsbaum");
|
||||
setResizable(false);
|
||||
Container cp = getContentPane();
|
||||
cp.setLayout(null);
|
||||
|
||||
jTextArea1ScrollPane.setBounds(8, 8, 505, 217);
|
||||
jTextArea1.setEditable(false);
|
||||
cp.add(jTextArea1ScrollPane);
|
||||
bJa.setBounds(8, 232, 249, 33);
|
||||
bJa.setText("Ja");
|
||||
bJa.setMargin(new Insets(2, 2, 2, 2));
|
||||
bJa.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
jaGeklickt();
|
||||
displayCurrent();
|
||||
}
|
||||
});
|
||||
cp.add(bJa);
|
||||
bNein.setBounds(264, 232, 249, 33);
|
||||
bNein.setText("Nein");
|
||||
bNein.setMargin(new Insets(2, 2, 2, 2));
|
||||
bNein.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
neinGeklickt();
|
||||
displayCurrent();
|
||||
}
|
||||
});
|
||||
cp.add(bNein);
|
||||
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
protected void displayCurrent()
|
||||
{
|
||||
jTextArea1.setText(aktuellerText());
|
||||
bJa.setEnabled(!istLoesung());
|
||||
bNein.setEnabled(!istLoesung());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Wert des momentan ausgewählten Knotens im Entscheidungsbaum zurück
|
||||
* @return Die Beschreibung am aktuellen Knoten
|
||||
*/
|
||||
protected abstract String aktuellerText();
|
||||
|
||||
/**
|
||||
* Wird ausgeführt, wenn der Benutzer auf "Ja" klickt.
|
||||
* Setzt den aktuellen Knoten des Entscheidungsbaums entsprechend weiter.
|
||||
*/
|
||||
protected abstract void jaGeklickt();
|
||||
|
||||
/**
|
||||
* Wird ausgeführt, wenn der Benutzer auf "Nein" klickt.
|
||||
* Setzt den aktuellen Knoten des Entscheidungsbaums entsprechend weiter.
|
||||
*/
|
||||
protected abstract void neinGeklickt();
|
||||
|
||||
/**
|
||||
* Prüft, ob der aktuelle Knoten ein Blattknoten ist und wir damit bei einer Lösung angekommen sind.
|
||||
* @return true, wenn es sich beim aktuellen Knoten um einen Blattknoten handelt; false sonst
|
||||
*/
|
||||
protected abstract boolean istLoesung();
|
||||
}
|
||||
Binary file not shown.
|
|
@ -0,0 +1,5 @@
|
|||
PROJEKTBEZEICHNUNG: Entscheidungsbaum
|
||||
PROJEKTZWECK: Implementieren Sie einen Binärbaum und wenden Sie ihn an, um einen Entscheidungsbaum zu implementieren
|
||||
VERSION oder DATUM: Oktober 2020
|
||||
WIE IST DAS PROJEKT ZU STARTEN: Rufen Sie die statische Methode entscheidungsbaumTesten() der Klasse EntscheidungsFrame auf.
|
||||
AUTOR(EN): Rainer Helfrich, ZPG Informatik
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
#BlueJ package file
|
||||
dependency1.from=EntscheidungsFrame
|
||||
dependency1.to=Binaerbaum
|
||||
dependency1.type=UsesDependency
|
||||
editor.fx.0.height=0
|
||||
editor.fx.0.width=0
|
||||
editor.fx.0.x=0
|
||||
editor.fx.0.y=0
|
||||
objectbench.height=93
|
||||
objectbench.width=760
|
||||
package.divider.horizontal=0.6
|
||||
package.divider.vertical=0.8
|
||||
package.editor.height=393
|
||||
package.editor.width=649
|
||||
package.editor.x=329
|
||||
package.editor.y=161
|
||||
package.frame.height=600
|
||||
package.frame.width=800
|
||||
package.numDependencies=1
|
||||
package.numTargets=3
|
||||
package.showExtends=true
|
||||
package.showUses=true
|
||||
project.charset=UTF-8
|
||||
readme.height=58
|
||||
readme.name=@README
|
||||
readme.width=47
|
||||
readme.x=10
|
||||
readme.y=10
|
||||
target1.height=50
|
||||
target1.name=Binaerbaum
|
||||
target1.showInterface=false
|
||||
target1.type=ClassTarget
|
||||
target1.width=130
|
||||
target1.x=240
|
||||
target1.y=170
|
||||
target2.height=50
|
||||
target2.name=EntscheidungsFrame
|
||||
target2.showInterface=false
|
||||
target2.type=ClassTarget
|
||||
target2.width=150
|
||||
target2.x=380
|
||||
target2.y=30
|
||||
target3.height=50
|
||||
target3.name=EntscheidungsFrameBase
|
||||
target3.showInterface=false
|
||||
target3.type=AbstractTarget
|
||||
target3.width=180
|
||||
target3.x=110
|
||||
target3.y=30
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
|
||||
/**
|
||||
* Ein Knoten eines Binärbaums
|
||||
*
|
||||
* @author Rainer Helfrich
|
||||
* @version Oktober 2020
|
||||
*/
|
||||
public class Binaerbaum<T>
|
||||
{
|
||||
/**
|
||||
* Der Datenwert des Knotens
|
||||
*/
|
||||
public T daten;
|
||||
|
||||
/**
|
||||
* Der linke Kindbaum
|
||||
*/
|
||||
public Binaerbaum<T> links;
|
||||
|
||||
/**
|
||||
* Der rechte Kindbaum
|
||||
*/
|
||||
public Binaerbaum<T> rechts;
|
||||
|
||||
/**
|
||||
* Erzeugt einen Blattknoten mit leerem Datenwert
|
||||
*/
|
||||
public Binaerbaum()
|
||||
{
|
||||
this(null, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Erzeugt einen Knoten mit Datenwert und Kindern
|
||||
* @param daten Der Datenwert
|
||||
* @param links Der linke Kindbaum
|
||||
* @param rechts Der rechte Kindbaum
|
||||
*/
|
||||
public Binaerbaum(T daten, Binaerbaum<T> links, Binaerbaum<T> rechts)
|
||||
{
|
||||
this.daten = daten;
|
||||
this.links = links;
|
||||
this.rechts = rechts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erzeugt einen Blattknoten mit Datenwert
|
||||
* @param daten Der Datenwert
|
||||
*/
|
||||
public Binaerbaum(T daten)
|
||||
{
|
||||
this(daten, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt zurück, ob der Knoten ein Blatt ist
|
||||
* @return true, wenn der Knoten ein Blatt ist; false sonst
|
||||
*/
|
||||
public boolean istBlatt()
|
||||
{
|
||||
return links == null && rechts == null;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
|
@ -0,0 +1,94 @@
|
|||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.*;
|
||||
|
||||
/**
|
||||
* Das Fenster, in dem der Entscheidungsbaum durchlaufen wird
|
||||
* Hier sollte nichts geändert werden.
|
||||
*
|
||||
* @version 1.0 vom 26.10.2020
|
||||
* @author Rainer Helfrich
|
||||
*/
|
||||
|
||||
public abstract class EntscheidungsFrameBase extends JFrame {
|
||||
|
||||
private JTextArea jTextArea1 = new JTextArea("");
|
||||
private JScrollPane jTextArea1ScrollPane = new JScrollPane(jTextArea1);
|
||||
private JButton bJa = new JButton();
|
||||
private JButton bNein = new JButton();
|
||||
|
||||
|
||||
public EntscheidungsFrameBase()
|
||||
{
|
||||
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
|
||||
int frameWidth = 537;
|
||||
int frameHeight = 312;
|
||||
setSize(frameWidth, frameHeight);
|
||||
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
|
||||
int x = (d.width - getSize().width) / 2;
|
||||
int y = (d.height - getSize().height) / 2;
|
||||
setLocation(x, y);
|
||||
setTitle("Entscheidungsbaum");
|
||||
setResizable(false);
|
||||
Container cp = getContentPane();
|
||||
cp.setLayout(null);
|
||||
|
||||
jTextArea1ScrollPane.setBounds(8, 8, 505, 217);
|
||||
jTextArea1.setEditable(false);
|
||||
cp.add(jTextArea1ScrollPane);
|
||||
bJa.setBounds(8, 232, 249, 33);
|
||||
bJa.setText("Ja");
|
||||
bJa.setMargin(new Insets(2, 2, 2, 2));
|
||||
bJa.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
jaGeklickt();
|
||||
displayCurrent();
|
||||
}
|
||||
});
|
||||
cp.add(bJa);
|
||||
bNein.setBounds(264, 232, 249, 33);
|
||||
bNein.setText("Nein");
|
||||
bNein.setMargin(new Insets(2, 2, 2, 2));
|
||||
bNein.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent evt) {
|
||||
neinGeklickt();
|
||||
displayCurrent();
|
||||
}
|
||||
});
|
||||
cp.add(bNein);
|
||||
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
protected void displayCurrent()
|
||||
{
|
||||
jTextArea1.setText(aktuellerText());
|
||||
bJa.setEnabled(!istLoesung());
|
||||
bNein.setEnabled(!istLoesung());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Wert des momentan ausgew<EFBFBD>hlten Knotens im Entscheidungsbaum zur<EFBFBD>ck
|
||||
* @return Die Beschreibung am aktuellen Knoten
|
||||
*/
|
||||
protected abstract String aktuellerText();
|
||||
|
||||
/**
|
||||
* Wird ausgef<EFBFBD>hrt, wenn der Benutzer auf "Ja" klickt.
|
||||
* Setzt den aktuellen Knoten des Entscheidungsbaums entsprechend weiter.
|
||||
*/
|
||||
protected abstract void jaGeklickt();
|
||||
|
||||
/**
|
||||
* Wird ausgef<EFBFBD>hrt, wenn der Benutzer auf "Nein" klickt.
|
||||
* Setzt den aktuellen Knoten des Entscheidungsbaums entsprechend weiter.
|
||||
*/
|
||||
protected abstract void neinGeklickt();
|
||||
|
||||
/**
|
||||
* Pr<EFBFBD>ft, ob der aktuelle Knoten ein Blattknoten ist und wir damit bei einer L<EFBFBD>sung angekommen sind.
|
||||
* @return true, wenn es sich beim aktuellen Knoten um einen Blattknoten handelt; false sonst
|
||||
*/
|
||||
protected abstract boolean istLoesung();
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
PROJEKTBEZEICHNUNG: Entscheidungsbaum
|
||||
PROJEKTZWECK: Implementieren Sie einen Binärbaum und wenden Sie ihn an, um einen Entscheidungsbaum zu implementieren
|
||||
VERSION oder DATUM: Oktober 2020
|
||||
WIE IST DAS PROJEKT ZU STARTEN: Rufen Sie die statische Methode entscheidungsbaumTesten() der Klasse EntscheidungsFrame auf.
|
||||
AUTOR(EN): Rainer Helfrich, ZPG Informatik
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
#BlueJ package file
|
||||
dependency1.from=EntscheidungsFrame
|
||||
dependency1.to=Binaerbaum
|
||||
dependency1.type=UsesDependency
|
||||
editor.fx.0.height=0
|
||||
editor.fx.0.width=0
|
||||
editor.fx.0.x=0
|
||||
editor.fx.0.y=0
|
||||
objectbench.height=93
|
||||
objectbench.width=760
|
||||
package.divider.horizontal=0.6
|
||||
package.divider.vertical=0.8
|
||||
package.editor.height=393
|
||||
package.editor.width=649
|
||||
package.editor.x=329
|
||||
package.editor.y=161
|
||||
package.frame.height=600
|
||||
package.frame.width=800
|
||||
package.numDependencies=1
|
||||
package.numTargets=3
|
||||
package.showExtends=true
|
||||
package.showUses=true
|
||||
project.charset=UTF-8
|
||||
readme.height=58
|
||||
readme.name=@README
|
||||
readme.width=47
|
||||
readme.x=10
|
||||
readme.y=10
|
||||
target1.height=50
|
||||
target1.name=Binaerbaum
|
||||
target1.showInterface=false
|
||||
target1.type=ClassTarget
|
||||
target1.width=130
|
||||
target1.x=290
|
||||
target1.y=150
|
||||
target2.height=50
|
||||
target2.name=EntscheidungsFrame
|
||||
target2.showInterface=false
|
||||
target2.type=ClassTarget
|
||||
target2.width=150
|
||||
target2.x=380
|
||||
target2.y=30
|
||||
target3.height=50
|
||||
target3.name=EntscheidungsFrameBase
|
||||
target3.showInterface=false
|
||||
target3.type=AbstractTarget
|
||||
target3.width=180
|
||||
target3.x=110
|
||||
target3.y=30
|
||||
11
Quellcodes/Alg_DS_Entscheidungsbaum/readme.adoc
Normal file
11
Quellcodes/Alg_DS_Entscheidungsbaum/readme.adoc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
= Material :
|
||||
|
||||
|===
|
||||
|Zuordnung|
|
||||
|Klassenstufe|
|
||||
|Bildungsplanbezug |
|
||||
|Werkzeug|
|
||||
|Autoren|
|
||||
|===
|
||||
|
||||
== Inhalt
|
||||
Loading…
Add table
Add a link
Reference in a new issue