Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 116 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
116
Dung lượng
608 KB
Nội dung
CHƯƠNG CÁC KHÁI NIỆM CƠ SỞ CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Chương trình bày vấn đề sau: Thảo luận cách tiếp cận hướng đối tượng, nhược điểm lập trình truyền thống đặc điểm lập trình hướng đối tượng Các khái niệm sở phương pháp hướng đối tượng: • Đối tượng • Lớp • Trừu tượng hóa liệu bao gói thơng tin • Kế thừa • Tương ứng bội • Liên kết động • Truyền thông báo Các bước cần thiết để thiết kế chương trình theo hướng đối tượng Các ưu điểm lập trình hướng đối tượng Các ngơn ngữ hướng đối tượng Một số ứng dụng lập trình hướng đối tượng 1.1 Giới thiệu 1.1.1 Tiếp cận hướng đối tượng Trong giới thực, chung quanh đối tượng, thực thể có mối quan hệ với Ví dụ phịng công ty kinh doanh xem đối tượng Các phịng là: phịng quản lý, phịng bán hàng, phịng kế tốn, phịng tiếp thị, Mỗi phịng ngồi cán đảm nhiệm cơng việc cụ thể, cịn có liệu riêng thông tin nhân viên, doanh số bán hàng, liệu khác có liên quan đến phận Việc phân chia phịng chức công ty tạo điều kiện dễ dàng cho việc quản lý hoạt động Mỗi nhân viên phòng điều khiển xử lý liệu phịng Ví dụ phịng kế tốn phụ trách lương bổng nhân viên công ty Nếu bạn phận tiếp thị cần tìm thơng tin chi tiết lương đơn vị gởi u cầu phịng kế tốn Với cách làm bạn đảm bảo có nhân viên phận kế toán quyền truy cập liệu cung cấp thông tin cho bạn Điều cho thấy rằng, khơng có người thuộc phận khác truy cập thay đổi liệu phận kế toán Khái niệm đối tượng mở rộng lĩnh vực đời sống xã hội - việc tổ chức chương trình Mọi ứng dụng định nghĩa tập thực thể - đối tượng, cho trình tái tạo suy nghĩa gần sát giới thực Trong phần xem xét phương pháp lập trình truyền thống để từ thấy cần chuyển sang phương pháp lập trình hướng đối tượng 1.1.2 Những nhược điểm lập trình hướng thủ tục Cách tiếp cận lập trình truyền thống lập trình hướng thủ tục (LTHTT) Theo cách tiếp cận hệ thống phần mềm xem dãy công việc cần thực đọc liệu, tính tốn, xử lý, lập báo cáo in ấn kết v.v Mỗi công việc thực số hàm định Như trọng tâm cách tiếp cận hàm chức LTHTT sử dụng kỹ thuật phân rã hàm chức theo cách tiếp cận xuống (top-down) để tạo cấu trúc phân cấp Các ngơn ngữ lập trình bậc cao COBOL, FORTRAN, PASCAL, C, v.v , ngơn ngữ lập trình hướng thủ tục Những nhược điểm LTHTT là: Chương trình khó kiểm sốt khó khăn việc bổ sung, nâng cấp chương trình Chương trình xây dựng theo cách TCHTT thực chất danh sách câu lệnh mà theo máy tính cần thực Danh sách lệnh tổ chức thành nhóm theo đơn vị cấu trúc ngơn ngữ lập trình gọi hàm/thủ tục Trong chương trình có nhiều hàm/thủ tục, thường có nhiều thành phần liệu quan trọng khai báo tổng thể (global) để hàm/thủ tục truy nhập, đọc làm thay đổi giá trị biến tổng thể Điều làm cho chương trình khó kiểm sốt, chương trình lớn, phức tạp vấn đề trở nên khó khăn Khi ta muốn thay đổi, bổ sung cấu trúc liệu dùng chung cho số hàm/thủ tục phải thay đổi tất hàm/thủ tục liên quan đến liệu Mơ hình xây dựng theo cách tiếp cận hướng thủ tục không mô tả đầy đủ, trung thực hệ thống thực tế Phương pháp TCHTT đặt trọng tâm vào hàm hướng tới hoạt động không thực tương ứng với thực thể hệ thống giới thực 1.1.3 Lập trình hướng đối tượng Lập trình hướng đối tượng (Object Oriented Programming - LTHĐT) phương pháp lập trình lấy đối tượng làm tảng để xây dựng thuật giải, xây dựng chương trình Đối tượng xây dựng sở gắn cấu trúc liệu với phương thức (các hàm/thủ tục) thể cách mà suy nghĩ, bao quát giới thực LTHĐT cho phép ta kết hợp tri thức bao quát trình với khái niệm trừu tượng sử dụng máy tính Điểm phương pháp LTHĐT thiết kế chương trình xoay quanh liệu hệ thống Nghĩa thao tác xử lý hệ thống gắn liền với liệu có thay đổi cấu trúc liệu ảnh hưởng đến số phương thức xử lý liên quan LTHĐT không cho phép liệu chuyển động tự hệ thống Dữ liệu gắn chặt với phương thức thành vùng riêng mà phương thức tác động lên bảo vệ để cấm việc truy nhập tùy tiện từ bên LTHĐT cho phép phân tích tốn thành tập thực thể gọi đối tượng sau xây dựng liệu với phương thức xung quanh đối tượng Tóm lại LTHĐT có đặc tính chủ yếu sau: Tập trung vào liệu thay cho phương thức Chương trình chia thành lớp đối tượng Các cấu trúc liệu thiết kế cho đặc tả đối tượng Các phương thức xác định vùng liệu đối tượng gắn với cấu trúc liệu Dữ liệu bao bọc, che dấu không cho phép thành phần bên truy nhập tự Các đối tượng trao đổi với thông qua phương thức Dữ liệu phương thức dễ dàng bổ sung vào đối tượng cần thiết Chương trình thiết kế theo cách tiếp cận bottom-up (dưới -lên) 1.2 Các khái niệm lập trình hướng đối tượng Những khái niệm LTHĐT bao gồm: Đối tượng; Lớp; Trừu tượng hóa liệu, bao gói thơng tin; Kế thừa; Tương ứng bội; Liên kết động; Truyền thông báo 1.2.1 Đối tượng Trong giới thực, khái niệm đối tượng hiểu thực thể, người, vật bảng liệu cần xử lý chương trình, Trong LTHĐT đối tượng biến thể lớp 1.2.2 Lớp Lớp khái niệm LTHĐT so với kỹ thuật LTHTT Nó mẫu mơ tả thông tin cấu trúc liệu thao tác hợp lệ phần tử liệu Khi phần tử liệu khai báo phần tử lớp gọi đối tượng Các hàm định nghĩa hợp lệ lớp gọi phương thức (method) chúng hàm xử lý liệu đối tượng lớp Mỗi đối tượng có riêng cho phần tử liệu lớp Mỗi lớp bao gồm: danh sách thuộc tính (attribute) danh sách phương thức để xử lý thuộc tính Cơng thức phản ánh chất kỹ thuật LTHĐT là: Đối tượng = Dữ liệu + Phương thức Chẳng hạn, xét lớp HINH_CN bao gồm thuộc tính: (x1,y1) toạ độ góc bên trái, d,r chiều dài chiều rộng HCN Các phương thức nhập số liệu cho HCN, hàm tính diện tích, chu vi hàm hiển thị Lớp HINH_CN mơ tả sau: HINH_CN Thuộc tính : x1,y1 d,r Phương thức : Nhập_sl Diện tích Chu vi Hiển thị Hình 2.2 Mơ tả lớp HINH_CN Chú ý: Trong LTHĐT lớp khái niệm tĩnh, nhận biết từ văn chương trình, ngược lại đối tượng khái niệm động, xác định nhớ máy tính, nơi đối tượng chiếm vùng nhớ lúc thực chương trình Đối tượng tạo để xử lý thông tin, thực nhiệm vụ thiết kế, sau bị hủy bỏ đối tượng hết vai trị 1.2.3 Trừu tượng hóa liệu bao gói thơng tin Trừu tượng hóa cách biểu diễn đặc tính bỏ qua chi tiết vụn vặt giải thích Khi xây dựng lớp, ta phải sử dụng khái niệm trừu tượng hóa Ví dụ ta định nghĩa lớp để mơ tả đối tượng khơng gian hình học bao gồm thuộc tính trừu tượng kích thước, hình dáng, màu sắc phương thức xác định thuộc tính Việc đóng gói liệu phương thức vào đơn vị cấu trúc lớp xem nguyên tắc bao gói thơng tin Dữ liệu tổ chức cho giới bên (các đối tượng lớp khác) không truy nhập vào, mà cho phép phương thức lớp lớp có quan hệ kế thừa với quyền truy nhập Chính phương thức lớp đóng vai trò giao diện liệu đối tượng phần cịn lại chương trình Ngun tắc bao gói liệu để ngăn cấm truy nhập trực tiếp lập trình gọi che giấu thông tin 1.2.4 Kế thừa Kế thừa trình mà đối tượng lớp quyền sử dụng số tính chất đối tượng lớp khác Sự kế thừa cho phép ta định nghĩa lớp sở lớp tồn Lớp này, thành phần kế thừa, có thêm thuộc tính hàm Nguyên lý kế thừa hỗ trợ cho việc tạo cấu trúc phân cấp lớp 1.2.5 Tương ứng bội Tương ứng bội khả khái niệm (chẳng hạn phép tốn) sử dụng với nhiều chức khác Ví dụ, phép + biểu diễn cho phép “cộng” số nguyên (int), số thực (float), số phức (complex) xâu ký tự (string) v.v Hành vi phép toán tương ứng bội phụ thuộc vào kiểu liệu mà sử dụng để xử lý Tương ứng bội đóng vai quan trọng việc tạo đối tượng có cấu trúc bên khác dùng chung giao diện bên (như tên gọi) 1.2.6 Liên kết động Liên kết động dạng liên kết thủ tục hàm chương trình thực lời gọi tới hàm, thủ tục Như liên kết động, nội dung đoạn chương trình ứng với thủ tục, hàm thực lời gọi tới thủ tục, hàm 1.2.7 Truyền thơng báo Các đối tượng gửi nhận thông tin với giống người trao đổi với Chính ngun lý trao đổi thơng tin cách truyền thông báo cho phép ta dễ dàng xây dựng hệ thống mô gần hệ thống giới thực Truyền thông báo cho đối tượng yêu cầu đối tượng thực việc Cách ứng xử đối tượng mô tả bên lớp thông qua phương thức Trong chương trình, thơng báo gửi đến cho đối tượng u cầu thực cơng việc cụ thể, nghĩa sử dụng hàm tương ứng để xử lý liệu khai báo đối tượng Vì vậy, thơng báo phải hàm cần thực đối tượng nhận thông báo Thông báo truyền phải xác định tên đối tượng thơng tin truyền Ví dụ, lớp CONGNHAN đối tượng cụ thể đại diện Hoten nhận thông báo cần tính lương thơng qua hàm TINHLUONG xác định lớp CONGNHAN Thơng báo xử lý sau: CONGNHAN.TINHLUONG (Hoten) Đối tượng Thông báo Thông tin Trong chương trình hướng đối tượng, đối tượng tồn thời gian định Đối tượng tạo khai báo bị hủy bỏ chương trình khỏi miền xác định đối tượng Sự trao đổi thơng tin thực thời gian đối tượng tồn 1.3 Các bước cần thiết để thiết kế chương trình theo hướng đối tượng Chương trình theo hướng đối tượng bao gồm tập đối tượng mối quan hệ đối tượng với Vì vậy, lập trình ngơn ngữ hướng đối tượng bao gồm bước sau: Xác định dạng đối tượng (lớp) tóan Tìm kiếm đặc tính chung (dữ liệu chung) dạng đối tượng này, chúng chia xẻ Xác định lớp sở dựa sở đặc tính chung dạng đối tượng Từ lớp sở, xây dựng lớp dẫn xuất chứa thành phần, đặc tính khơng chung cịn lại dạng đối tượng Ngồi ra, ta cịn đưa lớp có quan hệ với lớp sở lớp dẫn xuất 1.4 Các ưu điểm lập trình hướng đối tượng Cách tiếp cận hướng đối tượng giải nhiều vấn đề tồn trình phát triển phần mềm tạo sản phẩm phần mềm có chất lượng cao Những ưu điểm LTHĐT là: Thơng qua ngun lý kế thừa, loại bỏ đoạn chương trình lặp lại q trình mơ tả lớp mở rộng khả sử dụng lớp xây dựng Chương trình xây dựng từ đơn thể (đối tượng) trao đổi với nên việc thiết kế lập trình thực theo quy trình định khơng phải dựa vào kinh nghiệm kỹ thuật trước Điều đảm bảo rút ngắn thời gian xây dựng hệ thống tăng suất lao động Nguyên lý che giấu thơng tin giúp người lập trình tạo chương trình an tồn khơng bị thay đoạn chương trình khác Có thể xây dựng ánh xạ đối tượng toán vào đối tượng chương trình Cách tiếp cận thiết kế đặt trọng tâm vào đối tượng, giúp xây dựng mơ hình chi tiết gần với dạng cài đặt Những hệ thống hướng đối tượng dễ mở rộng, nâng cấp thành hệ lớn Kỹ thuật truyền thông báo việc trao đổi thông tin đối tượng giúp cho việc mơ tả giao diện với hệ thống bên ngồi trở nên đơn giản Có thể quản lý độ phức tạp sản phẩm phần mềm Không phải hệ thống hướng đối tượng có tất tính chất nêu Khả có tính chất cịn phụ thuộc vào lĩnh vực ứng dụng dự án tin học vào phương pháp thực người phát triển phần mềm 1.5 Các ngơn ngữ hướng đối tượng Lập trình hướng đối tượng không đặc quyền ngôn ngữ đặc biệt Cũng giống lập trình có cấu trúc, khái niệm lập trình hướng đối tượng cài đặt ngơn ngữ lập trình C Pascal, Tuy nhiên, chương trình lớn vấn đề lập trình trở nên phức tạp Những ngôn ngữ thiết kế đặc biệt, hỗ trợ cho việc mô tả, cài đặt khái niệm phương pháp hướng đối tượng gọi chung ngôn ngữ đối tượng Dựa vào khả đáp ứng khái niệm hướng đối tượng, ta chia làm hai loại: Ngơn ngữ lập trình dựa đối tượng Ngơn ngữ lập trình hướng đối tượng Lập trình dựa đối tượng kiểu lập trình hỗ trợ cho việc bao gói, che giấu thơng tin định danh đối tượng Lập trình dựa đối tượng có đặc tính sau: • Bao gói liệu • Cơ chế che giấu truy nhập liệu • Tự động tạo lập xóa bỏ đối tượng • Phép tốn tải bội Ngơn ngữ hỗ trợ cho kiểu lập trình gọi ngơn ngữ lập trình dựa đối tượng Ngôn ngữ lớp không hỗ trợ cho việc thực kế thừa liên kết động, chẳng hạn Ada ngơn ngữ lập trình dựa đối tượng Lập trình hướng đối tượng kiểu lập trình dựa đối tượng bổ sung thêm nhiều cấu trúc để cài đặt quan hệ kế thừa liên kết động Vì đặc tính LTHĐT viết cách ngắn gọn sau: Các đặc tính dựa đối tượng + kế thừa + liên kết động Ngôn ngữ hỗ trợ cho đặc tính gọi ngơn ngữ LTHĐT, ví dụ C++, Smalltalk, Object Pascal v.v Việc chọn ngôn ngữ để cài đặt phần mềm phụ thuộc nhiều vào đặc tính yêu cầu toán ứng dụng, vào khả sử dụng lại chương trình có vào tổ chức nhóm tham gia xây dựng phần mềm 1.6 Một số ứng dụng LTHĐT LTHĐT ứng dụng để phát triển phần mềm nhiều lĩnh vực khác Trong số đó, có ứng dụng quan trọng tiếng hệ điều hành Windows hãng Microsoft phát triển dựa kỹ thuật LTHĐT Một số lĩnh vực ứng dụng kỹ thuật LTHĐT bao gồm: + Những hệ thống làm việc theo thời gian thực + Trong lĩnh vực mơ hình hóa mơ q trình + Các sở liệu hướng đối tượng + Những hệ siêu văn bản, multimedia + Lĩnh vực trí tuệ nhân tạo hệ chuyên gia + Lập trình song song mạng nơ-ron + Những hệ tự động hóa văn phịng trợ giúp định CHƯƠNG CÁC MỞ RỘNG CỦA NGÔN NGỮ C++ Chương trình bày vấn đề sau đây: Giới thiệu chung ngôn ngữ C++ Một số mở rộng ngôn ngữ C++ so với ngôn ngữ C Các đặc tính C++ hỗ trợ lập trình hướng đối tượng Vào C++ Cấp phát giải phóng nhớ Biến tham chiếu, tham chiếu Truyền tham số cho hàm theo tham chiếu Hàm trả giá trị tham chiếu Hàm với tham số có giá trị mặc định Các hàm nội tuyến (inline) Hàm tải bội 2.1 Giới thiệu chung C++ C++ ngôn ngữ lập trình hướng đối tượng mở rộng ngơn ngữ C Vì khái niệm C dùng C++ Phần lớn chương trình C chạy C++ Trong chương tập trung giới thiệu khái niệm, đặc tính C++ hỗ trợ cho lập trình hướng đối tượng Một số kiến thức có C++ có ngơn ngữ C khơng trình bày lại 2.2 Một số mở rộng C++ so với C 2.2.1 Đặt lời thích Ngồi kiểu thích C /* */ , C++ đưa thêm kiểu thích thứ hai, thích bắt đầu // Kiểu thích /* */ dùng cho khối thích lớn gồm nhiều dịng, cịn kiểu // dùng cho thích dịng Chương trình dịch bỏ qua tất thích chương trình Ví dụ: /* Đây câu thích nhiều dịng */ // Đây thích dòng 2.2.2 Khai báo biến Trong C tất câu lệnh khai báo biến, mảng cục phải đặt đầu khối Vì vị trí khai báo vị trí sử dụng biến cách xa nhau, điều gây khó khăn việc kiểm sốt chương trình C++ khắc phục nhược điểm cách cho phép lệnh khai báo biến đặt chỗ chương trình trước biến sử dụng Phạm vi hoạt động biến kiểu khối biến khai báo Ví dụ 2.1 Chương trình sau nhập dãy số thực xếp theo thứ tự tăng dần: #include #include #include void main() { int n; printf("\n So phan tu cua day N="); scanf("%d",&n); float *x=(float*)malloc((n+1)*sizeof(float)); for (int i=0;ibiến 2>> >>biến n; 1.3 Nhập ký tự chuỗi ký tự Có thể dùng phương thức sau (định nghĩa lớp istream) để nhập ký tự chuỗi: cin.get cin.getline cin.ignore 1.3.1 Phương thức get() có dạng: Dạng 1: int cin.get(); Dùng để đọc ký tự (kể khoảng trắng) Dạng 2: istream& cin.get(char &ch); Dùng để đọc ký tự (kể khoảng trắng) đặt vào biến kiểu char tham chiếu ch Dạng 3: istream& cin.get(char *str, int n, char d = ‘\n’); 104 Dùng để đọc dãy ký tự (kể khoảng trắng) đưa vào vùng nhớ str trỏ tới Quá trình đọc kết thúc xảy hai tình sau: + Gặp ký tự giới hạn (cho d) Ký tự giới hạn mặc định ‘\n’ + Đã nhận đủ (n-1) ký tự Chú ý: + Ký tự kết thúc chuỗi ‘\0’ bổ sung vào cuối chuối nhận + Ký tự giới hạn lại dòng nhập để dành cho lệnh nhận + Ký tự lại dòng nhập làm trơi phương thức get() dạng Ví dụ: Xét đoạn chương trình: char hoten[25], diachi[50], quequan[30] ; cout