Bài thuyết trình Tổng quan về lập trình hướng đối tượng nêu lên lập trình cấu trúc (khái quát, đặc điểm), lập trình hướng đối tượng (khái niệm,lớp, sự đóng góp, tính kế thừa, tính đa hình,...), ứng dụng OOP.
Trang 1GVHD: Huỳnh Lê Tấn Tài
Trang 2Tổng Quan Về
Lập Trình Hướng Đối Tượng
1 Lập trình cấu trúc.
Khái quát về lập trình cấu trúc.
Ưu điểm lập trình cấu trúc.
Nhược điểm lập trình cấu trúc.
2 Lập trình hướng đối tượng.
Khái niệm Lập Trình Hướng Đối Tượng.
4 Tài liệu tham khảo.
Tổng quan về lập trình hướng đối tượng
Trang 3Lập Trình Cấu Trúc
1 Sơ lượt về lập trình cấu trúc:
Chương trình = cấu trúc dữ liệu + giải thuật
• Chương trình được chia nhỏ thành chương trình
con được đặt chung với nhau để xây dựng nên
một ứng dụng
• Các chương trình con:
• Độc lập với nhau và có dữ liệu riêng
• Trao đổi qua: tham số và biến toàn cục
Trang 4Lập Trình Cấu Trúc
2 Ưu điểm lập trình cấu trúc:
Việc chia nhỏ một chương trình lớn thành các chương trình con giúp cho lập trình viên dễ nhận biết và quản lí chương trình tốt hơn
3 Nhược điểm trong lập trình cấu trúc:
Không hổ trợ mạnh việc sử dụng lại mã nguồn
Không phù hợp với các phần mềm lớn
Nhiều hàm truy nhập, sử dụng dữ liệu chung Dữ liêu trong hệ
thống được chuyển động từ hàm này sang hàm khác nên khó kiểm soát dữ liệu
Tập trung vào công việc cần thực hiện (thuật toán)
Chương trình lớn được chia thành các hàm nhỏ hơn nhưng nếu
không thống nhất về thông tin dẫn đến hậu quả lớn
Tổng quan về lập trình hướng đối tượng
Trang 5Khái niệm Lập Trình Hướng Đối Tượng
Lập trình cấu trúc dẫn đến khái niệm trừu tượng hóa:
Không quan tâm đến các chi tiết không quan trọng bên trong.
Không quan tâm việc thực hiện của chương trình.
Chỉ quan tâm đến kết quả.
Khái niệm:
Lập trình hướng đối tượng được xây dựng trên nền
tảng của khái niệm lập trình có cấu trúc và sự trừu
tượng hóa dữ liệu.
Trang 6Khái niệm Lập Trình Hướng Đối Tượng
Là phương pháp lập trình:
Mô tả chính xác các đối tượng trong thế giới.
Lấy đối tượng làm nền tảng xây dựng thuật toán.
Thiết kế xoay quanh dữ liệu của hệ thống.
Chương trình được chia thành các lớp đối tượng.
Dữ liệu được đóng gói, che dấu và bảo vệ.
Đối tượng làm việc với nhau qua thông báo.
Chương trình được thiết kết theo cách từ dưới lên
(bottom-up) và từ trên xuống (top – down).
Tổng quan về lập trình hướng đối tượng
Trang 7Lập Trình Hướng Đối Tượng
1. Đối tượng là gì?
Đối tượng = dữ liệu + phương thức
• Là khái niệm trừu tượng phản ánh các thực thể trong thế giới thực
• Có thể là một thực thể vật lý
• Có thể là một khái niệm trừu tượng
• Một đối tượng là sự đóng gói 2 thành phần:
• Trạng thái (state) dữ liệu hay thuộc tính (attribute): đó là các đặc
điểm của đối tượng
• Các ứng xử (behavior) hay hành vi, thao tác, phương thức: đó là một hành động mà đối tượng có thể thực hiện
• Có hai loại đối tượng: đối tượng trừu tượng và đối tượng thực
• Được định nghĩa là sự thể hiện của một lớp (sẽ biết ở phần sau)
• Chính là các thực thể trong hệ thống hướng đối tượng (sẽ biết ở phần sau)
Trang 8 Ví dụ 1:
Một con người là một đối tượng
Họ, tên, chiều cao, cân năng…là thuộc tính của tất cả con
người.
Hành vi của con người là ngồi, đứng, đi, chạy, nhảy…
Ví dụ 2:
Một sinh viên trừu tượng gồm các thuộc tính:
MSSV, HỌ TÊN, NGÀY SINH, QUÊ QUÁN…
Trang 9Lập Trình Hướng Đối Tượng
Trang 10Lập Trình Hướng Đối Tượng
Bao gói: người dùng giao tiếp với hệ thống qua giao diện
Che dấu: ngăn chặn các thao tác không được phép từ bên
Trang 11Lập Trình Hướng Đối Tượng
Kế thừa tạo ra mô hình phân cấp giữa các lớp
Có ba từ khóa dẫn xuất là private, protected và public qui định
quy định tính chất của sự kế thừa
Có hai loại thừa kế: đa thừa kế và đơn thừa kế
Trang 12Lập Trình Hướng Đối Tượng
Student
ID Firt nam Last name Graduation Write() Display()
Gradstudent
Under grad Major
Under Year gradutedWrite()
Display()inheritance
inheritance
Trang 13Lập Trình Hướng Đối Tượng
Đa hình là khái niệm luôn đi kèm với kế thừa Do tính kế thừa, một lớp có thể sử dụng lại các phương thức của lớp khác Tuy nhiên, nếu cần thiết, lớp dẫn xuất cũng có thể định nghĩa lại một số phương thức của lớp cơ sở Đó là sự nạp chồng
phương thức trong kế thừa Nhờ sự nạp chồng phương thức
này, ta chỉ cần gọi tên phương thức bị nạp chồng từ đối tượng
mà không cần quan tâm đó là đối tượng của lớp nào Chương trình sẽ tự động kiểm tra xem đối tượng là thuộc kiểu lớp cơ sở hay thuộc lớp dẫn xuất, sau đó sẽ gọi phương thức tương ứng với lớp đó Đó là tính đa hình
Trang 14Lập Trình Hướng Đối Tượng
Nĩi cách khác, đa hình là khả năng cho phép mơ tả và
sử dụng những phương thức cĩ tên giống nhau trong các lớp khác nhau.
Đa hình là một quá trình áp dụng một giao diện cho hai hay nhiều
trường hợp tương tự nhau (nhưng khác biệt về mặt kỹ thuật), nó triển khai tư tưởng "một giao diện cho nhiều phương thức"
Đa hình làm cho mối quan hệ luận lý giữa các hoạt động tương tự nhau được trở nên rõ ràng hơn, do đó nó giúp cho lập trình viên dễ dàng hơn trong việc đọc hiểu và bảo trì chương trình
Tổng quan về lập trình hướng đối tượng
Trang 15Lập Trình Hướng Đối Tượng
Ví dụ:
Trang 16Lập Trình Hướng Đối Tượng
5 Ưu điểm:
• Loại bỏ các đoạn mã lặp lại (nguyên lý thừa kế)
• Rút ngắn thời gian xây dựng hệ thống
• Quản lý được độ phức tạp của chương trình, dự án phần mềm lớn
• Dễ dàng mở rộng và nâng cấp
• Tạo ra các chương trình an toàn, bảo mật (nguyên lý che giấu)
• Tăng năng xuất và hiệu quả hơn
• Chương trình được thiết kế theo đúng qui trình (do nó được xây dựng
từ những đơn thể (đối tượng) trao đổi với nhau chứ không phải dựa vào kinh nghiệm và kỹ thuật như trước)
Tổng quan về lập trình hướng đối tượng
Trang 17Lập Trình Hướng Đối Tượng
Thiếu tính động của object(tự thân object
không tự phát triển trước yêu cầu mới)
Tính đan lên nhau của các yêu cầu mà mỗi một
object phải gánh chịu
Trang 18Lập Trình Hướng Đối Tượng
7 Một số ngôn ngữ sử dụng phương pháp lập trình hướng đối
tượng:
• Hầu hết các ngôn ngữ lập trình đều hỗ trợ OOP, có thể chia thành 2 loại:
• Ngôn ngữ hỗ trợ hướng đối tượng:
• Eiffel, Clos, Loops, Flavors, Object Pascal, Object C, C++, Delphi, Java…
• Ngôn ngữ hướng đối tượng:
Trang 19hướng đối tượng bao gồm:
Hệ thống làm việc thời gian thực, csdl hướng
đối tượng, hệ siêu văn bản, multimedia, trí tuệ nhân tạo, lập trình song song và mạng nơron…
Trang 20Ví dụ
Trang 21Tài liệu tham khảo
James P Cohoon and Jack W.Davidson, C++ Program Design – An Introduction to
Programming and Object-Oriented Design, 2nd edition, WCB McGraw-Hill, 1999
Robert Lafore, Object – Oriented Programming in C++, Fourth edition, SAMS, 2001
Lê Đ Hưng, Tạ T Anh, Nguyễn H Đức và Nguyễn T Thuỷ, Lập trình hướng đối tượng
với C++, NXB Khoa học và Kỹ thuật, 2005
Waite Group's Object-Oriented Programming in C++, Third Edition
(Publisher: Macmillan Computer Publishing)
Author(s): Robert Lafore