Lập trình Hướng đối tượng
(Object Oriented Programming)
Chương 1. Giới thiệu
TRẦN MINH THÁI
Email:
Website: www.minhthai.edu.vn
Cập nhật: 08 tháng 06 năm 2016
Tài liệu tham khảo
#2
Trần Minh Thái, Bài giảng & bài tập Lập trình hướng đối tượng trên Web site: www.minhthai.edu.vn
Scott Robert Ladd, C++ kỹ thuật và ứng dụng (Nguyễn Hùng biên dịch)
Trần Văn Lăng, Lập trình hướng đối tượng với C++
Stroustrup, Bjarne, The C++ Programming Language, Reading, MA: Addison-Wesley (1993)
Bruce Eckel, Thinking in C++ 2nd edition, Vol.1&2
Dietel & Dietel. C++ How to Program, 3rd edition
Nội dung học phần
#3
Chương 1. Giới thiệu lập trình hướng đối tượng (3 tiết)
Chương 2. Giới thiệu ngôn ngữ C++ (6 tiết)
Chương 3. Lớp và đối tượng (9 tiết)
Chương 4. Đa năng hoá toán tử (6 tiết)
Chương 5. Kế thừa đơn và đa kế thừa (9 tiết)
Chương 6. Đa hình (6 tiết)
Chương 7. Phân tích, thiết kế và hiện thực chương trình theo hướng đối tượng (6 tiết)
Chương 1. Giới thiệu OOP
#4
Nội dung
1.
Khái niệm về phương pháp lập trình
2.
Tổng quan các phương pháp lập trình
3.
Giới thiệu những đặc điểm và những vấn đề mới trong phương pháp lập trình hướng đối tượng
Phương pháp lập trình (PPLT)?
#5
•
Xây dựng phần mềm bao gồm rất nhiều cơng đoạn: phân tích & thiết kế, cài đặt, kiểm tra/thử
nghiệm và bảo trì
•
Cài đặt (programming/coding) chỉ là 1 phần trong quá trình trên
Phương pháp lập trình?
#6
•
C++/C#/Java/v.v… là NNLT để viết chương trình
•
PPLT là hệ thống hướng dẫn các giai đoạn cần thiết, cấu trúc của một chương trình
•
PPLT là các cách tiếp cận giúp cho quá trình cài đặt hiệu quả hơn
Các yêu cầu chính của phần mềm
#7
Tính tái sử dụng (reusability)
Tính mở rộng (extensibility)
Tính mềm dẻo (flexibility)
Các phương pháp lập trình
#8
Lập trình tuyến tính
Thời gian đầu
Lập trình có cấu trúc
1960 – 1970
Lập trình hướng đối tượng
1980
(1) Lập trình tuyến tính
#9
•
Chương trình là một dãy các lệnh
•
Lập trình là viết các lệnh trong dãy
lệnh
•
Khơng mang tính thiết kế
•
Tiêu biểu là ngơn ngữ Basic, Fortran
(1) Lập trình tuyến tính: Đặc điểm
#10
•
Chương trình đơn giản, số dịng lệnh ít
•
Thực hiện trình tự từ đầu đến cuối
•
Khơng có cấu trúc
•
Dùng các lệnh “goto/ gosub” để nhảy đến một vị trí nào đó trong chương trình
(2) Lập trình có cấu trúc
#11
•
Chương trình là một hệ thống các thủ tục/ hàm. Mỗi thủ tục/ hàm là một dãy các lệnh
•
Lập trình là xây dựng các thủ tục/ hàm
•
Kết quả là hệ thống cấu trúc và mối quan hệ giữa các hàm/ thủ tục
•
Tiêu biểu là ngơn ngữ Pascal, C
(2) Lập trình có cấu trúc
#12
•
Khái niệm trừu tượng hóa (abstraction) theo chức năng: Làm được gì, khơng quan tâm chi tiết
bên trong
•
Phân chia cơng việc thành các chức năng đơn giản hơn gọi là lập trình đơn thể (module)
(2) Lập trình có cấu trúc: Đặc điểm
#13
Ưu điểm
•
Đơn giản hóa q trình thiết kế và cài đặt
•
Dễ đọc chương trình, hiểu chi tiết bài tốn
•
Các chương trình con tương đối độc lập, dễ phân cơng cho từng nhóm
(2) Lập trình có cấu trúc: Đặc điểm
#14
Khuyết điểm
Khi thay đổi dữ liệu thì phải thực hiện các thay đổi ở mọi đơn thể có tác động trên chúng
Hàm và dữ liệu khơng có quan hệ với nhau
Hàm khơng hạn chế truy nhập tới các biến toàn cục
(2) Lập trình có cấu trúc: Đặc điểm
#15
Khuyết điểm
•
Sai sót trong việc trao đổi thông tin giữa các thành viên trong nhóm có thể mất nhiều thời gian
để sửa chữa chương trình
•
Phần xử lý nằm rải rác và phải hiểu rõ cấu trúc dữ liệu
•
Khó bảo trì chương trình
(3) Lập trình Hướng đối tượng
(Object-oriented Programming)
#16
•
•
Tư duy mới, tiếp cận theo hướng đối tượng để giải các bài toán trên máy tính
Thiết kế và phát triển phần mềm dựa trên kiến trúc lớp và đối tượng
(3) Lập trình Hướng đối tượng
(Object-oriented Programming)
#17
Mục tiêu
•
•
•
•
Loại bỏ những thiếu sót của tiếp cận theo thủ tục
Tiếp cận theo hướng trừu tượng hoá (abstraction)
Dữ liệu được xem là phần trung tâm và được bảo vệ
Hàm gắn kết với dữ liệu
(3) Lập trình Hướng đối tượng
(Object-oriented Programming)
#18
Mục tiêu
•
•
•
Phân tách bài toán thành nhiều đối tượng và yêu cầu chúng thực hiện hành động của mình
Tăng cường khả năng sử dụng lại
Tiếp cận bottom-up
(3) Lập trình Hướng đối tượng
(Object-oriented Programming)
#19
Ưu điểm
•
•
•
Cung cấp một cấu trúc module rõ ràng: Giao diện định nghĩa rõ ràng và chi tiết cài đặt ẩn
Duy trì và sửa đổi mã nguồn dễ dàng
Cung cấp framework tốt với các thư viện mã nguồn
Sự trừu tượng hóa (Abstraction)?
#20
Trừu tượng hóa
Giao diện – Cài đặt
Cái gì – Thế nào
Phân tích – Thiết kế
Các kỹ thuật trừu tượng
Đóng gói (encapsulation)
Ẩn thơng tin (information hiding)
Thừa kế (inheritance)
Đa hình (polymorphism)
Sự trừu tượng hố
#21
Thế giới thực
Trừu tượng hóa
Thuộc tính
Phần mềm
Thuộc tính
Thực thể
Hành động
Phương thức
Sự trừu tượng hố
#22
Thế giới thực
PPLT
Ngơn ngữ lập trình
Đối tượng trong thế giới thực
Đối tượng
Biến có kiểu cấu trúc
Khái niệm chung về đối tượng
Lớp đối tượng
Kiểu dữ liệu cấu trúc
Các thơng tin được quan tâm về 1 đối tượng
Thuộc tính
Thành phần thuộc tính của kiểu cấu
trúc
Các khả năng của đối tượng
Phương thức
Các phương thức
Phân công giữa các đối tượng
Yêu cầu
Gọi thực hiện phương thức
Đối tượng (Object)?
#23
Đối tượng trong thế giới thực
(Real Object)
#24
Thực thể cụ thể mà ta có thể sờ, nhìn thấy hay cảm nhận được
Có trạng thái (state) và
hành động (behaviour)
Một đối tượng có tên gọi và chu trình sống: sinh ra, hoạt động và mất đi
Đối tượng Phần mềm
(Software Object)
#25
Dùng để biểu diễn các đối tượng thế giới thực
Trạng thái: thuộc tính (attribute/
property)
Hành động: phương thức
(method)
6.25