From d915f549c54f5a97edb73acc30c0a63d993948b8 Mon Sep 17 00:00:00 2001 From: Jan Bertram Date: Sat, 21 Jun 2025 17:27:59 +0200 Subject: [PATCH] =?UTF-8?q?Einrichten=20der=20ersten=20arbeitsf=C3=A4higen?= =?UTF-8?q?=20Version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kontrolleur.java | 26 ++++++++++++ Observer.java | 3 ++ Subject.java | 9 ++++ View.java | 63 ++++++++++++++++++++++++++++ Zufallszahlengenerator.java | 41 +++++++++++++++++++ package.bluej | 82 +++++++++++++++++++++++++++++++++++++ 6 files changed, 224 insertions(+) create mode 100644 Kontrolleur.java create mode 100644 Observer.java create mode 100644 Subject.java create mode 100644 View.java create mode 100644 Zufallszahlengenerator.java create mode 100644 package.bluej diff --git a/Kontrolleur.java b/Kontrolleur.java new file mode 100644 index 0000000..9b1cba0 --- /dev/null +++ b/Kontrolleur.java @@ -0,0 +1,26 @@ +public class Kontrolleur { + View view; + Zufallszahlengenerator zufallszahlengenerator; + + public void setView(View v) { + this.view = v; + } + + public void setZufallszahlengenerator(Zufallszahlengenerator z) { + this.zufallszahlengenerator = z; + } + + public boolean setObergrenze(String nutzereingabe) { + if(nutzereingabe.matches("[0-9]+")) { + int nutzereingabeAlsZahl = Integer.parseInt(nutzereingabe); + this.zufallszahlengenerator.setObergrenze(nutzereingabeAlsZahl); + return true; + } else { + return false; + } + } + + public void weiseAnZufallszahl() { + this.zufallszahlengenerator.erzeugeNeueZufallszahl(); + } +} diff --git a/Observer.java b/Observer.java new file mode 100644 index 0000000..948f848 --- /dev/null +++ b/Observer.java @@ -0,0 +1,3 @@ +public interface Observer { + public void update(); +} diff --git a/Subject.java b/Subject.java new file mode 100644 index 0000000..9e084ce --- /dev/null +++ b/Subject.java @@ -0,0 +1,9 @@ +import java.util.ArrayList; + +public interface Subject { + ArrayList observers = new ArrayList<>(); + + public void attach(Observer o); + public void detach(Observer o); + public void notifyObservers(); +} diff --git a/View.java b/View.java new file mode 100644 index 0000000..db5ff35 --- /dev/null +++ b/View.java @@ -0,0 +1,63 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class View implements Observer { + Kontrolleur kontrolleur; + Zufallszahlengenerator zufallszahlengenerator; + JFrame fenster; + JButton generierKnopf; + JTextField eingabeFeld; + JLabel ausgabeFeld; + + public View() { + fenster = new JFrame("Zufallswahl"); + fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + fenster.setSize(480,240); + + eingabeFeld = new JTextField(); + generierKnopf = new JButton("Generiere Zufallszahl"); + ausgabeFeld = new JLabel("Willkommen beim Zufallszahlengenerator!"); + + registriereListener(); + + Container oberfläche = fenster.getContentPane(); + oberfläche.add(eingabeFeld, BorderLayout.NORTH); + oberfläche.add(generierKnopf, BorderLayout.CENTER); + oberfläche.add(ausgabeFeld, BorderLayout.SOUTH); + + fenster.setVisible(true); + } + + public void setKontrolleur(Kontrolleur k) { + this.kontrolleur = k; + } + + public void setZufallszahlengenerator(Zufallszahlengenerator z) { + this.zufallszahlengenerator = z; + } + + private void registriereListener() { + this.generierKnopf.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (kontrolleur.setObergrenze(eingabeFeld.getText())) { + kontrolleur.weiseAnZufallszahl(); + } else { + ausgabeFeld.setText("Gib eine ganze Zahl an!"); + } + } + }); + } + + @Override + public void update() { + StringBuilder ausgabeText = new StringBuilder(); + ausgabeText.append("Zufallszahl: "); + ausgabeText.append(this.zufallszahlengenerator.getZufallszahl()); + ausgabeText.append(" | Obergrenze: "); + ausgabeText.append(this.zufallszahlengenerator.getObergrenze()); + this.ausgabeFeld.setText(ausgabeText.toString()); + } +} diff --git a/Zufallszahlengenerator.java b/Zufallszahlengenerator.java new file mode 100644 index 0000000..a29591d --- /dev/null +++ b/Zufallszahlengenerator.java @@ -0,0 +1,41 @@ +public class Zufallszahlengenerator implements Subject { + int obergrenze; + long zufallszahl; + + @Override + public void attach(Observer o) { + this.observers.add(o); + } + + @Override + public void detach(Observer o) { + this.observers.remove(o); + } + + @Override + public void notifyObservers() { + for (Observer observer : observers) { + observer.update(); + } + } + + public void setObergrenze(int obergrenze) { + this.obergrenze = obergrenze; + notifyObservers(); + } + + public int getObergrenze() { + return this.obergrenze; + } + + public void erzeugeNeueZufallszahl() { + int minimum = 1; + this.zufallszahl = minimum + Math.round(Math.random() * (this.obergrenze - minimum)); + notifyObservers(); + } + + public long getZufallszahl() { + return this.zufallszahl; + } + +} diff --git a/package.bluej b/package.bluej new file mode 100644 index 0000000..7367f4e --- /dev/null +++ b/package.bluej @@ -0,0 +1,82 @@ +#BlueJ package file +dependency1.from=View +dependency1.to=Zufallszahlengenerator +dependency1.type=UsesDependency +dependency2.from=Kontrolleur +dependency2.to=View +dependency2.type=UsesDependency +dependency3.from=Kontrolleur +dependency3.to=Zufallszahlengenerator +dependency3.type=UsesDependency +editor.fx.0.height=737 +editor.fx.0.width=800 +editor.fx.0.x=1571 +editor.fx.0.y=99 +objectbench.height=93 +objectbench.width=1007 +package.divider.horizontal=0.6 +package.divider.vertical=0.8706338939197931 +package.editor.height=666 +package.editor.width=879 +package.editor.x=1232 +package.editor.y=446 +package.frame.height=873 +package.frame.width=1031 +package.numDependencies=3 +package.numTargets=7 +package.showExtends=true +package.showUses=true +project.charset=UTF-8 +readme.height=60 +readme.name=@README +readme.width=49 +readme.x=10 +readme.y=10 +target1.height=70 +target1.name=Kontrolleur +target1.showInterface=false +target1.type=ClassTarget +target1.width=120 +target1.x=450 +target1.y=320 +target2.height=70 +target2.name=Observer +target2.showInterface=false +target2.type=InterfaceTarget +target2.width=120 +target2.x=360 +target2.y=150 +target3.height=70 +target3.name=Main +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=10 +target3.y=90 +target4.height=70 +target4.name=View +target4.showInterface=false +target4.type=ClassTarget +target4.width=120 +target4.x=100 +target4.y=320 +target5.height=70 +target5.name=Zufallszahlengenerator +target5.showInterface=false +target5.type=ClassTarget +target5.width=200 +target5.x=230 +target5.y=20 +target6.height=70 +target6.name=Subject +target6.showInterface=false +target6.type=InterfaceTarget +target6.width=120 +target6.x=200 +target6.y=150 +target7.height=70 +target7.name=README.md +target7.type=TextTarget +target7.width=120 +target7.x=500 +target7.y=20