PBO : Classes and Object ( A Deeper Look )

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

/**
 * Write a description of class Time1 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

// Fig. 8.1: Time1.java
// Time1 class declaration maintains the time in 24-hour format.

public class Time1
{
  public int hour;
  public int minute;
  public 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 of 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" ) );
  }
}
Paste your text here.  


8.2 Time Class Case Study
Fig. 8.2 | Time1 object used in an application.

/**
 * Write a description of class Time1Test here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

// Fig. 8.2: Time1Test.java
// Time1 object used in an application

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 standard 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( "Standart time: ");
        System.out.println( time.toString() );
    }
}

Output :

8.3 Controlling Access to Members
Fig. 8.3 | Private members of class Time1 are not accessible.
/**
 * Write a description of class MemberAccessTest here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

// Fig. 8.3: MemberAccsessTest.java
// Private members of class Time1 are not accessible

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


8.4 Referring to the Current Object’s Members with the this Reference
Fig. 8.4 | this used implicitly and explicitly to refer to members of an object.

/**
 * Write a description of class ThisTest here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

// Fig. 8.4: ThisTest.java
// this used implicitly and explicitly to refer to members of an object.

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

class SimpleTime
{
    public int hour;
    public int  minute;
    public 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 );
    }
}
        
        

Output :


8.5 Time Class Case Study: Overloaded Constructors
Fig. 8.5 | Time2 class with overloaded constructors. 

/**
 * Write a description of class Time2 here.
 *  
 * @author (your name) 
 * @version (a version number or a date)
 */

// Fig. 8.5: Time2.java
// Time2 class declaration with overloaded constructors.

public class Time2
{
    public int hour;
    public int minute;
    public 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
Fig. 8.6 | Overloaded constructors used to initialize Time2 objects. 

/**
 * Write a description of class Time2Test here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

// Fig. 8.6: Time2Test.java
// Overloaded constructors used to initialize Time2 objects.

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", t2.toString() );
       
       System.out.println( " t2: hour spesified; 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 spesified; 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() );
       }
   }
}

output :

Komentar

Postingan Populer