truyen tham so

Màu nền
Font chữ
Font size
Chiều cao dòng

cau 2.Cơ chế truyền tham số trong Java:

- Truyền tham số theo giá trị.

- Dữ liệu tham trị là các kiểu dữ liệu nguyên thủy.

- Dữ liệu tham chiếu là tên đối tượng, tên mảng.

- Nếu trong phương thức thay đổi dữ liệu tham trị thì sau khi phương thức kết thúc, dữ liệu không giữ được thay đổi, còn nếu thay đổi nội dung mà dữ liệu tham chiếu trỏ đến thì vẫn giữ được thay đổi khi kết thúc phương thức.

=> Lí do: Khi truyền đối tượng vào phương thức, bản thân tham chiếu đối tượng sẽ được sao chép để sử dụng trong thân phương thức. Bản sao chép này trỏ tới cùng một nội dung đối tượng với tham chiếu đối tượng, do vậy khi ta có thể truy cập đội dung của đối tượng thông qua bản sao chép tham chiếu đối tượng và thay đổi nó.

cau 3.cho; MyDate:-hours: byte  ;-seconds: byte

                                   -minutes: byte  ; +HOUR=1: byte

+MINUTE=2: byte   ;  +SECOND=3: byte

+MyDate(byte,byte,byte)

+set(byte,byte)

+get(byte): byte

+calculate():long

Câu 3: Cho lớp MyDate được mô tả như hình bên.

a. Viết lớp ngoại lệ InvalidTime phục vụ cho việc bắt và xử lí lỗi của các phương thức trong MyDate

b. Viết mã nguồn cho lớp MyDate với các mô tả sau:

 + Phương thức set(byte value, byte field) thiết lập giá trị value cho hours nếu field == HOUR, minutes nếu field == MINUTE, seconds nếu field == SECOND. Chú ý là chỉ thiết lập cho hours nếu 0<= value <=23, cho minutes và seconds nếu 0<=value<=59, nếu không thỏa mãn điều kiện thì ném ra một ngoại lệ InvalidTime.

+ Phương thức get(byte field) trả về giá trị thuộc tính hours nếu field==HOUR, minutes nếu field==MINUTE, seconds nếu field==SECOND.

+ Phương thức calculate tính toán số giây từ thời điểm 00h:00m:00s cho đến thời điểm mà hours, minutes, seconds đại diện.

c. Viết mã nguồn cho lớp Test kiểm tra sự hoạt động của các lớp trên.

giai

public class InvalidTime extends Exception{

            private string info;

            public static final byte HOUR = 1;

            public static final byte MINUTE = 2;

            public static final byte SECOND = 3;

            public InvalidTime(byte type){

                        if(type == HOUR) info = "Invalid hour.";

                        else if(type == MINUTE) info = "Invalid minute.";

                        else if(type == SECOND) info = "Invalid second.";

                        else info = "undentified error.";

            }

            public string ToString(){

                        return info;

            }

            public string GetMessage(){

                        return info;

            }

}

public class MyDate{

            private byte hours;

            private byte minutes;

            private byte seconds;

            private static final byte HOUR = 1;

            private static final byte MINUTE = 2;

            private static final byte SECOND = 3;

            public MyDate(byte hour, byte minute, byte second) throws InvalidTime{

                        set(hour,HOUR);

                        set(minute,MINUTE);

                        set(second,SECOND);

            }

            public void set(byte value, byte field) throws InvalidTime{

                        if(field == HOUR){               

                                    if(0<=value<=23) hours = value;

                                    else throw new InvalidTime(InvalidTime.HOUR);

                        }

                        if(field == MINUTE){                       

                                    if(0<=value<=59) minutes = value;

                                    else throw new InvalidTime(InvalidTime.MINUTE);

                        }

                        if(field == SECOND){                      

                                    if(0<=value<=59) seconds = value;

                                    else throw new InvalidTime(InvalidTime.SECOND);

                        }

            }

            public void get(byte field){

                        if(field == HOUR) return hours;

                        if(field == MINUTE) return minutes;

                        if(field == SECOND) return seconds;

            }

            public long calculate(){

                        return(hours*60*60 + minutes*60 + seconds);

            }

}

public class Test{

            public static void main(String[] args){

                        try{

                                    MyDate date = new MyDate((byte)25,(byte)0,(byte)0);

                        }

                        catch(InvalidTime e){

                                    System.out.println(e.ToString());

                        }

                        try{

                                    MyDate date = new MyDate((byte)1,(byte)10,(byte)5);

                                    System.out.println(date.calculate());

                        }

                        catch(InvalidTime e){

                                    System.out.println(e.GetMessage());

                        }

            }

}

Bạn đang đọc truyện trên: Truyen2U.Pro

#hưng