Tugas 2 Exercise 8.1 - 8.6 Kelas PBO C

Selain itu, kami diberi tugas dari Buku Deitel Latihan 8.1 - 8.6 agar kami lebih memahami lebih dalam tentang bagaimana cara membuat class, mengontrol akses kepada member dari sebuah class, membuat constructor,  dan lain-lain.


Time Class Case Study

Source Code Time1 :
/**
 * Time1 class declaration maintains the time in 24-hour format
 *
 * @author Aimar Wibowo
 * @version 10 Oktober 2020
 */

public class Time1 {
   private int hour; 
   private int minute; 
   private int second; 
   
   // set a new time value using universal time
   // throw an exception if the hour, minute, or second is invalid
   
   public void setTime (int h, int m, int s) {
       // validate hour, minute, and second
       if((h >= 0 && h < 24) && (m >= 0 && m < 60) && (s >= 0 && s < 60)) {
           hour = h;
           minute = m;
           second = s;
       }
        
       else {
           throw new IllegalArgumentException("hour, minute, and/or second was out of range");
        } // end method setTime   
    }
    
    //convert to String in universal-time-format (HH:MM:SS)
    public String toUniversalString() {
        return String.format("%02d:%02d:%02d", hour, minute, second);
    } // end method toUniversalString
    
    //convert to String in standard-time-format(H:MM:SS AM or PM)
    public String toString() {
        return String.format("%d:%02d:%02d %s", ((hour == 0 || hour == 12) ? 12 : hour % 12), 
        minute, second, (hour < 12 ? "AM" : "PM"));
    } // end method toString
} // end class Time1

Source Code Time1Test :

/**
 * Time1 object used in an application
 *
 * @author Aimar Wibowo
 * @version 10 Oktober 2020
 */

public class Time1Test
{
   public static void main(String[] args) {
       // create and initialize a Time1 object
       Time1 time = new Time1();
       
       // output string representation of the time 
       System.out.print("The initial universal time is: ");
       System.out.println(time.toUniversalString());
       System.out.print("The initial standard time is: ");
       System.out.println(time.toString());
       System.out.println(); // output a blank line
       
       // change time and output updated time
       time.setTime(13, 27, 6);
       System.out.print("Universal time after setTime is: ");
       System.out.println(time.toUniversalString());
       System.out.print("Standard time after setTime is: ");
       System.out.println(time.toString());
       System.out.println(); //output a blank line
       
       // attempt to set time with invalid values
       try {
           time.setTime(99, 99, 99); // all values out of range
        } // end try
        
       catch(IllegalArgumentException e) {
           System.out.printf("Exception: %s\n\n", e.getMessage());
        } // end catch
        
       // display time after attempt to set invalid values
       System.out.println("After attempting invalid settings: ");
       System.out.print("Universal time: ");
       System.out.println(time.toUniversalString());
       System.out.print("Standard time: ");
       System.out.println(time.toString());
    } // end main
} // end class Time1Test

Output Time1Test :













Controlling Access to Members

Source Code MemberAccessTest :

/**
 * Private members of class Time1 are not accessible
 *
 * @author Aimar Wibowo
 * @version 10 Oktober 2020
 */

public class MemberAccessTest {
   public static void main(String[] args) {
       Time1 time = new Time1(); // create and initialize Time1 object
       
       time.hour = 7; // error: hour has private access in Time1
       time.minute = 15; // error : minute has private access in Time1
       time.second = 30; // error : second has private access in Time1
    } // end main
} // end class MemberAccessTest

Ketika di compile akan menghasilkan error :













Referring to The Current Object's Members with The This Refference

Source Code ThisTest :

/**
 * this used implicitly and explicitly to refer to members of an object
 *
 * @author Aimar Wibowo
 * @version 10 Oktober 2020
 */

public class ThisTest {
    public static void main(String[] args) {
        SimpleTime time = new SimpleTime(15, 30, 19);
        System.out.println(time.buildString());
    }
}

class SimpleTime {
    private int hour; // 0-23
    private int minute; // 0-59
    private int second; // 0-59
    
    // if the constructor uses parameter names identical to
    // instance variable names the "this" reference is
    // required to distinguished between the names
    
    public SimpleTime(int hour, int minute, int second) {
        this.hour = hour; // set "this" object's hour
        this.minute = minute; // set "this" object's minute
        this.second = second; // set "this" object's second
    } // end SimpleTime constructor
    
    // use explicit and implicit "this" to call toUniversalString
    public String buildString() {
        return String.format("%24s: %s\n%24s: %s", "this.toUniversalString()", this.toUniversalString(), 
        "toUniversalString()", toUniversalString());
    } // end method buildString
    
    //convert to String in universal-time-format (HH:MM:SS)
    public String toUniversalString() {
        // "this" is not required have to access instance variables
        // because method does not have local variables with
        // same name as instance variables
        return String.format("%02d:%02d:%02d", this.hour, this.minute, this.second);
    } // end method toUniversalStrig
}

Output ThisTest :













Overloaded Constructor

Source Code Time2:
/**
 * Time2 class declaration with overloaded constructors
 *
 * @author Aimar Wibowo
 * @version 10 Oktober 2020
 */

public class Time2 {
    private int hour; // 0-23
    private int minute; // 0-59
    private int second; // 0-59
    
    // Time2 no-argument constructor:
    // initializes each instance variable to zero
    public Time2() {
        this(0, 0, 0); // invoke Time2 constructor with three arguments
    } // end Time2 no-argument constructor
    
    // Time2 constructor: hour supplied, minute and second defaulted to 0
    public Time2(int h) {
        this(h, 0, 0); // invoke Time2 constructor with three arguments
    } // end Time2 one-argument constructor
    
    // Time2 constructor : hour and minute supplied, second defaulted to 0
    public Time2(int h, int m) {
        this(h, m, 0); // invoke Time2 constructor with three arguments
    } // end Time2 two-argument constructor
    
    // Time2 constructor : hour, minute, and second supplied
    public Time2(int h, int m, int s) {
        setTime(h, m, s); // invoke setTime to validate time
    } // end Time2 three-argument constructor
    
    public Time2(Time2 time) {
        // Invoke Time2 three-argument constructor
        this(time.getHour(), time.getMinute(), time.getSecond());
    } // end Time2 constructor with a Time2 object argument
    
    // set Methods
    // set a new time value using universal time
    // validate the data
    public void setTime(int h, int m, int s) {
        setHour(h); // set the hour
        setMinute(m); // set the minute
        setSecond(s); // set the second
    } // end method setTime
    
    // validate and set hour
    public void setHour(int h) {
        if(h >= 0 && h < 24) {
            hour = h;
        } else {
            throw new IllegalArgumentException("hour must be 0-23");
        }
    }
    
    // validate and set minute
    public void setMinute(int m) {
        if(m >= 0 && m < 60) {
            minute = m;
        } else {
            throw new IllegalArgumentException ("minute must be 0-59");
        }
    }
    
    // validate and set second
    public void setSecond(int s) {
        if(s >= 0 && s < 60) {
            second = s;
        } else {
            throw new IllegalArgumentException ("second must be 0-59");
        }
    }
    
    // Get Methods
    // get hour value
    public int getHour() {
        return hour;
    } // end method getHour
    
    // get minute value
    public int getMinute() {
        return minute;
    } // end method getMinute
    
    // get second value
    public int getSecond() {
        return second;
    } // end method getSecond
    
    // convert to String in universal-time format (HH:MM:SS)
    public String toUniversalString() {
        return String.format("%02d:%02d:%02d", getHour(), getMinute(), getSecond());
    } // end method toUniversalString
    
    // convert to String in standard-time format (H:MM:SS AM or PM)
    public String toString() {
        return String.format("%d:%02d:%02d %s", ((getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12),
        getMinute(), getSecond(), (getHour() < 12 ? "AM" : "PM"));
    } // end method toString
     
 } // end class Time2

Source Code Time2Test :

/**
 * Overloaded constructors used to initialize Time2 objects
 *
 * @author Aimar Wibowo
 * @version 10 Oktober 2020
 */

public class Time2Test {
    public static void main(String[] args) {
        Time2 t1 = new Time2(); // 00:00:00
        Time2 t2 = new Time2(2); // 02:00:00
        Time2 t3 = new Time2(21, 34); // 21:34:00
        Time2 t4 = new Time2(12, 25, 42); // 12:25:42
        Time2 t5 = new Time2(t4); // 12:25:42
        
        System.out.println("Constructed with:");
        System.out.println("t1: all arguments defaulted");
        System.out.printf(" %s\n", t1.toUniversalString());
        System.out.printf(" %s\n", t1.toString());
        
        System.out.println("t2: hour specified: minute and second defaulted");
        System.out.printf(" %s\n", t2.toUniversalString());
        System.out.printf(" %s\n", t2.toString());
        
        System.out.println("t3: hour and minute specified: second defaulted");
        System.out.printf(" %s\n", t3.toUniversalString());
        System.out.printf(" %s\n", t3.toString());
        
        System.out.println("t4: hour, minute, and second specified");
        System.out.printf(" %s\n", t4.toUniversalString());
        System.out.printf(" %s\n", t4.toString());
        
        System.out.println("t5: Time2 objecct t4 specified");
        System.out.printf(" %s\n", t5.toUniversalString());
        System.out.printf(" %s\n", t5.toString());
        
        // attempt to initialize t6 with invalid values
        try {
            Time2 t6 = new Time2(27, 74, 99); // invalid values
        } // end try
        
        catch(IllegalArgumentException e) {
            System.out.printf("\nException while initializing t6: %s\n", e.getMessage());
        } // end catch
    } // end class Time2Test
    
    
}

Output Time2Test :



Komentar

Postingan populer dari blog ini

Tugas 6 World of Zuul Kelas PBO C

Tugas 2 Biodata Kelas PBO C