Results (
Vietnamese) 2:
[Copy]Copied!
Giả sử rằng hệ điều hành của một máy tính được gọi là để mở một tập tin. Tập tin có thể được lưu trữ trên một số phương tiện truyền thông khác nhau. Ví dụ, nó có thể là một tập tin trên đĩa, một tập tin băng, hoặc một tập tin đĩa. Sử dụng các mô hình cổ điển, sẽ có ba chức năng khác nhau được đặt tên, open_disk_file, open_tape_file, và open_diskette_file; điều này được thể hiện trong
hình 7.33 (a). Nếu my_file được công bố là một tập tin, sau đó vào lúc chạy, nó là cần thiết để kiểm tra xem nó là một tập tin trên đĩa, một tập tin băng, hoặc một tập tin đĩa để xác định hàm để gọi. Các mã cổ điển tương ứng được thể hiện trong hình 7.34 (a).
Ngược lại, khi các mô hình hướng đối tượng được sử dụng, một lớp có tên tập tin Class được định nghĩa, với ba lớp học xuất phát: Disk file Class, Tape file Class, và Diskette tập tin lớp . Điều này được thể hiện trong hình 7.33 (b); nhớ lại rằng UML mở đầu mũi tên biểu thị thừa kế.
Bây giờ, giả sử rằng phương pháp mở là Defi ned trong parent class file Class và thừa hưởng bởi ba lớp học có nguồn gốc. Thật không may, điều này sẽ không làm việc, bởi vì các hoạt động khác nhau cần phải được thực hiện để mở ba loại khác nhau của fi les.
Giải pháp là như sau. Trong parent class file Class, một phương pháp mở giả được khai báo. Trong Java, như một phương pháp được khai báo là trừu tượng; trong C ++, các từ dành riêng ảo được sử dụng để thay thế. Một thực hiện cụ thể của phương pháp này xuất hiện trong mỗi một trong ba lớp học có nguồn gốc và mỗi phương pháp được đưa ra một cái tên giống nhau, đó là, mở, như thể hiện trong hình 7.33 (b). Một lần nữa, giả sử rằng myfile được công bố là một tập tin. Tại thời điểm chạy, thông điệp
myFile.open ();
Being translated, please wait..
