hoe maak ik een klasse Kaars?

Status
Niet open voor verdere reacties.

romanosan

Gebruiker
Lid geworden
7 okt 2007
Berichten
88
B. Kaars
Maak een applicatie waarmee je een kaars tekent.
• De applicatie bevat een tekstvak en een brand-knop, waarmee je de kaars kan laten opbranden. De kaars wordt dan telkens zo veel pixel korter
als in het tekstvak is opgeven.
Let op: Een kaars wordt korter op de plek waar de vlam brandt, niet aan de onderkant. De kaars blijft als het ware "op de tafel staan".
• Voeg tenslotte ook een reset-knop toe.
Dit is me gelukt

Maak de kaars uit opgave B opnieuw, maar nu volgens het Model-View-Controler principe met aparte klassen voor de Kaars en het KaarsPaneel.
De klasse Kaars
• heeft een attribuut:
o private int lengte
• krijgt een methoden
o public void brand( int aantalPixels )
o public void reset()
o public int getLengte()
Maak een applicatie waarin vier kaarsen naast elkaar staan.
Dit gedeelte lukt me niet. Kan iemand mij aub helpen?
 
Laat je code eens zien wat je al geprobeert hebt :)

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Paneel extends JPanel {
	private JButton knopBrand, knopReset;
	private int getal = 0;
	private JTextField vakje;

	public Paneel() {
		setBackground(Color.LIGHT_GRAY);

		knopBrand = new JButton("brand");
		knopBrand.addActionListener(new KnopHandler1());

		knopReset = new JButton("reset");
		knopReset.addActionListener(new KnopHandler2());

		vakje = new JTextField("10", 4);

		add(vakje);
		add(knopBrand);
		add(knopReset);
	}

	public void paintComponent(final Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.RED);
		g.fillOval(70, 60 + getal, 30, 50);

		// Kaars
		g.setColor(Color.WHITE);
		g.fillRect(65, 110 + getal, 40, 150 - getal);
	}

	// Hier gebeurt de afhandeling van de knoppen
	class KnopHandler1 implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String invoer = vakje.getText();
			getal += Integer.parseInt(invoer);
			repaint();
		}
	}

	class KnopHandler2 implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			getal = 0;
			repaint();
		}
	}

}

Code:
//Opstartklasse 
import javax.swing.JFrame;

   
public class OpstartKlasse extends JFrame {
  public static void main( String args[] ) {
    JFrame frame = new JFrame();
    frame.setSize( 200, 300 );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setTitle( "Kaars B " );
    frame.setContentPane( new Paneel() );
    frame.setVisible( true );
  }
}

Code:
public class Kaars {

//wat moet hierin??	
}
 
Wat heb je al?
Soms wil het in de kleine dingen zitten waar het net fout gaat :)
 
Wat heb je al?
Soms wil het in de kleine dingen zitten waar het net fout gaat :)

Voor ik reageerde wilde ik die webpagina en het hoofstuk aangaande deze opdracht nog lezen.

Wat ik tot nu toe heb is dit. Ik snap het principe niet. Is dit objectgeorienteerd programmeren?
Wat is het voordeel hiervan? Ik denk dat als ik dat snap, dat de logica erachter me misschien wat duidelijker wordt.

Code:
public class Kaars {

	private int lengte; // Attributen

	// getters
	public int getLengte() {
		
		return lengte;
	}
	
	public void brand(){
		
	}
	
	public void reset(){
		
	}
	
	//setters
	
	public...(){
		
	}
}
 
Gaat de goede kant op :)

Code:
public class Kaars {

	private int _lengte; // Attributen
        //voor privatevariabelen zet ik over het algemeen een _ dan kom je ook niet in de knoop als je in een contructor een parameter meegeeft welke tijdens het aanmaken van de class ge-set moet worden
        
        //Constructor (deze zet ik meestal meteen na de attributen)
	public Kaars(int lengte){
		_lengte = length;
	}

	// getters
	public int getLengte() {
		return _lengte;
	}
	
	public void brand(int pixels){
		//hier nog een brandmethode
	}
	
	public void reset(){
		//hier de lengte terugzetten naar het origineel
	}
	
	//setters
	

}

Setters heb je zoals ik de opdracht zie niet nodig
 
Gaat de goede kant op :)

Code:
public class Kaars {

	private int _lengte; // Attributen
        //voor privatevariabelen zet ik over het algemeen een _ dan kom je ook niet in de knoop als je in een contructor een parameter meegeeft welke tijdens het aanmaken van de class ge-set moet worden
        
        //Constructor (deze zet ik meestal meteen na de attributen)
	public Kaars(int lengte){
		_lengte = length;
	}

	// getters
	public int getLengte() {
		return _lengte;
	}
	
	public void brand(int pixels){
		//hier nog een brandmethode
	}
	
	public void reset(){
		//hier de lengte terugzetten naar het origineel
	}
	
	//setters
	

}

Setters heb je zoals ik de opdracht zie niet nodig

g.setColor(Color.RED);
g.fillOval(70, 60 + getal, 30, 50);

// Kaars
g.setColor(Color.WHITE);
g.fillRect(65, 110 + getal, 40, 150 - getal);

Is het de bedoeling dat ik dat precies zo in mijn klasse schrijf ( dus hierin) of moet ik een methodenaam schrijven en dan verwijzen naar die functies in het paneel?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan