Programm in zwei Klassen aufteilen?

  • Themenstarter Themenstarter manunana89
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

manunana89

Gast
Hi ich wollte dieses Programm in zwei Klassen aufteilen!!!

Also "objektorientiert" Oberfläche und "Engine" voneinander trennen.
Theoretisch hab ich ja nur das letzte Drittel wirklich selbst auf die Beine gestellt!

Programmerklärung: Das Programm liest erst eine Zahl z ein !
Die Variablel zahlenanzahl beschreibt die Anzahl der Zahlen die verglichen werden sollen und nachfolgend angegeben werden können!
Zum Schluss gibt das Programm die kleinste und größte Zahl aus!

Wäre supernett wenn mir jemand helfen könnte die Oberfläche un die "Engine" zu trennen und in zwei Klassen aufzuteilen'😀'



Code:
  import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JTextField;



import javax.swing.WindowConstants;

import javax.swing.border.BevelBorder;

import javax.swing.SwingUtilities;





public class NewJFrame extends javax.swing.JFrame {

	private JButton endebutton;

	private JButton button;

	private JTextField textfield;

	private JLabel label;

	int zahlenanzahl;

	boolean zahlenfestgelegt = false;

	int  max = -100000000;

	int  min = 1000000000;

	private JButton neu;

	private JLabel jLabel2;

	private JLabel jLabel1;

	int labelzahl;







	public static void main(String[] args) {

		SwingUtilities.invokeLater(new Runnable() {

			public void run() {

				NewJFrame inst = new NewJFrame();

				inst.setLocationRelativeTo(null);

				inst.setVisible(true);

			}

		});

	}



	public NewJFrame() {

		super();

		initGUI();

	}



	private void initGUI() {

		try {

			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

			getContentPane().setLayout(null);

			this.setTitle("MinMax");

			{

				endebutton = new JButton();

				getContentPane().add(endebutton);

				endebutton.setText("Ende!");

				endebutton.setBounds(78, 168, 114, 21);

				endebutton.addActionListener(new ActionListener() {

					public void actionPerformed(ActionEvent evt) {

						endebuttonActionPerformed(evt);

					}

				});

			}

			{

				button = new JButton();

				getContentPane().add(button);

				button.setText("Drücken!");

				button.setBounds(78, 116, 114, 21);

				button.addActionListener(new ActionListener() {

					public void actionPerformed(ActionEvent evt) {

						buttonActionPerformed(evt);

					}

				});

			}

			{

				textfield = new JTextField();

				getContentPane().add(textfield);

				textfield.setBounds(80, 37, 112, 21);

			}

			{

				label = new JLabel();

				getContentPane().add(label);

				label.setText("Wieviele Zahlen wollen Sie vergleichen?");

				label.setBounds(32, 4, 236, 27);

			}

			{

				jLabel1 = new JLabel();

				getContentPane().add(jLabel1);

				jLabel1.setText(" Minimum:");

				jLabel1.setBounds(80, 65, 112, 21);

				jLabel1.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));

			}

			{

				jLabel2 = new JLabel();

				getContentPane().add(jLabel2);

				jLabel2.setText(" Maximum: ");

				jLabel2.setBounds(80, 90, 112, 20);

				jLabel2.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));

			}

			{

				neu = new JButton();

				getContentPane().add(neu);

				neu.setText("Neustart!");

				neu.setBounds(78, 142, 114, 21);

				neu.addActionListener(new ActionListener() {

					public void actionPerformed(ActionEvent evt) {

						neuActionPerformed(evt);

					}

				});

			}

			pack();

			this.setSize(276, 235);

		} catch (Exception e) {

			e.printStackTrace();

		}

	}



	private void endebuttonActionPerformed(ActionEvent evt) {

		System.exit(0);

	}



	private void buttonActionPerformed(ActionEvent evt) {

		int einlesenmin , einlesenmax ; 

		

		if (zahlenfestgelegt == false) {

			zahlenanzahl = Integer.parseInt(textfield.getText());

			System.out.println(zahlenanzahl);

			zahlenfestgelegt = true;

			labelzahl = 1;

			label.setText("              Bitte " + labelzahl

					+ ".Zahl eingeben!");

			textfield.setText("");

		}



		else {

			

			labelzahl++;

			einlesenmin = Integer.parseInt(textfield.getText());

			einlesenmax = Integer.parseInt(textfield.getText());

			textfield.setText("");

			label.setText("              Bitte " + labelzahl

					+ ".Zahl eingeben!");

			 

			System.out.println(zahlenfestgelegt);

			System.out.println(min);

			System.out.println(max);

		

		if (einlesenmax > max)

		max = einlesenmax;

		

		if (einlesenmin < min )

		min = einlesenmin ; }

		

		

			

			

			

			

			

			if (labelzahl-1 == zahlenanzahl ){

				label.setText("                          Fertig!");

				System.out.println("Fertiges max= "+max);

				jLabel1.setText(" Minimum:  "+ min);

				jLabel2.setText(" Maximum: "+max);



			}}



	private void neuActionPerformed(ActionEvent evt) {

		zahlenfestgelegt = false ; 

		min = 1000000000;

		max = -100000000;

		label.setText("Wieviele Zahlen wollen Sie vergleichen?");

		jLabel1.setText(" Minimum:  ");

		jLabel2.setText(" Maximum: ");

		textfield.setText("");

	}}
😀 😀 😀 😀 😀 😎 😀 😀 😀 😀 😀 😀 😀 😀
 
Hi,

zwei Klassen im selben Package? Bilde doch eine Subklasse.

Code:
public class AussenKlasse extends JFrame{

       gui();{

                    .....
           }
.....
...
             private class InnereKlasse implements ActionListener{

                  irgendEinCode.....

             }
                         public static void  main....
}

Oder meinst Du etwas anderes?!?!

Gruß
 
Also es geht schon in die Richtung doch meine ich das die Klassen auch wirklich in 2 verschiedene Source Files geschrieben un getrennt compiliert werden können!
 
manunana89 hat gesagt.:
Also es geht schon in die Richtung doch meine ich das die Klassen auch wirklich in 2 verschiedene Source Files geschrieben un getrennt compiliert werden können!

Das ist nicht möglich. Du kannst die Klassen nur in Packages unterteilen. Wenn du sie in unterschiedlichen Verzeichnissen ablegst, dann kannst du sie nicht zusammen kompilieren und sie werden von Java als zwei unterschiedliche Projekte angesehen.
Du legst einfach mehrere Klassen an, die jeweils immer für einen Teil deines Projektes zuständig sind, z.B eine für das GUI und eine andere für dessen Steuerung.
Für eine noch bessere Übersicht hast du dann immer noch die Packages.
 
Antoras hat gesagt.:
Das ist nicht möglich. Du kannst die Klassen nur in Packages unterteilen. Wenn du sie in unterschiedlichen Verzeichnissen ablegst, dann kannst du sie nicht zusammen kompilieren und sie werden von Java als zwei unterschiedliche Projekte angesehen.

Das ergibt keinen Sinn. Java kennt keine Projekte.
 
Ja klar. Ich mein, dass Java es dann nicht als zusammenhängenden Code interpretiert.

Ich denke, der Threaderöffner wird schon wissen was ich mein. 😉
 
Antoras hat gesagt.:
Ja klar. Ich mein, dass Java es dann nicht als zusammenhängenden Code interpretiert.
Genau das soll ja auch nicht passieren.

Selbstverständlich können Klassen im gleichen Package in verschiedenen Quelldateien gespeichert sein (wenn die Klassen public sein sollen und es sich nicht um inner classes handeln soll, dann müssen sie es sogar).
 
Genau das hab ich doch gesagt. Dateien (bzw. Klassen) kann man so viele haben wie man möchte. Sie dürfen nur nicht in verschiedenen Verzeichnissen (für Windows-User sind es die Ordner) liegen.
Packages kann man natürlich auch so viele haben wie man möchte - sie müssen nur alle im selbern Verzeichnis liegen.
 
Antoras hat gesagt.:
Genau das hab ich doch gesagt. Dateien (bzw. Klassen) kann man so viele haben wie man möchte. Sie dürfen nur nicht in verschiedenen Verzeichnissen (für Windows-User sind es die Ordner) liegen.
Packages kann man natürlich auch so viele haben wie man möchte - sie müssen nur alle im selbern Verzeichnis liegen.
Das ergibt doch gar keinen Sinn. Natürlich kann ich Klassen in verschiedene Ordner legen, ganz wie ich lustig bin. Ob eine Verteilung Sinn ergibt ist natürlich eine Einzelfallentscheidung. Aber möglich ist da alles.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben