This commit is contained in:
2023-04-19 12:04:11 +02:00
parent 8c39777ff5
commit 7e11c68352
34 changed files with 679 additions and 0 deletions
View File
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="20" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/AuD/AuD.iml" filepath="$PROJECT_DIR$/AuD/AuD.iml" />
<module fileurl="file://$PROJECT_DIR$/FH.iml" filepath="$PROJECT_DIR$/FH.iml" />
</modules>
</component>
</project>
+124
View File
@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>
Generated
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
@@ -0,0 +1,6 @@
public class Main{
public static void main(String[] args) {
Link mittleresElement = new Link(T,"Test");
}
}
View File
View File
@@ -1,3 +1,5 @@
package UEB01;
// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`, // Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code. // then press Enter. You can now see whitespace characters in your code.
public class Main { public class Main {
@@ -1,3 +1,5 @@
package UEB01;
public class StopUhr public class StopUhr
{ {
private long startTime, stopTime; private long startTime, stopTime;
@@ -1,3 +1,5 @@
package UEB01;
public class Zeitmessung public class Zeitmessung
{ {
static int tuWasCounter = 0; static int tuWasCounter = 0;
+20
View File
@@ -0,0 +1,20 @@
package UEB03;
public class Link<T>
{
public T daten;
public Link<T> naechster;
public Link(T daten, Link<T> naechster)
{
assert(daten != null);
this.daten = daten;
this.naechster = naechster;
}
public String toString()
{
return daten.toString();
}
}
+189
View File
@@ -0,0 +1,189 @@
package UEB03;
import java.util.*;
public class Liste<T>
{
protected Link<T> anfang;
protected Link<T> ende;
public Liste()
{
// Leere Liste: alle Zeiger sind null (Standardwerte)
}
// Einfachster Fall und gleichzeitig Sonderfall:
// Element am Anfang einfgen
public void einfuegen(final T daten)
{
// Funktioniert immer
anfang = new Link<T>(daten, anfang);
// Bei einer leeren Liste muss auch ende gesetzt werden
if (ende == null)
ende = anfang;
}
// Einfachster Fall und gleichzeitig Sonderfall:
// Element am Anfang entfernen
public T entfernen()
{
T opfer = null;
// Clowns knnten diese Methode bei leerer Liste aufrufen
if (!istLeer())
{
// Bei einer Liste mit nur noch einem Element muss
// auch ende gelscht werden
if (anfang == ende)
ende = null;
opfer = anfang.daten;
anfang = anfang.naechster;
}
return opfer;
}
// Einfacher Fall: Anfgen am Ende der Liste
public void anfuegen(final T daten)
{
// Neuen Link anlegen
Link<T> neu = new Link<T>(daten, null);
// Wenn die Liste leer ist, mssen anfang und ende gesetzt werden
if (istLeer())
{
// Neuen Link als anfang der Liste
anfang = ende = neu;
}
else
{
// Anfgen des Elements an das bisherige ende
ende = ende.naechster = neu;
}
}
// EINFGEN AN EINER BESTIMMTEN STELLE
// Der Programmcode ist so gestaltet, dass er fehlerhafte Eingaben
// (z.B. eine negative oder zu hohe Position) elegant verarbeitet
// ohne abzustrzen.
public void einfuegen(final T daten, int position)
{
// Wenn die Liste leer oder die Position 0 ist, entspricht dies
// einem Einfgen am Anfang
if (istLeer() || (position <= 0))
{
einfuegen(daten);
return;
}
// VORGNGER ZUR POSITION FINDEN
// Dessen Vorgnger muss es geben: lediglich bei einer leeren
// Liste oder fr position==0 gibt es keinen. Genau diese Flle
// wurden aber oben bereits behandelt! Wird eine zu hohe position
// bergeben, wird automatisch das letzte Element zum Vorgnger.
Link<T> vorgaenger = anfang;
while ((--position > 0) && (vorgaenger.naechster != null))
vorgaenger = vorgaenger.naechster;
// Neues Element erzeugen
vorgaenger.naechster = new Link<T>(daten, vorgaenger.naechster);
// Beim Einfgen als letztes Element muss auch ende gesetzt werden
if (vorgaenger == ende)
ende = vorgaenger.naechster;
}
public T entfernen(int position)
{
// Wenn die Liste leer oder die position < 0 ist, wird kein Element
// entfernt
if (istLeer() || (position < 0))
return null;
// Wenn die position 0 ist, wird am Anfang der Liste gelscht
if (position == 0)
return entfernen();
// VORGNGER ZUR POSITION FINDEN
// Bei einer leeren Liste oder fr position==0 gibt es keinen Vorgnger;
// genau diese Flle wurden oben bereits behandelt. Es gibt aber auch
// keinen Vorgner, wenn position zu gro ist! In diesem Fall wird das
// letzte Element NICHT Vorgnger, damit nur tatschlich existierende
// Elemente aus der Liste entfernt werden.
Link<T> vorgaenger = anfang;
while ((--position > 0) && (vorgaenger != null))
vorgaenger = vorgaenger.naechster;
// Gibt es ein Element zum lschen?
if ((vorgaenger == null) || (vorgaenger.naechster == null))
return null;
final T opfer = vorgaenger.naechster.daten;
// Element lschen und ggf. ende anpassen beim Lschen des letzten
// Listen-Elements
if ((vorgaenger.naechster = vorgaenger.naechster.naechster) == null)
ende = vorgaenger;
return opfer;
}
// Liefert die Position eines bestimmten Elements oder -1 zurck.
// Existiert ein Element mehrfach, wird die Position des ersten Vorkommens
// zurckgegeben.
public int suchen(final T daten)
{
// Liste leer?
if (istLeer())
return -1;
Link<T> zeiger = anfang;
int position = 0;
// Abfrage auf Gleichheit ist mglich mit equals (Operation von der Klasse Object)
while ((zeiger != null) && !zeiger.daten.equals(daten))
{
position++;
zeiger = zeiger.naechster;
}
return (zeiger == null) ? -1 : position;
}
public ListeIterator<T> iterator()
{
return new ListeIterator<T>(anfang, ende);
}
// Prfen, ob Liste leer ist
public boolean istLeer()
{
return anfang==null;
}
public void verketten(Liste<T> zweiteListe)
{
assert(zweiteListe != null);
ende.naechster = zweiteListe.anfang;
ende= zweiteListe.ende;
zweiteListe.anfang = null;
zweiteListe.ende = null;
}
public int entferneWerte(final T opfer)
{
int anzGeloeschte = 0;
// Diese Methode wird im Praktikum implementiert
// TODO
return anzGeloeschte;
}
}
+47
View File
@@ -0,0 +1,47 @@
package UEB03;
import java.awt.*;
public class ListeCanvas extends Canvas
{
private Liste eineListe;
public void zeichneNeu(Liste eineListe)
{
this.eineListe = eineListe;
repaint();
}
public void paint(Graphics g)
{
ListeIterator it = eineListe.iterator();
int x = 0;
int y = 30;
int position = 0;
while (it.hasNext())
{
g.setColor(new Color(0xE8, 0xE8, 0xFF));
g.fillRect(x+1, y+1, 30, 20);
g.setColor(Color.blue);
g.drawRect(x, y, 30, 20);
g.drawString(it.next().toString(), x + 1, y + 19);
if (it.hasNext())
{
g.setColor(Color.black);
g.drawLine(x + 30, y + 10, x + 45, y + 10);
g.drawLine(x + 45, y + 10, x + 40, y + 5);
g.drawLine(x + 45, y + 10, x + 40, y + 15);
}
g.setColor(Color.gray);
g.drawString("" + position++, x - 1, y + 35);
x = x + 45;
}
}
}
+202
View File
@@ -0,0 +1,202 @@
package UEB03;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;
public class ListeGUI extends Frame
{
//Attribute
protected Label wertFuehrungstext;
protected TextField wertTextfeld;
protected Label positionFuehrungstext;
protected TextField positionTextfeld;
protected Button einfuegenDruckknopf;
protected Button anhaengenDruckknopf;
protected Button entfernenDruckknopf;
protected Button alleEntfernenDruckknopf;
protected Button traversierenDruckknopf;
protected Button suchenDruckknopf;
protected Label ausgabeFuehrungstext;
protected TextArea ausgabeTextbereich;
protected Liste<Character> eineListe;
protected ListeCanvas eineZeichenflaeche; //Zeichenflche fr die Animation
//Operationen
public ListeGUI()
{
setTitle("Verkettete Liste");
setLayout(null);
setSize(492,315);
add(eineZeichenflaeche = new ListeCanvas());
eineZeichenflaeche.setBounds(32,32,430,80);
add(wertFuehrungstext= new Label());
wertFuehrungstext.setText("Wert:");
wertFuehrungstext.setBounds(30,112,58,23);
add(wertTextfeld = new TextField());
wertTextfeld.setBounds(90,112,45,23);
add(positionFuehrungstext= new Label());
positionFuehrungstext.setText("Position:");
positionFuehrungstext.setBounds(30,137,58,23);
add(positionTextfeld = new TextField());
positionTextfeld.setBounds(90,137,45,23);
add(einfuegenDruckknopf = new Button());
einfuegenDruckknopf.setLabel("Einfgen");
einfuegenDruckknopf.setBounds(30,170,100,23);
add(anhaengenDruckknopf = new Button());
anhaengenDruckknopf.setLabel("Anhngen");
anhaengenDruckknopf.setBounds(140,170,100,23);
add(entfernenDruckknopf = new Button());
entfernenDruckknopf.setLabel("Entfernen");
entfernenDruckknopf.setBounds(250,170,100,23);
add(alleEntfernenDruckknopf = new Button());
alleEntfernenDruckknopf.setLabel("Alle entfernen");
alleEntfernenDruckknopf.setBounds(360,170,100,23);
add(traversierenDruckknopf = new Button());
traversierenDruckknopf.setLabel("Traversieren");
traversierenDruckknopf.setBounds(30,220,100,23);
add(suchenDruckknopf = new Button());
suchenDruckknopf.setLabel("Suchen");
suchenDruckknopf.setBounds(140,220,100,23);
add(ausgabeFuehrungstext= new Label());
ausgabeFuehrungstext.setText("Ausgabe:");
ausgabeFuehrungstext.setBounds(30,255,58,23);
add(ausgabeTextbereich = new TextArea("", 1, 1000, TextArea.SCROLLBARS_NONE));
ausgabeTextbereich.setBounds(90,255,370,23);
ausgabeTextbereich.setEnabled(false);
// Registrieren der Ereignisabhrer
AktionsAbhoerer einAktionsAbhoerer = new AktionsAbhoerer();
einfuegenDruckknopf.addActionListener(einAktionsAbhoerer);
anhaengenDruckknopf.addActionListener(einAktionsAbhoerer);
entfernenDruckknopf.addActionListener(einAktionsAbhoerer);
alleEntfernenDruckknopf.addActionListener(einAktionsAbhoerer);
suchenDruckknopf.addActionListener(einAktionsAbhoerer);
traversierenDruckknopf.addActionListener(einAktionsAbhoerer);
// Test fr Verkettung zweier Listen
eineListe = new Liste<Character>();
eineListe.anfuegen(new Character('A'));
eineListe.anfuegen(new Character('B'));
Liste<Character> zweiteListe = new Liste<Character>();
zweiteListe.anfuegen(new Character('C'));
zweiteListe.anfuegen(new Character('D'));
eineListe.verketten(zweiteListe);
eineZeichenflaeche.zeichneNeu(eineListe);
addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
//Innere Klasse fr die Ereignisabhrer
class AktionsAbhoerer implements ActionListener
{
private Character getCharacter()
{
final String s = wertTextfeld.getText();
return (s.length() > 0) ? s.charAt(0) : '?';
}
private int getPosition()
{
try
{
return Integer.valueOf(positionTextfeld.getText());
}
catch(NumberFormatException e)
{
ausgabeTextbereich.setText("Es wurde kein Position angegeben. Standardwert: 0 (Listenanfang)");
}
return 0;
}
private void finish()
{
wertTextfeld.setText("");
positionTextfeld.setText("");
eineZeichenflaeche.zeichneNeu(eineListe);
}
private void finish(final String ausgabe)
{
ausgabeTextbereich.setText(ausgabe);
finish();
}
public void actionPerformed(ActionEvent event)
{
Object o = event.getSource();
ausgabeTextbereich.setText("");
if (o == einfuegenDruckknopf)
{
eineListe.einfuegen(getCharacter(), getPosition());
finish();
return;
}
if (o == anhaengenDruckknopf)
{
eineListe.anfuegen(getCharacter());
finish();
return;
}
if (o == entfernenDruckknopf)
{
if (eineListe.entfernen(getPosition()) == null)
ausgabeTextbereich.setText("Es wurde kein Opfer gefunden!");
finish();
return;
}
if (o == suchenDruckknopf)
{
final int position = eineListe.suchen(getCharacter());
finish(position == -1 ? "Der Wert wurde nicht gefunden." : "Der gesuchte Wert wird zum ersten Mal an Position " + position + " gefunden.");
return;
}
if (o == alleEntfernenDruckknopf)
{
finish(eineListe.entferneWerte(getCharacter()) + " Elemente wurden entfernt.");
return;
}
if (o == traversierenDruckknopf)
{
String ausgabe = "";
ListeIterator<Character> e = eineListe.iterator();
while (e.hasNext())
ausgabe += e.next() + " ";
finish(ausgabe);
return;
}
finish();
}
}
}
+33
View File
@@ -0,0 +1,33 @@
package UEB03;
import java.util.*;
public class ListeIterator<T> implements Iterator
{
private Link<T> zeiger;
private Link<T> ende;
ListeIterator(Link<T> start, Link<T> ende)
{
zeiger = start;
this.ende = ende;
}
public boolean hasNext()
{
return zeiger != null;
}
public T next()
{
final T daten = zeiger.daten;
zeiger = zeiger.naechster;
return daten;
}
public void remove()
{
throw new UnsupportedOperationException();
}
}
+9
View File
@@ -0,0 +1,9 @@
package UEB03;
public class ListeTest
{
public static void main(String[] args)
{
new ListeGUI().setVisible(true);
}
}
+10
View File
@@ -0,0 +1,10 @@
package UEB03;
public class Main {
public static void main(String[] args) {
Link<String> ende = new Link<String>("Letzter", null);
Link<String> mittleresElement = new Link<String>("Test", ende);
Link<String> anfang= new Link<String>("TErster", mittleresElement);
}
}
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/BP" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/EidP" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.