Taschenrechner
parent
d7a8a4fc20
commit
99f7589b06
|
@ -6,7 +6,7 @@
|
|||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" path="Programmierung2/src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
|
||||
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
|
|
|
@ -8,4 +8,5 @@ module Programmierung2 {
|
|||
requires java.desktop;
|
||||
requires org.junit.jupiter.api;
|
||||
requires junit;
|
||||
exports Übungen.TaschenrechnerGUI to junit; // Exportiere das Paket für das JUnit-Modul
|
||||
}
|
|
@ -0,0 +1,156 @@
|
|||
package Übungen.TaschenrechnerGUI;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class Controller implements ActionListener {
|
||||
|
||||
Modell<Integer,Integer> m1;
|
||||
View v1;
|
||||
String letzterText = "";
|
||||
char operationen[] = {'+', '-','*','÷'};
|
||||
char merker = ' ';
|
||||
String erst = "";
|
||||
String last = "";
|
||||
Integer zahl1;
|
||||
Integer zahl2;
|
||||
|
||||
|
||||
public Controller(Modell<Integer, Integer> m1, View v1) {
|
||||
this.m1 = m1;
|
||||
this.v1 = v1;
|
||||
getButtons();
|
||||
|
||||
}
|
||||
|
||||
public void getButtons() {
|
||||
ActionListener actionListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
letzterText = v1.eingabe.getText();
|
||||
|
||||
if (e.getSource() == v1.button1)
|
||||
v1.eingabe.setText(letzterText + v1.button1.getText());
|
||||
|
||||
if (e.getSource() == v1.button2)
|
||||
v1.eingabe.setText(letzterText + v1.button2.getText());
|
||||
|
||||
if (e.getSource() == v1.button3)
|
||||
v1.eingabe.setText(letzterText + v1.button3.getText());
|
||||
|
||||
if (e.getSource() == v1.button4)
|
||||
v1.eingabe.setText(letzterText + v1.button4.getText());
|
||||
|
||||
if (e.getSource() == v1.button5)
|
||||
v1.eingabe.setText(letzterText + v1.button5.getText());
|
||||
|
||||
if (e.getSource() == v1.button1)
|
||||
v1.eingabe.setText(letzterText + v1.button1.getText());
|
||||
|
||||
if (e.getSource() == v1.button6)
|
||||
v1.eingabe.setText(letzterText + v1.button6.getText());
|
||||
|
||||
if (e.getSource() == v1.button7)
|
||||
v1.eingabe.setText(letzterText + v1.button7.getText());
|
||||
|
||||
if (e.getSource() == v1.button8)
|
||||
v1.eingabe.setText(letzterText + v1.button8.getText());
|
||||
|
||||
if (e.getSource() == v1.button9)
|
||||
v1.eingabe.setText(letzterText + v1.button9.getText());
|
||||
|
||||
if (e.getSource() == v1.button0)
|
||||
v1.eingabe.setText(letzterText + v1.button0.getText());
|
||||
|
||||
if (e.getSource() == v1.punkt)
|
||||
v1.eingabe.setText(letzterText + v1.punkt.getText());
|
||||
|
||||
if (e.getSource() == v1.plus)
|
||||
v1.eingabe.setText(letzterText + v1.plus.getText());
|
||||
|
||||
if (e.getSource() == v1.minus)
|
||||
v1.eingabe.setText(letzterText + v1.minus.getText());
|
||||
|
||||
if (e.getSource() == v1.multi)
|
||||
v1.eingabe.setText(letzterText + v1.multi.getText());
|
||||
|
||||
if (e.getSource() == v1.divid)
|
||||
v1.eingabe.setText(letzterText + v1.divid.getText());
|
||||
|
||||
if (e.getSource() == v1.berechnen) {
|
||||
checkeOperator();
|
||||
textverteilen();
|
||||
textToNumber();
|
||||
if (merker != ' ')
|
||||
if (merker == '+') {
|
||||
int ergebnisse = (int) m1.add(zahl1, zahl2);
|
||||
v1.updateErgebnisse(ergebnisse);
|
||||
}
|
||||
|
||||
else if (merker == '-') {
|
||||
int ergebnisse = (int) m1.sub(zahl1, zahl2);
|
||||
v1.updateErgebnisse(ergebnisse);
|
||||
}
|
||||
|
||||
else if (merker == '*') {
|
||||
int ergebnisse = (int) m1.multi(zahl1, zahl2);
|
||||
v1.updateErgebnisse(ergebnisse);
|
||||
}
|
||||
|
||||
else if (merker == '÷') {
|
||||
int ergebnisse = (int) m1.divid(zahl1, zahl2);
|
||||
v1.updateErgebnisse(ergebnisse);
|
||||
}
|
||||
}
|
||||
letzterText = v1.eingabe.getText();
|
||||
}
|
||||
};
|
||||
|
||||
v1.button1.addActionListener(actionListener);
|
||||
v1.button2.addActionListener(actionListener);
|
||||
v1.button3.addActionListener(actionListener);
|
||||
v1.button4.addActionListener(actionListener);
|
||||
v1.button5.addActionListener(actionListener);
|
||||
v1.button6.addActionListener(actionListener);
|
||||
v1.button7.addActionListener(actionListener);
|
||||
v1.button8.addActionListener(actionListener);
|
||||
v1.button9.addActionListener(actionListener);
|
||||
v1.button0.addActionListener(actionListener);
|
||||
v1.punkt.addActionListener(actionListener);
|
||||
v1.plus.addActionListener(actionListener);
|
||||
v1.minus.addActionListener(actionListener);
|
||||
v1.divid.addActionListener(actionListener);
|
||||
v1.multi.addActionListener(actionListener);
|
||||
v1.eingabe.addActionListener(actionListener);
|
||||
v1.berechnen.addActionListener(actionListener);
|
||||
}
|
||||
|
||||
private void checkeOperator() {
|
||||
merker = ' ';
|
||||
for (int i = 0; i < letzterText.length(); i++)
|
||||
for (int j = 0; j < operationen.length; j++)
|
||||
if (letzterText.charAt(i) == operationen[j])
|
||||
merker = operationen[j];
|
||||
}
|
||||
|
||||
private void textverteilen() {
|
||||
if (merker != ' ') {
|
||||
int i = letzterText.indexOf(merker);
|
||||
erst = letzterText.substring(0, i);
|
||||
last = letzterText.substring(i + 1,letzterText.length());
|
||||
}
|
||||
}
|
||||
|
||||
public void textToNumber() {
|
||||
zahl2 = Integer.parseInt(last);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Modell<Integer, Integer> m = new Modell<>();
|
||||
View v = new View();
|
||||
Controller n1 = new Controller(m, v);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package Übungen.TaschenrechnerGUI;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
|
||||
public class JunitTest {
|
||||
Modell<Double, Double> m1;
|
||||
|
||||
@BeforeEach
|
||||
public void initi() {
|
||||
m1 = new Modell<>();
|
||||
}
|
||||
|
||||
@Disabled
|
||||
public void testAdd() {
|
||||
Modell<Integer, Integer> m1 = new Modell<>();
|
||||
assertEquals(15 ,m1.add(10, 5).intValue());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSub() {
|
||||
Modell<Integer, Integer> m1 = new Modell<>();
|
||||
assertEquals(5 ,m1.sub(10, 5).intValue());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testdivid() {
|
||||
Modell<Integer, Integer> m1 = new Modell<>();
|
||||
assertEquals(5 ,m1.divid(5, 0).intValue());
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package Übungen.TaschenrechnerGUI;
|
||||
|
||||
public class Modell <T extends Number,T2 extends Number> {
|
||||
|
||||
|
||||
public Number add(T z1, T2 z2) {
|
||||
|
||||
if (z1 instanceof Integer || z2 instanceof Integer )
|
||||
return z1.intValue() + z2.intValue();
|
||||
|
||||
else if (z1 instanceof Double || z2 instanceof Double )
|
||||
return z1.doubleValue() + z2.doubleValue();
|
||||
|
||||
else
|
||||
return z1.floatValue() + z2.floatValue();
|
||||
}
|
||||
|
||||
public Number sub(T z1, T2 z2) {
|
||||
if (z1 instanceof Integer || z2 instanceof Integer)
|
||||
return z1.intValue() - z2.intValue();
|
||||
|
||||
else if (z1 instanceof Double || z2 instanceof Double)
|
||||
return z1.doubleValue() - z2.doubleValue();
|
||||
|
||||
else
|
||||
return z1.floatValue() - z2.floatValue();
|
||||
|
||||
}
|
||||
|
||||
public Number multi(T z1, T2 z2) {
|
||||
if (z1 instanceof Integer || z2 instanceof Integer)
|
||||
return z1.intValue() * z2.intValue();
|
||||
|
||||
else if (z1 instanceof Double || z2 instanceof Double)
|
||||
return z1.doubleValue() * z2.doubleValue();
|
||||
|
||||
else
|
||||
return z1.floatValue() * z2.floatValue();
|
||||
|
||||
}
|
||||
|
||||
public Number divid(T z1, T2 z2) throws ArithmeticException {
|
||||
if (z2.intValue() == 0)
|
||||
throw new ArithmeticException ("Ungültige division Operation!");
|
||||
|
||||
|
||||
if (z1 instanceof Integer || z2 instanceof Integer)
|
||||
return z1.intValue() / z2.intValue();
|
||||
|
||||
else if (z1 instanceof Double || z2 instanceof Double)
|
||||
return z1.doubleValue() / z2.doubleValue();
|
||||
|
||||
else
|
||||
return z1.floatValue() / z2.floatValue();
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,107 @@
|
|||
package Übungen.TaschenrechnerGUI;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class View extends JFrame {
|
||||
// Fenster Eigenschaften:
|
||||
final int WIDTH = 500;
|
||||
final int HEIGHT = 500;
|
||||
|
||||
// Fenster Elemente:
|
||||
JTextField eingabe = new JTextField();
|
||||
JLabel ergebnisse = new JLabel();
|
||||
|
||||
JButton button1 = new JButton("1");
|
||||
JButton button2 = new JButton("2");
|
||||
JButton button3 = new JButton("3");
|
||||
JButton button4 = new JButton("4");
|
||||
JButton button5 = new JButton("5");
|
||||
JButton button6 = new JButton("6");
|
||||
JButton button7 = new JButton("7");
|
||||
JButton button8 = new JButton("8");
|
||||
JButton button9 = new JButton("9");
|
||||
JButton button0 = new JButton("0");
|
||||
JButton plus = new JButton("+");
|
||||
JButton minus = new JButton("-");
|
||||
JButton multi = new JButton("x");
|
||||
JButton divid = new JButton("÷");
|
||||
JButton punkt = new JButton(".");
|
||||
JButton berechnen = new JButton("OK");
|
||||
|
||||
int buttonWidth = 60;
|
||||
int buttonheight = 30;
|
||||
|
||||
|
||||
public View() {
|
||||
this.setTitle("Taschenrechner");
|
||||
this.setSize(WIDTH, HEIGHT);
|
||||
this.setResizable(false);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
this.setLocationRelativeTo(null);
|
||||
this.setVisible(true);
|
||||
this.setLayout(null);
|
||||
|
||||
ergebnisse.setBounds(40, 60, 100, 30);
|
||||
eingabe.setBounds(40, 100, buttonWidth * 5, 40);
|
||||
button1.setBounds(40,150,buttonWidth,buttonheight);
|
||||
button2.setBounds(120,150,buttonWidth,buttonheight);
|
||||
button3.setBounds(200,150,buttonWidth,buttonheight);
|
||||
button4.setBounds(40,190,buttonWidth,buttonheight);
|
||||
button5.setBounds(120,190,buttonWidth,buttonheight);
|
||||
button6.setBounds(200,190,buttonWidth,buttonheight);
|
||||
button7.setBounds(40,230,buttonWidth,buttonheight);
|
||||
button8.setBounds(120,230,buttonWidth,buttonheight);
|
||||
button9.setBounds(200,230,buttonWidth,buttonheight);
|
||||
button0.setBounds(40,270,buttonWidth*2 + 20,buttonheight);
|
||||
punkt.setBounds(200, 270, buttonWidth, buttonheight);
|
||||
|
||||
plus.setBounds(280, 150, buttonWidth, buttonheight);
|
||||
plus.setBackground(Color.GRAY);
|
||||
plus.setForeground(Color.WHITE);
|
||||
minus.setBounds(280, 190, buttonWidth, buttonheight);
|
||||
minus.setBackground(Color.GRAY);
|
||||
minus.setForeground(Color.WHITE);
|
||||
multi.setBounds(280, 230, buttonWidth, buttonheight);
|
||||
multi.setBackground(Color.GRAY);
|
||||
multi.setForeground(Color.WHITE);
|
||||
divid.setBounds(280, 270, buttonWidth, buttonheight);
|
||||
divid.setBackground(Color.GRAY);
|
||||
divid.setForeground(Color.WHITE);
|
||||
|
||||
berechnen.setBackground(Color.RED);
|
||||
berechnen.setForeground(Color.WHITE);
|
||||
berechnen.setBounds(280, 310, buttonWidth, buttonheight);
|
||||
|
||||
this.add(ergebnisse);
|
||||
this.add(eingabe);
|
||||
this.add(button1);
|
||||
this.add(button2);
|
||||
this.add(button3);
|
||||
this.add(button4);
|
||||
this.add(button5);
|
||||
this.add(button6);
|
||||
this.add(button7);
|
||||
this.add(button8);
|
||||
this.add(button9);
|
||||
this.add(button0);
|
||||
this.add(punkt);
|
||||
this.add(plus);
|
||||
this.add(minus);
|
||||
this.add(multi);
|
||||
this.add(divid);
|
||||
this.add(berechnen);
|
||||
|
||||
}
|
||||
|
||||
public void updateErgebnisse(int erg) {
|
||||
|
||||
ergebnisse.setText(erg + "");
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue