Op donderdag 30 mei 2002 17:36 schreef Maxonic het volgende:
Misschien toch handig als ik mijn probleem wat onderbouw. Het zit dus zo... Ik ben een totale n00b wat betreft OOP. Ik zit nu dus met het volgende probleem.
Java en problemen!

FF kijken hoor

Ik heb 2 classes:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| class Interface extends JFrame {
Interface(){
speelveld = new Speelveld();
}
public void main(String parameter[]){
frame = new Interface();
}
public void setStatusbar(String tekst, int timeout){
// doe iets
}
} |
Ik ga even in de Alarmnummer-mode tips geven hoor:
1)Noem je klasse NIET Interface. Een interface is een reserved keyword in Java. De reden dat het nu goed gaat, is omdat het keyword met een kleine i is, en jouw klasse met een grote I. Echter voor een mens is het erg moeilijk te overzien dat jouw classe Interface geen interface is maar een classe
Wat is dan een interface? Een interface is een defnitie aan welke eisen een class zou moeten voldoen, maar de implementatie laat je aan de class zelf over. Echter je hebt dus wel methodes gespecificeerd, maar deze hebben geen inhoud. Meer info (en duidelijker

) kun je [url=http://java.sun.com/docs/books/tutorial/java/interpack/interfaces.html]hier[url] vinden.
2) Dit is een class die de main gaat bevatten? Deze classe geef je meestal
geen andere methodes, maar alleen een aanroep naar een klasse die een JFrame extend. In jouw geval maakt de main een instantie van z'n eigen klasse aan. Deze methode wordt wel gebruikt, maar eigenlijk alleen bij Factory's, als ik het goed heb. Ik zou je dan ook willen adviseren de main uit deze class te halen (of het JFrame/GUI gedeelte uit deze class)
3) Geef je methodes
altijd een accessmodifier (public/private ed.). Nu geef je je constructor de 'friendly' modifier, wat betekend dat alleen classes binnen de package hem kunnen accessen. Dat is meestal geen goede keuze
Let er wel op dat je niet teveel public gaat maken. Hou de methodes die andere classes kunnen aanspreken zo sober mogelijk qua aantal. Des te meer er zijn, des te meer gekloot er kan worden met je object, des te meer er fout kan gaan. Wees dus streng voor jezelf!
Dit is niet het probleem waar ik mee kamp waar het
soort probleem waarmee ik mee kamp. In meerdere situaties wil ik graag gewoon onderling tussen 2 classes kunnen communiceren. Hoe kan ik dat doen?
Ik hoop dat de kennis der mede-tweaker mij kan helpen...

3 opties. Stel class 1 wil met class 2 communicieren.
1) Je kan een wrapperclass maken. Deze class kan objecten van zowel class 1 als 2 bevatten en de communicatie tussen deze twee regelen door de methodes die ze aanbieden.
2) Class 1 bevat een verwijzing naar een object van class 2. Deze verwijzing kan dan via de constructor van class 1 meegegeven worden. Hierdoor kan class 1 naar hartelust de methodes van class 2 aanspreken met zijn klassevariabeles als parameters.
3) Class 2 kan een innerclass zijn van class 1.
Methode 1 gebruik ik soms als 1 en 2 weinig met elkaar te maken hebben. Stel class 1 is een Mens en class 2 is een Stoeptegel. Een mens kan eens communicatie hebben met de stoeptegel (hey! ik sta op je!

) maar het is niet echt een onderdeel van de class mens.
Mehode 2 gebruik ik veel vaker. Je geeft gewoon via de constructor of settermethode gewoon aan de mens klasse.
Methode 3 is echt een beetje cryptisch. De innerclass (een klasse binnen een klasse) kan wel bij final variabelen van de outerclass (de class waar de innerclass in zit) maar niet andersom. Verder ziet het er vaak ook nogal cryptisch uit binnen een class. Echter voor het definieren van actionListners ed. is het echt superhandig!
Ik wens je veel plezier!