1. Trang chủ
  2. » Tất cả

Lập trình hướng đối tượng

173 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 173
Dung lượng 1,2 MB

Nội dung

ẬP TRÌNH HƯỚNG ĐỐI TƯỢNG PGS.TS Trần Đình Quế KS Nguyễn Mạnh Hùng Các khái niệm Lập trình hướng đối tượng Lập trình hướng đối tượng với Java GIỚI THIỆU Trong năm gần đây, lập trình hướng đối tượng trở nên gần gũi nhờ đời liên tiếp ngôn ngữ lập trình hướng đối tượng Sức mạnh phương pháp lập trình hướng đối tượng thể chỗ khả mơ hình hố hệ thống dựa đối tượng thực tế, khả đóng gói bảo vệ an toàn liệu, khả sử dụng lại mã nguồn để tiết kiệm chi phí tài nguyên; đặc biệt khả chia mã nguồn cộng đồng lập trình viên chuyên nghiệp Những điểm mạnh hứa hẹn thúc đẩy phát triển môi trường lập trình tiên tiến với cơng nghiệp lắp ráp phần mềm với thư viện thành phần có sẵn Tài liệu nhằm giới thiệu cho sinh viên nhìn tổng quan phương pháp lập trình hướng đối tượng cung cấp kiến thức, kỹ thuật cho phát triển ứng dụng dựa ngơn ngữ lập trình Java - ngơn ngữ lập trình hướng đối tượng thông dụng Nội dung tài liệu bao gồm hai phần chính: • Phần thứ trình bày khái niệm vấn đề lập trình hướng đối tượng bao gồm tổng quan cách tiếp cận hướng đối tượng khái niệm đối tượng, lớp, kế thừa, đóng gói, đa hình… • Phần thứ hai trình bày chi tiết phương pháp lập trình hướng đối tượng với ngơn ngữ lập trình Java Nội dung tài liệu bao gồm chương: Chương 1: Tổng quan cách tiếp cận hướng đối tượng Trình bày tiến hố cách tiếp cận từ lập trình truyền thống đến cách tiếp cận lập trình hướng đối tượng xu hướng phát triển lập trình hướng đối tượng Chương 2: Những khái niệm lập trình hướng đối tượng Trình bày khái niệm như: đối tượng, lớp đối tượng với thuộc tính phương thức, tính kế thừa đa hình, tính đóng gói lập trình hướng đối tượng Chương giới thiệu tổng quan số ngơn ngữ lập trình hướng đối tượng thông dụng Chương 3: Ngôn ngữ Java Giới thiệu khái niệm quy ước ban đầu ngơn ngữ lập trình Java: Cấu trúc chương trình, cách biên dịch, cách đặt tên biến, kiểu liệu, toán tử cấu trúc lệnh ngôn ngữ Java Chương 4: Kế thừa đa hình Java Trình bày kỹ thuật lập trình hướng đối tượng dựa ngôn ngữ Java: Khai báo lớp, thuộc tính phương thức lớp; kỹ thuật thừa kế, lớp trừu tượng, cài đặt nạp chồng đa hình Java Chương 5: Biểu diễn cài đặt cấu trúc liệu trừu tượng Java Trình bày kỹ thuật cài đặt sử dụng số cấu trúc liệu quen thuộc Java: ngăn xếp, hàng đợi, danh sách liên kết, nhị phân đồ thị Chương 6: Lập trình giao diện Java Trình bày kỹ thuật lập trình giao diện Java: Lập trình với giao diện thư viện AWT, lập trình giao diện với Applet HTML, lập trình giao diện nâng cao với thư viện SWING Tài liệu viết nhằm phục vụ mơn học “Lập trình hướng đối tượng” giảng dạy sau mơn học Ngơn ngữ lập trình C++ học môn học sinh viên dễ nắm bắt đặc trưng khác biệt ngôn ngữ Java so với C++ Cuốn sách cịn có kèm theo đĩa CD chứa tồn mã chương trình cài đặt làm ví dụ tập sách Mặc dù tác giả có nhiều cố gắng q trình biên soạn tài liệu này, song tránh khỏi thiếu sót Rất mong nhận đóng góp ý kiến sinh viên bạn đồng nghiệp PHẦN NHỮNG KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CHƯƠNG TỔNG QUAN VỀ CÁCH TIẾP CẬN HƯỚNG ĐỐI TƯỢNG Nội dung chương nhằm giới thiệu cách tổng quan cách tiếp cận hướng đối tượng Nội dung trình bày bao gồm: • Giới thiệu cách tiếp cận lập trình truyền thống • Giới thiệu cách tiếp cận lập trình hướng đối tượng • So sánh khác biệt hai cách tiếp cận • Xu hướng lập trình hướng đối tượng 1.1 PHƯƠNG PHÁP TIẾP CẬN CỦA LẬP TRÌNH TRUYỀN THỐNG Lập trình truyền thống trải qua hai giai đoạn: • Giai đoạn sơ khai, khái niệm lập trình đời, lập trình tuyến tính • Giai đoạn tiếp theo, lập trình hướng cấu trúc 1.1.1 Lập trình tuyến tính Đặc trưng lập trình tuyến tính tư theo lối Chương trình thực từ đầu đến cuối, lệnh lệnh kết thúc chương trình Đặc trưng Lập trình tuyến tính có hai đặc trưng: • Đơn giản: chương trình tiến hành đơn giản theo lối tuần tự, khơng phức tạp • Đơn luồng: có luồng cơng việc nhất, công việc thực luồng Tính chất • Ưu điểm: Do tính đơn giản, lập trình tuyến tính có ưu điểm chương trình đơn giản, dễ hiểu Lập trình tuyến tính ứng dụng cho chương trình đơn giản • Nhược điểm: Với ứng dụng phức tạp, người ta dùng lập trình tuyến tính để giải Ngày nay, lập trình tuyến tính tồn phạm vi modul nhỏ phương pháp lập trình khác Ví dụ chương trình lập trình cấu trúc, lệnh thực theo từ đầu đến cuối chương trình 1.1.2 Lập trình cấu trúc Trong lập trình hướng cấu trúc, chương trình chia nhỏ thành chương trình chương trình thực cơng việc xác định Chương trình gọi đến chương trình theo giải thuật, cấu trúc xác định chương trình Các ngơn ngữ lập trình cấu trúc phổ biến Pascal, C C++ Riêng C++ ngồi việc có đặc trưng lập trình cấu trúc kế thừa từ C, cịn có đặc trưng lập trình hướng đối tượng Cho nên C++ cịn gọi ngơn ngữ lập trình nửa cấu trúc, nửa hướng đối tượng Đặc trưng Đặc trưng lập trình cấu trúc thể mối quan hệ: Chương trình = Cấu trúc liệu + Giải thuật Trong đó: • Cấu trúc liệu cách tổ chức liệu, cách mơ tả tốn dạng ngơn ngữ lập trình • Giải thuật quy trình để thực cơng việc xác định Trong chương trình, giải thuật có quan hệ phụ thuộc vào cấu trúc liệu: • Một cấu trúc liệu phù hợp với số hạn chế giải thuật • Nếu thay đổi cấu trúc liệu phải thay đổi giải thuật cho phù hợp • Một giải thuật thường phải kèm với cấu trúc liệu định Tính chất • Mỗi chương trình gọi thực nhiều lần chương trình • Các chương trình gọi đến để thực theo thứ tự bất kì, tuỳ thuộc vào giải thuật chương trình mà khơng phụ thuộc vào thứ tự khai báo chương trình • Các ngơn ngữ lập trình cấu trúc cung cấp số cấu trúc lệnh điều khiển chương trình Ưu điểm • Chương trình sáng sủa, dễ hiểu, dễ theo dõi • Tư giải thuật rõ ràng Nhược điểm • Lập trình cấu trúc khơng hỗ trợ việc sử dụng lại mã nguồn: Giải thuật phụ thuộc chặt chẽ vào cấu trúc liệu, đó, thay đổi cấu trúc liệu, phải thay đổi giải thuật, nghĩa phải viết lại chương trình • Không phù hợp với phần mềm lớn: tư cấu trúc với giải thuật phù hợp với toán nhỏ, nằm phạm vi modul chương trình Với dự án phần mềm lớn, lập trình cấu trúc tỏ khơng hiệu việc giải mối quan hệ vĩ mô modul phần mềm Vấn đề Vấn đề lập trình cấu trúc cách để phân chia chương trình thành chương trình cho phù hợp với yêu cầu, chức mục đích tốn Thơng thường, để phân rã tốn lập trình cấu trúc, người ta sử dụng phương pháp thiết kế xuống (top-down) Phương pháp thiết kế xuống (top-down) Phương pháp thiết kế top-down tiếp cận toán theo hướng từ xuống dưới, từ tổng quan đến chi tiết Theo đó, toán chia thành toán nhỏ Mỗi toán lại chia nhỏ tiếp, có thể, thành tốn nhỏ Q trình cịn gọi q trình làm mịn dần Quá trình làm mịn dần dừng lại tốn khơng cần chia nhỏ thêm Nghĩa tốn giải chương trình với giải thuật đơn giản Ví dụ, sử dụng phương pháp top-down để giải toán xây nhà Khi đó, ta phân rã tốn theo bước sau: • Ở mức thứ nhất, chia toán xây nhà thành toán nhỏ như: làm móng, đổ cột, đổ trần, xây tường, lợp mái • Ở mức thứ hai, phân rã cơng việc mức thứ nhất: việc làm móng nhà phân rã tiếp thành cơng việc: đào móng, gia cố nền, làm khung sắt, đổ bê tông Công việc đổ cột phần rã thành … • Ở mức thứ ba, phân rã công việc mức thứ hai: việc đào móng phân chia tiếp thành công việc: đo đạc, cắm mốc, dây, đào kiểm tra móng Việc gia cố phân rã thành … Quá trình phân rã dừng mức này, cơng việc thu là: đo đạc, cắm mốc, dây, đào… thực ngay, khơng cần chia nhỏ thêm Lưu ý: • Cùng sử dụng phương pháp top-down với tốn, cho nhiều kết khác Nguyên nhân khác tiêu chí để phân rã tốn thành tốn Ví dụ, áp dụng phương pháp top-down để giải toán xây nhà, sử dụng cách khác để phân chia tốn, ta thu kết khác biệt so với phương pháp ban đầu: • Ở mức thứ nhất, chia tốn xây nhà thành toán nhỏ như: làm phần gỗ, làm phần sắt, làm phần bê tông làm phần gạch • Ở mức thứ hai, phân rã cơng việc mức thứ nhất: việc làm gỗ chia thành công việc như: xẻ gỗ, gia công gỗ, tạo khung, lắp vào nhà Việc làm sắt chia nhỏ thành… Rõ ràng, với cách làm mịn này, ta thu kết khác hẳn với cách thức thực phần 1.2 PHƯƠNG PHÁP TIẾP CẬN HƯỚNG ĐỐI TƯỢNG 1.2.1 Phương pháp lập trình hướng đối tượng Xuất phát từ hai hạn chế phương pháp lập trình cấu trúc: • Khơng quản lí thay đổi liệu có nhiều chương trình thay đổi biến chung Vấn đề đặc biệt nghiêm trọng ứng dụng ngày lớn, người ta kiểm soát truy nhập đến biến liệu chung • Khơng tiết kiệm tài ngun người: Giải thuật gắn liền với cấu trúc liệu, thay đổi cấu trúc liệu, phải thay đổi giải thuật, đó, phải viết lại mã chương trình từ đầu Để khắc phục hai hạn chế giải toán lớn, người ta xây dựng phương pháp tiếp cận mới, phương pháp lập trình hướng đối tượng, với hai mục đích chính: • Đóng gói liệu để hạn chế truy nhập tự vào liệu, không quản lí • Cho phép sử dụng lại mã nguồn, hạn chế việc phải viết lại mã từ đầu cho chương trình Việc đóng gói liệu thực theo phương pháp trừu tượng hoá đối tượng thành lớp từ thấp lên cao sau: • Thu thập thuộc tính đối tượng, gắn thuộc tính vào đối tượng tương ứng • Nhóm đối tượng có thuộc tính tương tự thành nhóm, loại bỏ bớt thuộc tính cá biệt, giữ lại thuộc tính chung Đây gọi q trình trừu tượng hố đối tượng thành lớp • Đóng gói liệu đối tượng vào lớp tương ứng Mỗi thuộc tính đối tượng trở thành thuộc tính lớp tương ứng • Việc truy nhập liệu thực thông qua phương thức trang bị cho lớp Không truy nhập tự trực tiếp đến liệu • Khi có thay đổi liệu đối tượng, ta cần thay đổi phương thức truy nhập thuộc tính lớp, mà khơng cần phải thay đổi mã nguồn chương trình sử dụng lớp tương ứng Việc cho phép sử dụng lại mã nguồn thực thơng qua chế kế thừa lập trình hướng đối tượng Theo đó: • Các lớp kế thừa để tận dụng thuộc tính, phương thức • Trong lớp dẫn xuất (lớp kế thừa) sử dụng lại phương thức lớp sở (lớp bị lớp khác kế thừa) mà không cần thiết phải cài đặt lại mã nguồn • Ngay lớp dẫn xuất định nghĩa lại phương thức cho mình, lớp sở không bị ảnh hưởng sửa lại đoạn mã nguồn Ngơn ngữ lập trình hướng đối tượng phổ biến Java C++ Tuy nhiên, C++ có đặc trưng lập trình hướng đối tượng khơng phải ngơn ngữ lập trình hướng đối tượng Java thật ngôn ngữ lập trình hướng đối tượng Đặc trưng Lập trình hướng đối tượng có hai đặc trưng bản: • Đóng gói liệu: liệu ln tổ chức thành thuộc tính lớp đối tượng Việc truy nhập đến liệu phải thông qua phương thức đối tượng lớp • Sử dụng lại mã nguồn: việc sử dụng lại mã nguồn thể thông qua chế kế thừa Cơ chế cho phép lớp đối tượng kế thừa từ lớp đối tượng khác Khi đó, lớp kế thừa, sử dụng phương thức (mã nguồn) lớp bị kế thừa, mà không cần phải định nghĩa lại Ưu điểm Lập trình hướng đối tượng có số ưu điểm bật: • Khơng nguy liệu bị thay đổi tự chương trình Vì liệu đóng gói vào đối tượng Nếu muốn truy nhập vào liệu phải thông qua phương thức cho phép đối tượng • Khi thay đổi cấu trúc liệu đối tượng, không cần thay đổi đổi mã nguồn đối tượng khác, mà cần thay đổi số hàm thành phần đối tượng bị thay đổi Điều hạn chế ảnh hưởng xấu việc thay đổi liệu đến đối tượng khác chương trình • Có thể sử dụng lại mã nguồn, tiết kiệm tài nguyên Vì nguyên tắc kế thừa cho phép lớp kế thừa sử dụng phương thức kế thừa từ lớp khác phương thức nó, mà khơng cần thiết phải định nghĩa lại • Phù hợp với dự án phần mềm lớn, phức tạp 1.2.2 Phương pháp phân tích thiết kế hướng đối tượng Một vấn đề đặt cho phương pháp hướng đối tượng từ toán ban đầu, để thu tập đối tượng, với chức phối hợp với nhau, đáp ứng yêu cầu tốn đặt ra? Phương pháp phân tích thiết kế hướng đối tượng đời nhằm trả lời cho câu hỏi Mục đích xây dựng tập lớp đối tượng tương ứng với tốn, phương pháp tiến hành theo hai pha chính: Pha phân tích: Chuyển đổi u cầu tốn từ ngơn ngữ tự nhiên sang ngơn ngữ mơ hình Pha thiết kế: Chuyển đổi đặc tả toán dạng ngơn ngữ mơ hình sang mơ hình cụ thể cài đặt Hai pha phân tích thiết kế bao gồm nhiều bước khác nhau: • Mơ tả tốn • Đặc tả u cầu • Trích chọn đối tượng • Mơ hình hố lớp đối tượng • Thiết kế tổng quan • Thiết kế chi tiết Bước 1: Mơ tả tốn Bài tốn ban đầu phát biểu dạng ngôn ngữ tự nhiên, bao gồm: • Mục đích, chức chung • Các u cầu thơng tin liệu • Các u cầu chức thực Bước 2: Đặc tả u cầu Các u cầu hình thức hố lên mức cao cách sử dụng ngôn ngữ kiểu kịch (scenario) để mô tả Trong kịch bản, chức năng, hoạt động mô tả kịch bản, bao gồm: • Các tác nhân tham gia vào kịch • Vai trị tác nhân kịch • Thứ tự hành động mà tác nhân thực hiện: thực hiện, tác động vào tác nhân nào, thông tin trao đổi Quá trình tiến hành với tất chức yêu cầu hệ thống Bước 3: Trích chọn đối tượng Bước tiến hành đề xuất đối tượng có mặt hệ thống: • Dựa vào kịch mô tả bước hai, chọn tác nhân có xuất để đề xuất thành đối tượng • Lựa chọn đối tượng cách loại bỏ tác nhân bên hệ thống, tác nhân trùng lặp • Cuối cùng, ta thu tập đối tượng hệ thống Bước 4: Mơ hình hoá lớp đối tượng Bước tiến hành trừu tượng hố đối tượng thành lớp: • Thu thập tất thuộc tính đối tương vừa thu thập được, dựa vào yêu cầu thông tin yêu cầu hệ thống (từ bước 1) • Thu thập hành động mà đối tượng cần thực hiện, dựa vào kịch mà đối tượng tương ứng có tham gia (trong bước 2) • Nhóm đối tượng tương tự nhau, có nhiều thuộc tính gần giống • Loại bỏ số thuộc tính cá biệt, riêng tư số đối tượng nhóm • Mơ hình nhóm đối tượng cịn lại thành lớp: Các thuộc tính chung đối tượng thành thuộc tính lớp, hành động đối tượng thành phương thức lớp Kết thu tập lớp đối tượng ban đầu hệ thống Bước 5: Thiết kế tổng quát Bước tiến hành thiết kế vĩ mô, nghĩa thiết kế mối quan hệ lớp hệ thống: • Xác định sơ đồ thừa kế, có, lớp: Nếu hai lớp có số thuộc tính chung, tách thuộc tính chung làm thành lớp sở, hai lớp ban đầu dẫn xuất từ lớp sở Thơng thường, lớp trừu tượng (chung nhất) làm lớp sở, lớp cụ thể, chi tiết làm lớp dẫn xuất (lớp con, cháu) • Xác định tương tác, có, lớp: Dựa vào kịch mô tả bước 2, hai tác nhân có tương tác với hai lớp tương ứng bước có tương tác với Kết thu bước sơ đồ quan hệ bên lớp hệ thống 10

Ngày đăng: 27/04/2019, 18:47

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
2. An Introduction to Object-Oriented Programming with Java. C. Thomas Wu. McGraw- Hill Inc, 1999 Sách, tạp chí
Tiêu đề: An Introduction to Object-Oriented Programming with Java
3. Big Java. Cay Horstmann. John Wiley & Sons Inc, 2002 Sách, tạp chí
Tiêu đề: Big Java
5. Data Structures and Algorithms in Java, second edition. Michael T. Goodrich and Roberto Tamassia. John Wiley & Sons Inc, 2001 Sách, tạp chí
Tiêu đề: Data Structures and Algorithms in Java
6. Introduction to Programming in Java, first edition. J.N. Patterson Hume and Christine Stephenson. 2000 Sách, tạp chí
Tiêu đề: Introduction to Programming in Java
7. Java Algorithms. Scott Robert Ladd. McGraw-Hill Inc, 1997 Sách, tạp chí
Tiêu đề: Java Algorithms
8. Java Distributed Objects. Bill McCarty and Luke Cassady-Dorion. A Division of Macmillan Computer Publishing Sách, tạp chí
Tiêu đề: Java Distributed Objects
9. Java – How to Program, fifth edition. H.M.Deitel and P.J. Deitel. Prentice Hall Inc, 2003 Sách, tạp chí
Tiêu đề: Java – How to Program
10. Java Language Reference, second edition. Mark Grand. O’reilly Inc, 1997 Sách, tạp chí
Tiêu đề: Java Language Reference
11. Java Software Solutions – Foundations of Program Designe. John Lewis and William Loftus. Addison-Weslay Inc, 1998 Sách, tạp chí
Tiêu đề: Java Software Solutions – Foundations of Program Designe
12. Objects, Abstractions, Data Structures and Designe using Java. Elliot B. Koffman and Paul A.T. Wolfgang. John Wiley & Sons Inc, 2005 Sách, tạp chí
Tiêu đề: Objects, Abstractions, Data Structures and Designe using Java
13. The Java TM Class Libraries – An Annotated Reference, the Java series. Patrick Chan and Rosanna Lee. Addison-Wesley Inc, 1996.Tài liệu tiếng Việt Sách, tạp chí
Tiêu đề: The Java"TM" Class Libraries – An Annotated Reference", the Java series. Patrick Chan and Rosanna Lee. Addison-Wesley Inc, 1996
1. Giáo trình Lí thuyết và Bài tập Java. Trần Tiến Dũng. NXB Giáo dục, 1999 Sách, tạp chí
Tiêu đề: Giáo trình Lí thuyết và Bài tập Java
Nhà XB: NXB Giáo dục
w