<< Chapter < Page Chapter >> Page >

18: Time::Time()

19: {

20: Hour = Minute = Second = 0;

21: }

22:

23: //Thiết lập một giá trị Time mới sử dụng giờ quânđội

24: //Thực hiện việc kiểm tra tính hợp lệ trên các giá trị dữ liệu

25: //Thiết lập các giá trị không hợp lệ thành zero

26: void Time::SetTime(int H, int M, int S)

27: {

28:    Hour = (H>= 0&&H<24) ? H : 0;

29:    Minute = (M>= 0&&M<60) ? M : 0;

30:    Second = (S>= 0&&S<60) ? S : 0;

31: }

32:

33: //In thời gian dưới dạng giờ quân đội

34: void Time::PrintMilitary()

35: {

36:    cout<<(Hour<10 ? "0" : "")<<Hour<<":"

37:        <<(Minute<10 ? "0" : "")<<Minute<<":"

38:        <<(Second<10 ? "0" : "")<<Second;

39: }

40:

41: //In thời gian dưới dạng chuẩn

42: void Time::PrintStandard()

43: {

44:    cout<<((Hour == 0 || Hour == 12) ? 12 : Hour % 12)

44:        <<":"<<(Minute<10 ? "0" : "")<<Minute

45:        <<":"<<(Second<10 ? "0" : "")<<Second

46:        <<(Hour<12 ? " AM" : " PM");

48: }

49:

50: int main()

51: {

52:    Time T; //Đối tượng T của lớp Time

53:

54:    cout<<"The initial military time is ";

55:    T.PrintMilitary();

56:    cout<<endl<<"The initial standard time is ";

57:    T.PrintStandard();

58:

59:    T.SetTime(13, 27, 6);

60:    cout<<endl<<endl<<"Military time after SetTime is ";

61:    T.PrintMilitary();

62:    cout<<endl<<"Standard time after SetTime is ";

63:    T.PrintStandard();

64:

65:    T.SetTime(99, 99, 99); //Thử thiết lập giá trị không hợp lệ

66:    cout<<endl<<endl<<"After attempting invalid settings:"

67:         <<endl<<"Military time: ";

68:    T.PrintMilitary();

69:    cout<<endl<<"Standard time: ";

70:    T.PrintStandard();

71:    cout<<endl;

72:    return 0;

73: }

Chúng ta chạy ví dụ 3.2 , kết quả ở hình 3.2

Hình 3.2: Kết quả của ví dụ 3.2

Trong ví dụ 3.2, chương trình thuyết minh một đối tượng của lớp Time gọi là T (dòng 52). Khi đó constructor của lớp Time tự động gọi và rõ ràng khởi tạo mỗi thành viên dữ liệu private là zero. Sau đó thời gian được in dưới dạng giờ quân đội và dạng chuẩn để xác nhận các thành viên này được khởi tạo thích hợp (dòng 54 đến 57). Kế tới thời gian được thiết lập bằng cách sử dụng hàm thành viên SetTime() (dòng 59) và thời gian lại được in ở hai dạng (dòng 60 đến 63). Cuối cùng hàm thành viên SetTime() (dòng 65) thử thiết lập các thành viên dữ liệu với các giá trị không hợp lệ, và thời gian lại được in ở hai dạng (dòng 66 đến 70).

Chúng ta nhận thấy rằng, tất cả các thành viên dữ liệu của một lớp không thể khởi tạo tại nơi mà chúng được khai báo trong thân lớp. Các thành viên dữ liệu này phải được khởi tạo bởi constructor của lớp hay chúng có thể gán giá trị bởi các hàm thiết lập.

Khi một lớp được định nghĩa và các hàm thành viên của nó được khai báo, các hàm thành viên này phải được định nghĩa. Mỗi hàm thành viên của lớp có thể được định nghĩa trực tiếp trong thân lớp (hiển nhiên bao gồm prototype hàm của lớp), hoặc hàm thành viên có thể được định nghĩa sau thân lớp. Khi một hàm thành viên được định nghĩa sau định nghĩa lớp tương ứng, tên hàm được đặt trước bởi tên lớp và toán tử định phạm vi (::). Chẳng hạn như ở ví dụ 3.2 gồm các dòng 18, 26, 34 và 42. Bởi vì các lớp khác nhau có thể có các tên thành viên giống nhau, toán tử định phạm vi "ràng buộc" tên thành viên tới tên lớp để nhận dạng các hàm thành viên của một lớp.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Lập trình hướng đối tượng. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10794/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Lập trình hướng đối tượng' conversation and receive update notifications?

Ask