6 giới thiệu đối tợng (INTRODUCTION TO OBJECTS) Nội dung: Giới thiệu mô-đun Độ gắn kết Nối kết Bao gói liệu Kiểu liệu trừu tợng Thông tin ẩn Đối tợng 67 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn 6.1 Giới thiệu mô-đun (what is a module ?) Định nghĩa [Stevens, Myers, Constantine, 1974] mô-đun: tập hợp hay nhiều câu lệnh đợc đặt tên, phần khác chơng trình kích hoạt với tên đợc đặt, có tập hợp tên biến riêng biệt Mô-đun khối đơn mà lệnh kích hoạt giống nh thủ tục, hàm hay phơng thức Chip Registers ALU Chip Registers Shifter H×nh 6.1 ThiÕt kÕ cđa máy vi tính ALU Shifter Chip Hình 6.2 Máy vi tính Hình 6.1 chế tạo với chip 68 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn 6.2 Độ gắn kết (cohesion) Là mức độ tơng tác bên mô-đun Myers định nghĩa thể loại (mức) gắn kết [Myers, 1978b] G¾n kÕt chøc Gắn kết thông tin Gắn kết truyền thông Gắn kÕt thđ tơc G¾n kÕt thêi gian G¾n kÕt ln lý Gắn kết trùng khớp Hình 6.3 Các mức gắn kết Tốt Xấu Gắn kết trùng khớp (coincidental cohesion): mô-đun thực nhiều hành động không liên quan đến VD: mô-đun với tên nh in dòng tiếp theo, đảo ngợc chuỗi ký tự tham số thứ hai, thêm cho tham sè thø 5, ®ỉi tham sè thø t− thμnh sè thùc 69 Hnh Xu©n HiƯp - CNPM http://www.ebook.edu.vn Gắn kết luận lý (logical cohesion): mô-đun thực chuỗi hành động có liên quan với nhau, số đợc chọn mô-đun gọi đến VD: mô-đun thực việc thêm, xóa, cập nhật mẩu tin tập tin Gắn kết thời gian (temporal cohesion): mô-đun thực chuỗi hành động liên quan với theo thời gian VD: mô-đun với tên nh mở tập tin cị, t¹o tËp tin míi, më tËp tin giao dịch, in tập tin giao dịch, khởi tạo bảng kinh doanh khu vực, đọc mẩu tin giao dịch đầu tiên,đọc mẩu tin tập tin cũ Gắn kết thủ tục (procedural cohesion): mô-đun thực chuỗi hành động liên quan với theo bớc trình tự phát triển sản phẩm VD: mô-đun với tên nh ®äc sè hiƯu bé phËn tõ tËp tin c¬ së liệu v cập nhật, sửa chữa mẩu tin tập tin bảo trì Gắn kết truyền thông (communcational cohesion): mô-đun thực chuỗi hành động liên quan với theo bớc trình tự phát triển sản phẩm nh hành động đợc thực liệu giống VD: mô-đun với tên nh cập nhật mẩu tin sở liệu v ghi vo sổ tính toán quỹ đạo v gửi máy in 70 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn Gắn kết thông tin (information cohesion): mô-đun thực số lợng hành động, hành động có đầu vào riêng, mà lệnh độc lập thực liệu giống VD: Định nghĩa bảng kinh doanh khu vực Vào Vào Vào Khởi tạo bảng kinh doanh khu vùc CËp nhËt b¶ng kinh doanh khu vực In bảng kinh doanh khu vực Thoát Thoát Thoát Hình 6.4 Mô-đun gắn kết thông tin Chức năng: mô-đun thực hành động nhận lấy kết VD: mô-đun với tên nh lấy nhiệt độ lò; tính toán quỹ đạo điện tử; ghi lên đĩa mềm; tính toán tiền hoa hồng 71 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn Ví dụ dạng gắn kết chức tính toán nhiệt độ trung bình hàng ngày nhiều địa điểm khác trùng khớp khởi tạo tổng số mở tập tin chức tạo mẩu tin nhiệt độ chức lu trữ mẩu tin nhiệt độ chức đọc thời gian nhiệt độ địa điểm trùng khớp đóng tập tin in nhiệt độ trung bình chức lu trữ mẩu tin cho địa điểm luận lý chọn lọc thời gian trờng nhiệt độ Hình 6.5 Biểu diễn dạng gắn kết mô-đun 72 Hnh Xu©n HiƯp - CNPM http://www.ebook.edu.vn 6.3 Nèi kÕt (coupling) Là mức độ tơng tác hai mô-đun, quan trọng đánh giá Các mức độ nối kết Nèi kÕt d÷ liƯu Nèi kÕt nh·n hiƯu Nèi kÕt ®iỊu khiĨn Nèi kÕt chung Nối kết nộu dung Hình 6.6 Các mức độ nối kết Tốt Xấu Nối kết nội dung(content coupling): hai mô-đun đợc gọi nối kết nội dung nh chóng cã thĨ tham kh¶o rùc tiÕp néi dung cđa VD: mô-đun p tham khảo liệu cục mô-đun q, mô-đun p thay đổi câu lệnh mô-đun q 73 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn Nối kết chung (common coupling): hai mô-đun đợc gọi nối kết chung hai truy xuất đến liệu toàn cục giống VD: mb ma biến toàn cục Hình 6.7 Nối kết chung Nối kết điều khiển (control coupling): hai mô-đun đợc gọi nối kết điều khiển mô-đun gửi phàn tử điều khiển đến mô-đun (có thể điều khiển lẫn nhau) Nối kết nhÃn hiệu (stamp coupling): hai mô-đun đợc gọi nối kết nhÃn hiệu nh tham số đợc gửi cấu trúc liệu mô-đun đợc gọi thao tác vài thành phần cấu trúc liệu Nối kết liệu (data coupling): hai mô-đun đợc gọi nối kết liệu nh tất tham số mục liệu (homogeneous data items) 74 Hnh Xu©n HiƯp - CNPM http://www.ebook.edu.vn VÝ dơ vÒ nèi kÕt p q r t sè p,t u truy xuất sở liệu cập nhật s u Hình 6.8 Sơ đồ mô-đun nối kết q p Dữ liệu q nhập kiểu máy bay mà hàm số phần số phần xuất cờ trạng thái danh sách phần máy bay danh sách phần máy bay phần chế tạo tên phần Hình 6.9 Mô tả giao diện Hình 6.6 r - r s t t u Chung Chung - - Dữ liệu - Điều khiển s Dữ liệu NhÃn hiệu Dữ liệu NhÃn hiệu Dữ liệu Chung Hình 6.10 Nối kết cặp mô-đun 75 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn 6.4 Bao gói liệu (data encapsulation) Là dạng trừu tợng hóa m_encapsulation Definition of job_queue initialize_job_queue() { } add_job_to_queue(job j) { } remove_job_from_queue(job j) { } H×nh 6.11 ThiÕt kế job_queue phần hệ điều hành sử dụng bao gói liệu 76 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn 6.5 Kiểu liệu trừu tợng (abstract data types) Kiểu liệu trừu tợng: kiểu liệu với thao tác VD: class JobQueue { // d÷ liƯu private int queueLength; private int queue[25] = new int[25]; // c¸c public { } public { } public { } ph−¬ng thøc void initializeJobQueue() void addJobToQueue(int jobNumber) void removeJobfromQueue() } Hình 6.12 JobQueue cài đặt Java nh kiểu liệu trừu tợng Trừu tợng hóa thủ tục (procedural abstraction) Trừu tợng hóa lặp (iteration abstraction) [Liskov Guttag, 1986] 77 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn 6.6 Th«ng tin Èn (information hiding) Do Parnas đề xuất [Parnas, 1971, 1972a, 1972b] Ci đặt chi tiÕt cđa: queue queueLength initializeJobQueue addJobToQueue removeJobFromQueue Giao diƯn: initializeJobQueue addJobToQueue removeJobFromQueue Thông tin ẩn Thông tin thấy đợc Hình 6.13 Kiểu liệu trừu tợng với thông tin ẩn 78 Huỳnh Xuân Hiệp - CNPM http://www.ebook.edu.vn 6.7 Đối tợng (objects) Là kiểu liệu trừu tợng hay mô-đun với thông tin đợc gắn kết Là thể (instance) kiểu liệu trừu tợng Hỗ trợ thừa kế, khái niệm đợc giới thiệu ngôn ngữ lập trình Simula67 [Dahl Nygaard, 1966; Dahl, Myrhaug and Nygaard, 1973] Hỗ trợ đa hình liên kết động Một số vấn đề: gắn kết mô-đun đợc thừa kế mô-đun định nghĩa nối kết chung với định nghĩa công cộng: public Các đối tợng với độ gắn kết cao nối kết thấp Các đối tợng Các kiểu kiệu trừu tợng Bao gói liệu Các mô-đun với độ gắn kết cao nối kết thấp Các mô-đun Hình 6.14 Các khái niệm chÝnh 79 Hnh Xu©n HiƯp - CNPM http://www.ebook.edu.vn ... sách phần máy bay danh sách phần máy bay phần chế tạo tên phần Hình 6. 9 Mô tả giao diện Hình 6. 6 r - r s t t u Chung Chung - - Dữ liệu - Điều khiển s Dữ liệu NhÃn hiệu Dữ liệu NhÃn hiệu Dữ liệu Chung... giới thiệu ngôn ngữ lập trình Simula67 [Dahl Nygaard, 19 66 ; Dahl, Myrhaug and Nygaard, 19 73] Hỗ trợ đa hình liên kết động Một số vấn đề: gắn kết m? ?-? ?un đợc thừa kế m? ?-? ?un định nghĩa nối kết chung.. .6 .1 Giới thiệu m? ?-? ?un (what is a module ?) Định nghĩa [Stevens, Myers, Constantine, 19 74] m? ?-? ?un: tập hợp hay nhiều câu lệnh đợc đặt tên, phần khác chơng trình kích hoạt với