ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
4423
4423
EMPFEHLEN
-
12.03.07 13:32 #1
- Registriert seit
- Mar 2007
- Beiträge
- 65
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
-
12.03.07 13:49 #2
- Registriert seit
- Jul 2003
- Ort
- Montreal (Quebec)
- Beiträge
- 1.667
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.
-
12.03.07 13:54 #3
- Registriert seit
- Mar 2007
- Beiträge
- 65
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?
-
12.03.07 14:01 #4
- Registriert seit
- Jul 2003
- Ort
- Montreal (Quebec)
- Beiträge
- 1.667
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.
-
12.03.07 14:56 #5
- Registriert seit
- Mar 2007
- Beiträge
- 65
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
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"); } } } }
-
12.03.07 15:56 #6
- Registriert seit
- Jul 2003
- Ort
- Montreal (Quebec)
- Beiträge
- 1.667
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 :1 2 3 4 5 6 7 8
public class Besitzer { public static void main(String[] args) { Auto Car = new Auto("tutorial"); System.out.println(Car.GetDriverName()); } }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
public class Auto { private Fahrer driver; public Auto(String Name) { driver = new Fahrer(Name); } public String GetDriverName() { return driver.GetName(); } }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
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.
-
12.03.07 16:14 #7
- Registriert seit
- Mar 2007
- Beiträge
- 65
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
-
12.03.07 21:43 #8
- Registriert seit
- Mar 2007
- Beiträge
- 65
Juhu, es hat geklappt. *freu*
nochmal danke, danke, danke
Schöne Grüße
Martin
Ähnliche Themen
-
Zugriff auf Parameter von geklonten Objekte
Von blutsvente im Forum Cinema 4DAntworten: 2Letzter Beitrag: 11.09.10, 17:29 -
Zugriff auf objekte in einer List mit hql
Von eddie_the_great im Forum JavaAntworten: 0Letzter Beitrag: 07.05.09, 20:56 -
3D Objekte, Zugriff und Interaktion
Von phenex im Forum .NET WPF & SilverlightAntworten: 0Letzter Beitrag: 23.09.08, 21:27 -
Singleton (Zugriff auf Objekte)
Von Peregrin im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 8Letzter Beitrag: 08.08.07, 10:06 -
Zugriff auf Objekte
Von bocian im Forum .NET ArchivAntworten: 17Letzter Beitrag: 17.12.04, 18:58





Zitieren

Login





