Zugriff auf Objekte

smartin123

Mitglied
Hallo,

das ist vielleicht eine Anfängerfrage, aber leider weiß ich darauf noch keine Antwort :)

Wenn man ein Programm mit 2 Klassen hat. Und man von einer anderen Klasse ein Objekt erzeugt, kann man auf dieses Objekt von der anderen Klasse zugreifen? (Ohne Vererbung)

z.b.

class Kunden{
private String vorname = "";
private String nachname = "";

.
.
public void kundenanlegen( ) {
Kunden k = new Kunden( );
}

}
class GUI{

.
.
public void kundendatenabruf( ) {

// hier möcht ich gerne auf das Objekt von Klasse Kunden zugreifen?

}
}

Beide Klassen sind grafische Oberflächen und in der Klasse Kunden befinden sich die Getter und Setter Methoden.
Ich bin echt am Verzweifeln, weil ich nicht weiß, wie man auf das Objekt einer anderen Klasse zugreifen kann.

Bitte helft mir.

Gruß
Martin
 
Unschön: DU setzt das Objekt Public, so, daß von aussen draut zugegriffen werden kann.

Besser: Schreibe Dir Behandlungsmethoden des Objektes in der "Zwischenklassen", dann kannst Du über $OBJECT1.OBJECT2.METHODEAUFOBJECT3 indirekt darauf zugreifen.
 
Hi Navy,

vielen Dank für deine schnelle Antwort.

Ich arbeite in Eclispe und kenn mich noch nicht so gut aus. Ich hab jetzt 2 externe Klassen. Meinst du, dass ich die 1 Klasse als Zwischenklasse von der anderen Klasse speichern soll?
 
Nein. Folgende Hirachie:

Object1 -> Objekt2 -> Objekt3 (UML: Assoziation)

Du kannst nur direkt von einem Objekt entlang des Pfeils auf das andere Objekt zugreifen. Um aber von Objekt1 auf Objekt3 zuzugreifen musst Du entweder Objekt3 global public in Klasse2 erstellen oder aber (und das ist die bessere Variante), Du schreibst Dir eigene public-Methoden im Klasse2, die auf die Methoden der Klasse 3 zugreifen.
 
Danke nochmals für deine Bemühungen, aber ich verstehs nicht, ich
füg hier mal meinen Code ein:

Der Button Kundenanlegen funktioniert einwnadfrei, nur eben leider nicht der Button Kundenausgabe in der GUI-Klasse.

Würdest du mir bitte kurz einen Anhaltspunkt geben, wie du das mit dem Objekt zugriff genau meinst?

Klasse GUI:

Code:
package buecher;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextArea;
import javax.swing.JButton;
import buecher.Kundenanlage;
import buecher.Kundenanlage.Ereignisabhoerer;

public class GUI extends JFrame {
	
		
	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	private JLabel jl1 = null;

	private JButton bu1 = null;

	private JLabel jl2 = null;

	private JLabel jl3 = null;

	private JButton jButton = null;

	private JButton bu2 = null;

	private JLabel jl4 = null;

	private JLabel jl5 = null;

	private JButton bu3 = null;

	private Kundenanlage kundenanlage = null;  //  @jve:decl-index=0:visual-constraint="511,45"

	private Buchanlage buchanlage = null;  //  @jve:decl-index=0:visual-constraint="511,263"

	private Buecherausleihe buecherausleihe = null;  //  @jve:decl-index=0:visual-constraint="512,142"

	/**
	 * This is the default constructor
	 */
	public GUI() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(476, 395);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
		this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				System.exit(0);
			}
		});
	
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jl5 = new JLabel();
			jl5.setBounds(new Rectangle(20, 127, 144, 31));
			jl5.setText("Bücher ausleihen >>>");
			jl4 = new JLabel();
			jl4.setBounds(new Rectangle(20, 77, 144, 33));
			jl4.setText("Kunden anlegen >>>");
			jl3 = new JLabel();
			jl3.setBounds(new Rectangle(245, 256, 110, 25));
			jl3.setText("Bücher suchen");
			jl2 = new JLabel();
			jl2.setBounds(new Rectangle(15, 256, 161, 25));
			jl2.setText("Bücher eintragen / löschen");
			jl1 = new JLabel();
			jl1.setBounds(new Rectangle(74, 8, 279, 37));
			jl1.setText("Bücherausleihsystem");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(jl1, null);
			jContentPane.add(getBu1(), null);
			jContentPane.add(jl2, null);
			jContentPane.add(jl3, null);
			jContentPane.add(getJButton(), null);
			jContentPane.add(getBu2(), null);
			jContentPane.add(jl4, null);
			jContentPane.add(jl5, null);
			jContentPane.add(getBu3(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes bu1	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBu1() {
		if (bu1 == null) {
			bu1 = new JButton();
			bu1.setBounds(new Rectangle(53, 293, 70, 45));
			bu1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
				new Buchanlage().setVisible(true);	
				}
			});
		}
		return bu1;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new Rectangle(260, 293, 70, 45));
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					
					
					try {
					Kunden []t = Kundenanlage.class.newInstance().k;
					
					for(int i=1; i<10 ;i++){		
						System.out.println("\nName: "+ t[i].getKname() + "\nStraße: "+t[i].getKstra()+"\nOrt:"+
							t[i].getKort()+"\nKnr:"+i+"\n");
										
					}
					} catch (InstantiationException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					} catch (IllegalAccessException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					

				}
			});
					
		}
		return jButton;
		}
	
	
			
		
	
	
	private JButton getBu2() {
		if (bu2 == null) {
			bu2 = new JButton();
			bu2.setBounds(new Rectangle(231, 73, 108, 39));
			bu2.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					Kundenanlage kan = new Kundenanlage();
					kan.setVisible(true);
				}
			});
		}
		return bu2;
	}

	/**
	 * This method initializes bu3	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBu3() {
		if (bu3 == null) {
			bu3 = new JButton();
			bu3.setBounds(new Rectangle(231, 124, 108, 39));
			bu3.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
				new Buecherausleihe().setVisible(true);	
				}
			});
		}
		return bu3;
	}

	/**
	 * This method initializes kundenanlage	
	 * 	
	 * @return buecher.Kundenanlage	
	 */
	private Kundenanlage getKundenanlage() {
		if (kundenanlage == null) {
			kundenanlage = new Kundenanlage();
			kundenanlage.setSize(new Dimension(124, 49));
		}
		return kundenanlage;
	}

	/**
	 * This method initializes buchanlage	
	 * 	
	 * @return buecher.Buchanlage	
	 */
	private Buchanlage getBuchanlage() {
		if (buchanlage == null) {
			buchanlage = new Buchanlage();
			buchanlage.setSize(new Dimension(132, 40));
		}
		return buchanlage;
	}

	/**
	 * This method initializes buecherausleihe	
	 * 	
	 * @return buecher.Buecherausleihe	
	 */
	private Buecherausleihe getBuecherausleihe() {
		if (buecherausleihe == null) {
			buecherausleihe = new Buecherausleihe();
			buecherausleihe.setSize(new Dimension(128, 23));
		}
		return buecherausleihe;
	}
	

}  //  @jve:decl-index=0:visual-constraint="2,-7"

Klasse Kunden:
Code:
package buecher;

public class Kunden {
	
	private String kname = "";
	private String kstra = "";
	private String kort = "";
	private Buecher buch;
		
	public Buecher getBuch() {
		return buch;
	}

	public void setBuch(Buecher buch) {
		this.buch = buch;
	}

	public Kunden(String kname, String kstra, String kort){
		this.kname = kname;
		this.kstra = kstra;
		this.kort = kort;
		 
	}
	
	public Kunden(){}

	public String getKname() {
		return kname;
	}

	public void setKname(String kname) {
		this.kname = kname;
	}

	public String getKort() {
		return kort;
	}

	public void setKort(String kort) {
		this.kort = kort;
	}

	public String getKstra() {
		return kstra;
	}

	public void setKstra(String kstra) {
		this.kstra = kstra;
	}
	

}

Klasse Kundenanlage:

Code:
package buecher;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.WindowConstants;

import buecher.Buecherausleihe.Ereignisabhoerer;

public class Kundenanlage extends JFrame {
	
	Kunden k[] = new Kunden[10];  //  @jve:decl-index=0:
	
	
	
	private Ereignisabhoerer ea1 = new Ereignisabhoerer();  //  @jve:decl-index=0:

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	private JLabel jLabel1 = null;

	private JLabel jLabel2 = null;

	private JLabel jLabel3 = null;

	private JTextField jTextField = null;

	private JTextField jTextField2 = null;

	private JTextField jTextField3 = null;

	private JButton anl = null;

	private JLabel knr = null;

	private JTextField textf = null;

	private JLabel kunden = null;

	private JTextArea jTextArea = null;

	private JScrollPane jScrollPane = null;

	public Kundenanlage() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(577, 350);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
			
			}
		});
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			kunden = new JLabel();
			kunden.setBounds(new Rectangle(426, 157, 128, 18));
			kunden.setText("Kunden: (Anzeige)");
			knr = new JLabel();
			knr.setBounds(new Rectangle(438, 36, 85, 32));
			knr.setText("Knr vergeben:");
			jLabel3 = new JLabel();
			jLabel3.setBounds(new Rectangle(30, 172, 143, 38));
			jLabel3.setText("Ort :");
			jLabel2 = new JLabel();
			jLabel2.setBounds(new Rectangle(31, 107, 139, 38));
			jLabel2.setText("Straße :");
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(31, 45, 137, 36));
			jLabel1.setText("Name :");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(jLabel1, null);
			jContentPane.add(jLabel2, null);
			jContentPane.add(jLabel3, null);
			jContentPane.add(getJTextField(), null);
			jContentPane.add(getJTextField2(), null);
			jContentPane.add(getJTextField3(), null);
			jContentPane.add(getAnl(), null);
			jContentPane.add(knr, null);
			jContentPane.add(getTextf(), null);
			jContentPane.add(kunden, null);
			jContentPane.add(getJTextArea(), null);
			jContentPane.add(getJScrollPane(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setBounds(new Rectangle(211, 44, 160, 37));
		}
		return jTextField;
	}

	/**
	 * This method initializes jTextField2	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField2() {
		if (jTextField2 == null) {
			jTextField2 = new JTextField();
			jTextField2.setBounds(new Rectangle(210, 107, 163, 33));
		}
		return jTextField2;
	}

	/**
	 * This method initializes jTextField3	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField3() {
		if (jTextField3 == null) {
			jTextField3 = new JTextField();
			jTextField3.setBounds(new Rectangle(211, 175, 162, 31));
		}
		return jTextField3;
	}

	/**
	 * This method initializes anl	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getAnl() {
		if (anl == null) {
			anl = new JButton();
			anl.setBounds(new Rectangle(124, 239, 151, 40));
			anl.setText("Anlegen");
			anl.addActionListener(ea1);					
			}
						
		return anl;
	}
	
	/**
	 * This method initializes textf	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTextf() {
		if (textf == null) {
			textf = new JTextField();
			textf.setBounds(new Rectangle(438, 82, 81, 49));
			textf.setEditable(false);
		}
		return textf;
	}

	/**
	 * This method initializes jTextArea	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea() {
		if (jTextArea == null) {
			jTextArea = new JTextArea();
			jTextArea.setBounds(new Rectangle(405, 184, 155, 124));
			jTextArea.setColumns(1);
		}
		return jTextArea;
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane(jTextArea);
			jScrollPane.setBounds(new Rectangle(406, 186, 154, 122));
			jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			
			
		}
		return jScrollPane;
	
	
	}

	public class Ereignisabhoerer implements ActionListener {	
			
		public void actionPerformed(ActionEvent arg0) {
				
			for(int i=1; i<=10 ;i++){		
					if(k[i] == null){
						anlegen(i);
						
						break;
					}
	
		}
			
		}
		private void anlegen(int i) {
			
			if(k[i] == null){
			textf.setText(Integer.toString(i));
			
			k[i] = new Kunden();
			k[i].setKname(jTextField.getText());
			k[i].setKstra(jTextField2.getText());
			k[i].setKort(jTextField3.getText());
//			
//			k[i] = new Kunden(jTextField.getText(),jTextField2.getText(),jTextField3.getText());
			
			jTextField.setText(null);
			jTextField2.setText(null);
			jTextField3.setText(null);
			
			jTextArea.append("\nName: "+k[i].getKname()+ "\nStraße: "+k[i].getKstra()+"\nOrt:"+
									k[i].getKort()+"\nKnr:"+i+"\n");
			System.out.println(i);
					
				}
			}	
		
	public void kundendatenausgabe(){
		for(int i=0;i<k.length;i++){
			System.out.println("\nName: "+k[i].getKname()+ "\nStraße: "+k[i].getKstra()+"\nOrt:"+
									k[i].getKort()+"\nKnr:"+i+"\n");
		}
	}
		}
}
 
Ich machs mal anhand eines Beispiels.

Wir haben Auto, Besitzer und Fahrer. Alles 3 disjunkte Klassen ohne das sie Erben.
Wir haben eine Oberklasse Besitzer, der ein Auto instanziert und das wiederum einen Fahrer hat.

Wir wollen von einem Auto den Fahrernamen wissen, ohne direkt auf den Fahrer zuzugreifen:

Code:
public class Besitzer 
{
	public static void main(String[] args) 
	{
		Auto Car = new Auto("tutorial");
		System.out.println(Car.GetDriverName());
	}
}

Code:
public class Auto 
{
	private Fahrer driver;
	
	public Auto(String Name)
	{
		driver = new Fahrer(Name); 
	}
	
	public String GetDriverName()
	{
		return driver.GetName();
	}
}

Code:
public class Fahrer 
{
	private String Name;
	
	public Fahrer(String InName)
	{
		Name = InName;
	}
	
	public String GetName()
	{
		return Name;
	}
}

Du musst einfach die Informationen des letzten Objektes durch Mathoden des mittleren Objektes durchreichen.
 
Ok, alles klar, ich denke dass ich es verstanden hab,
jetzt muss ich es nur noch umsetzten. :)

Herzlichen Dank für deine Hilfe

Ciao
Martin
 
Zurück