Tugas 8.1-8.6
Time Class Case Study
berikut adalah source code nya
dan berikut adalah outputnya
berikut adalah cara meng-overload constructors adalah dengan memberi beberapa deklarasi constructor dengan signature berbeda.
Berikut adalah penggunaan overloaded constructors dari class Time2. Baris 3 memanggil no-argument constructor. Baris 4 memanggil single-argument constructor. Baris 5 memanggil two-argument constructor. Baris 6 memanggil three-argument constructor. Baris 7 memanggil single-argument constructor yang mengambil baris 28-30 pada Time2. Pengaplikasiannya menunjukkan representasi String dari masing - masing objek Time2 untuk mengonfirmasi bahwa objek terinisialisasi dengan tepat. Baris 32 mencoba untuk menginisialisasi t6 dengan membuat objek Time2 baru dan diberi tiga value invalid.
dan berikut adalah outputnya
setiap class haruslah memiliki paling tidak satu constructors. jika kita tidak mendeklarasikan class, compiler akan membuat default constructor yang tidak dapat mengambil argument apapun saat dipanggil, dan akan menginisialisasi variabel ke defaultl value.
terdapat dua Class yaitu Time1 dan Time1Test.
berikut adalah source code dari Time1
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){
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");
}
}
// convert to String in universal-time format (HH:MM:SS)
public String toUniversalString(){
return String.format("%02d:%02d:%02d", hour, minute, second);
}
// 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 == 1) ? 12 : hour % 12), minute, second, (hour < 12 ? "AM" : "PM"));
}
}
Dan berikut adalah Source code dari Time1Testpublic class Time1Test
{
public static void main(String[] args){
// create and initialize a Time1 object
Time1 time = new Time1(); // invokes Time1 constructor
// output string representations 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();
// 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();
// attempt to set time with invalid values
try{
time.setTime(99,99,99);
}
catch(IllegalArgumentException e){
System.out.printf("Exception: %s\n\n", e.getMessage());
}
// 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());
}
}
Dan berikut adalah outputnya Controling Access to Member
berikut adalah source code nya
public class MemberAccessTest
{
public static void main(String[] args)
{
Time1 time = new Time1(); // create and initialize Time1 object
time.hour = 7;
time.minute = 15;
time.second = 30;
}
}
namun akan error saat dicompile akan menjadi seperti iniReferring to the Current Object's Members with the this Reference
setiap objek dapat mengakses reference ke objek itu sendiri dengan this.
berikut adalah contoh source code nya
public class ThisTest
{
public static void main(String[] args){
SimpleTime time = new SimpleTime( 15, 30, 19 );
System.out.println(time.buildString());
}
}
//class SimpleTime demonstrates the "this" reference
class SimpleTime{
private int hour;
private int minute;
private int second;
// if the constructor uses parameter names identical to
// instance variable names the "this" reference is
// required to distinguish between the names
public SimpleTime(int hour, int minute, int second){
this.hour = hour;
this.minute = minute;
this.second = second;
}
// 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());
}
// convert to String in universal-time format (HH:MM:SS)
public String toUniversalString(){
// "this" is not required here to access instance variables,
// becaues method does not have local variables with same
// names as instance variables
return String.format("%02d:%02d:%02d",this.hour,this.minute,this.second);
}
}
dan berikut adalah outputnya
Time Class Case Study : Overloaded Constructors
berikut adalah cara meng-overload constructors adalah dengan memberi beberapa deklarasi constructor dengan signature berbeda.
public class Time2
{
private int hour;
private int minute;
private int second;
// Time2 no-argument constructor:
// initializes each instance variable to zero
public Time2(){
this( 0, 0, 0 );
}
// Time2 constructor: hour supplied, minute and second defaulted to 0
public Time2(int h){
this( h, 0, 0 );
}
// Time2 constructor: hour and minute supplied, second defaulted to 0
public Time2(int h, int m){
this( h, m, 0 );
}
// Time2 constructor: hour, minute, and second supplied
public Time2(int h, int m, int s){
setTime( h, m, s );
}
// Time2 constructor: another Time2 object supplied
public Time2( Time2 time ){
this( time.getHour(), time.getMinute(), time.getSecond() );
}
// Set methods
// set a new time value using universal time
// validate the data
public void setTime(int h, int m, int s){
setHour(h);
setMinute(m);
setSecond(s);
}
// 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>=0 & s<60)?s:0);
else
throw new IllegalArgumentException("second must be 0-59");
}
// Get methods
// get hour value
public int getHour(){
return hour;
}
// get minute value
public int getMinute(){
return minute;
}
// get second value
public int getSecond(){
return second;
}
// convert to String in universal-time format (HH:MM:SS)
public String toUniversalString(){
return String.format("%02d:%02d:%02d", getHour(), getMinute(), getSecond());
}
// convert to String in standard-time formate (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"));
}
}
Default and No-Argument constructors
Berikut adalah penggunaan overloaded constructors dari class Time2. Baris 3 memanggil no-argument constructor. Baris 4 memanggil single-argument constructor. Baris 5 memanggil two-argument constructor. Baris 6 memanggil three-argument constructor. Baris 7 memanggil single-argument constructor yang mengambil baris 28-30 pada Time2. Pengaplikasiannya menunjukkan representasi String dari masing - masing objek Time2 untuk mengonfirmasi bahwa objek terinisialisasi dengan tepat. Baris 32 mencoba untuk menginisialisasi t6 dengan membuat objek Time2 baru dan diberi tiga value invalid.
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("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 object 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);
}
catch(IllegalArgumentException e){
System.out.printf("\nException while initializing t6: %s\n", e.getMessage());
}
}
}
dan berikut adalah outputnya
setiap class haruslah memiliki paling tidak satu constructors. jika kita tidak mendeklarasikan class, compiler akan membuat default constructor yang tidak dapat mengambil argument apapun saat dipanggil, dan akan menginisialisasi variabel ke defaultl value.
Komentar
Posting Komentar