Boolean-field aanpassen van andere class

Status
Niet open voor verdere reacties.

gast0140

Gebruiker
Lid geworden
12 nov 2009
Berichten
83
Hallo,

Ik heb de volgende twee classen die samen een auto op het window moeten gaan zetten.
Ik werk in Java met Eclipse.

De class van de Manager:
Code:
public class Manager{
    public static boolean carFixed;
    
    public static void main(Sting args[]) throws InterruptedException{
        carFixed = false;

        JFrame window = new JFrame("Title");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(windowWidth,windowHeight);
        window.setVisible(true);

        new CarFixer();

        for(;;){
            if(carFixed){
                System.out.println("sell car");
                //draw car on window
            }
        }
    }
}

En de class van de Carfixer:
Code:
public class CarFixer{
    public CarFixer(){
        Manager.carFixed = true;
    }
}

Nu heb ik echter een probleem. De CarFixer kan het boolean-field van de Manager niet aanpassen. De Manager zal op zijn beurt nooit zien dat de auto gerepareerd is en tekent de auto ook niet op het scherm.

Hoe kan ik ervoor zorgen dat mijn CarFixer het boolean-field van de Manager kan aanpassen?

Dankuwel voor het lezen van mijn probleem en hopelijk weet u het antwoord,
gast0140
 
Je kan hier gebruik maken van getters en setters (accessors en mutators). http://java.about.com/od/workingwithobjects/a/accessormutator.htm

Het idee is dat je attributen van een klasse niet zo maar kan benaderen. Om ze te veranderen maak je gebruik van get en set methodes, m.b.v. get methodes kan je de attributen opvragen. Door middel van de set methodes kan je de attributen zetten.

In het geval van jouw probleem.
Code:
//in de manager klasse

public void setCarFixed(boolean fixed) {
   carfixed = fixed;
}


//in de CarFixer klasse moeten we op de een of andere manier weet hebben van de manager, dit kunnen we doen door de manager mee te geven aan de carfixer zijn constructor.
public Carfixer(Manager manager) {

...
}

//nu kunnen we een aanroep in de carfixer klasse doen.
manager.setCarFixed(true);

Ik heb de code uit mijn hoofd getypt er kunnen dus enkele fouten inzitten. Ik hoop dat het idee in ieder geval duidelijk is.

Met vriendelijke groet,
NewbiProgr
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan