/**
 *
 * Final Exam Review Problem 4.
 * Bike class.
 *
 * There are three private data members.
 * color, which is a Color 
 * price, which is a double 
 * hasGears, which is a boolean 
 * There is one constructor: 
 * A 3-parameter constructor that uses the 3 parameters to initialize the 3 data members. 
 * Write a getColor method, a setColor method, a getPrice method, and a setPrice method.

 * Write a toString method that (as usual) returns a String describing the bike in terms of the data members. The description must label the values returned. For example it might return
 *     Color=java.awt.Color[r=255,g=0,b=0] price=150.99 hasGears=true
 * instead of
 *     java.awt.Color[r=255,g=0,b=0] 150.99 true
 */
 
import java.awt.*;

public class Bike {
    private Boolean hasGears;
    private Double price;
    private Color color;

    public Bike( Boolean h, Double p, Color c) {
       
        hasGears = h;
        setPrice(p);
        color = c;
        
    } // end of constructor
    
    public Double getPrice() {
        return price;
    } // end of getPrice()
    
    public void setPrice(Double p) {
        if (p < 0) {
            p = 0;
        }
        if (p > 1000) {
            p = 1000;
        }
        price = p;
    } // end of setPrice()
    
    public Color getColor() {
        return color;
    } // end of getColor()
    
    public void setColor(Color c) {
        color = c;
    } // end of setColor()
    
    public String toString() {
        String temp;
        temp = "Color = " + color ;
        temp = temp + ", hasGears = " + hasGears +  ", price: " + price;
        return temp;
    } // end of toString()
    
} // end of class Bike


/**
* This class tests some methods of the Bike class for problem 4.
* It also contains the methods for problems 5a, b, c.
*/
import java.awt.*;
import javax.swing.*;

public class MUPanel extends JPanel {
  
    private Bike mine, hers;
   
    public MUPanel() {

        setBackground( Color.WHITE );
        setPreferredSize( new Dimension( 600, 400) );
        
        //These lines of code "test" the Bike class definition
        mine = new Bike(true, 79.95, Color.GREEN);
        hers = new Bike( false, 99.99, Color.RED );
        
        System.out.println( hers.getColor() );
        hers.setColor( Color.BLUE );
        System.out.println( hers.getColor() );
        
        System.out.println( hers.getPrice() );
        hers.setPrice( 555.07 );
        System.out.println( hers.getPrice() );
        
        System.out.println( mine.toString() );
        System.out.println( hers.toString() );
		
    } // end of constructor
    
/////// problems 5, a, b, c
// Writing Methods. For each of the following write the header (and body) for the method. 
//    
// getSmallest method that has two integer parameters and returns the smallest of the two parameter values.
//
// isLarge method that has one integer parameter and returns true if the value of the parameter is greater than 500, and otherwise returns false.
//
// add100 method that has no parameters and returns nothing. This method assumes we are in a class that has a private data member called size, and this method adds 100 to the current value of size.

    public Integer getSmallest( Integer firstNum, Integer secondNum ) {
        if ( firstNum < secondNum ) {
            return firstNum;
        }
        else {
            return secondNum;
        }
    } // end of getSmallest()
    
	
    public Boolean isLarge( Integer num ) {
        if (num > 500) {
            return true;
        }
		else {
            return false;
        }
    } // end of isLarge()
    
	
    Integer size = 27;
    public void add100() {
        size = size + 100;
    } // end of add100() 
    
	
} // end of class MUPanel