Selasa, 28 Februari 2017

PBO Classes and Objects (tugas 2)

Classes and Objects 8.1 - 8.6

8.1. Time1 class declaration maintains the time in 24-hour format

/**
 * Time1
 * Monica I H
 * PBO
 */
public class Time1
{
   private int hour;
   private int minute;
   private int second;
   
   public void setTime(int h, int m, int s)
   {
       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 range");
    }
    
    public String toUniversalString()
    {
        return String.format ("%02d:%02d:%02d", hour, minute, second);
    }
    
    public String toString()
    {
        return String.format ("%d:%02d:%02d %s",
        ((hour == 0 || hour == 12) ? 12 : hour % 12),
        minute, second, ( hour<12 ? "AM" : "PM"));
    }
}


8.2. Time1 object used in an application

/**
 * Time1Test
 * Monica I H
 * PBO
 */
public class Time1Test
{
    public static void main(String [] args)
    {
    Time1 time = new Time1();
    
    System.out.print("The initial universal time is: ");
    System.out.println( time.toUniversalString() );
    System.out.print("The initial standart time is: ");
    System.out.println( time.toString ());
    System.out.println();
    
    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();
    
    try
    {
        time.setTime( 99, 99, 99);
    }
    
    catch(IllegalArgumentException e)
    {
        System.out.printf( "Exception: %s\n\n", e.getMessage());
    }
    
    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());
}
}

8.3. Private members of class Time1 are not accessible

/**
 * MemberAccessTest
 * Monica I H
 * PBO
 */
public class MemberAccessTest
{
    public static void main(String[] args)
    {
        Time1 time = new Time1();
        
        time.hour = 7;
        time.minute = 15;
        time.second = 30;
    }
}


8.4. This used implicity and explicity to refer to members of an object

/**
 * ThisTest
 * Monica I H
 * PBO
 */
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;
    private int minute;
    private int second;
    
    public SimpleTime (int hour, int minute, int second)
    {
        this.hour = hour;
        this.minute = minute;
        this.second = second;
    }
    
    public String buildString()
    {
        return String.format("%24s: %s\n%24s: %s",
            "this.toUniversalString()",this.toUniversalString(),
            "toUniversalString()",toUniversalString());
    }
    
    public String toUniversalString()
    {
        return String.format("%02d:%02d:%02d",
            this.hour, this.minute, this.second);
    }
}

8.5. Time2 class with overloaded constructors

/**
 * Time2
 * Monica I H
 * PBO
 */
public class Time2
{
    private int hour;
    private int minute;
    private int second;
    
    public Time2()
    {
        this(0,0,0);
    }
    
    public Time2(int h)
    {
        this(h,0,0);
    }
    
    public Time2(int h, int m)
    {
        this(h,m,0);
    }
    
    public Time2(int h, int m, int s)
    {
        setTime(h,m,s);
    }
    
    public Time2(Time2 time)
    {
        this(time.getHour(), time.getMinute(), time.getSecond());
    }
    
    public void setTime (int h, int m, int s)
    {
        setHour(h);
        setMinute(m);
        setSecond(s);
    }
    
    public void setHour(int h)
    {
        if (h>=0 && h < 24)
            hour = h;
        else
            throw new IllegalArgumentException("hour must be 0-23");
    }
    
    public void setMinute(int m)
    {
        if (m>=0 && m < 60)
            minute = m;
        else
            throw new IllegalArgumentException("minute must be 0-59");
    }
    
    public void setSecond(int s)
    {
        if (s>=0 && s < 60)
            second = (( s>=0 && s <60) ? s : 0);
        else
            throw new IllegalArgumentException("second must be 0-59");
    }
    
    public int getHour()
    {
        return hour;
    }
    
    public int getMinute()
    {
        return minute;
    }
    
    public int getSecond()
    {
        return second;
    }
    
    public String toUniversalString()
    {
        return String.format(
            "%02d:%02d:%02d", getHour(), getMinute(), getSecond());
    }
    
    public String toString()
    {
        return String.format("%d:%02d:%02d %s",
            ((getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12),
            getMinute(), getSecond(), ( getHour() < 12 ? "AM" : "PM"));
    }
}

8.6. Overloaded constructors used to initialize Time2 objects

/**
 * Time2
 * Monica I H
 * PBO
 */
public class Time2Test
{
    public static void main(String[] args)
    {
        Time2 t1 = new Time2();
        Time2 t2 = new Time2(2);
        Time2 t3 = new Time2(21,34);
        Time2 t4 = new Time2(12,25,42);
        Time2 t5 = new Time2(t4); 
        
        System.out.println("Constructed with:");
        System.out.println("tl: 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 object t4 specified");
        System.out.printf(" %s\n", t5.toUniversalString());
        System.out.printf(" %s\n", t5.toString());
        
        try
        {
            Time2 t6 = new Time2(27,74,99);
        }
        
        catch(IllegalArgumentException e)
        {
            System.out.printf("\nException while initializing t6: %s\n",
                e.getMessage());
        }
    }
}

Tidak ada komentar:

Posting Komentar