Một lớp đối tượng được đặc trưng bằng các thuộc tính, và các hoạt động (hành vi, thao tác). Thuộc tính (attribute) là một thành phần của đối tượng, có giá trị nhất định cho mỗi đối [r]
Trang 3Object-oriented programming 3
Mục tiêu của kỹ sƣ phần mềm
Tạo ra sản phẩm tốt một cách có hiệu quả
Nắm bắt được công nghệ
Trang 44
Độ phức tạp, độ lớn PM ngày càng cao
Một số hệ Unix chứa khoảng 4 triệu dòng lệnh
MS Windows chứa hàng chục triệu dòng lệnh
Người dùng ngày càng đòi hỏi nhiều chức năng, đặc biệt là
chức năng thông minh
Phần mềm luôn cần được sửa đổi
Trang 5 Giải pháp chính là sử dụng lại (tái sử dụng)
Giảm chi phí và thời gian phát triển
Nâng cao chất lượng
Trang 7Object-oriented programming 7
Kỹ thuật lập trình truyền thống & HĐT
Phương pháp lập trình truyền thống
Phương pháp lập trình hướng đối tượng
Ưu điểm của lập trình OOP so với lập trình truyền thống
Phương pháp phân tích bài toán theo tiếp cận hướng đối tượng
Trang 88
1 Phương pháp lập trình truyền thống
Lập trình không có cấu trúc (unstructured programming)
Là phương pháp xuất hiện đầu tiên
Các ngôn ngữ như Assembly, Basic
Sử dụng các biến toàn cục
Lạm dụng lệnh GOTO
Không sử dụng hàm, viết tất cả trong một hàm main()
Trang 9Object-oriented programming 9
Lập trình không có cấu trúc
Cho phép viết những đoạn mã rối rắm (spaghetti code)
Lập trình viên sử dụng các lệnh goto” và “gosub” để nhảy đến mọi nơi trong chương trình
Trang 1010
Lập trình không có cấu trúc
Nhƣợc điểm:
Gặp khó khăn khi xây dựng các chương trình lớn
Hầu như không thể sử dụng lại
Những dòng lệnh được lặp lại thì buộc phải copy thành nhiều
chỗ
Chương trình sẽ không khoa học, khó sửa chữa và bảo trì
Trang 11 Mỗi thủ tục sẽ có chức năng riêng biệt
Các thủ tục có thể gọi qua lại lẫn nhau
Chương trình = Cấu trúc dữ liệu + Giải thuật
Trang 12int a, b, t;
a = 5, b = 10;
int t = LuyThuy(a,b); printf(“Kq: %d”,t);
return 0;
}
Mã chương trình tập trung thể hiện thuật toán: làm như thế nào
Trang 13Object-oriented programming 13
Ƣu điểm:
Chương trình được tổ chức khoa học, dễ quản lý, bảo trì
Giải quyết được nhiều bài toán lớn
Nhóm các thủ tục theo các chức năng: Lập trình module
Nhƣợc điểm:
Cách tiếp cận đôi khi chưa phù hợp với các hoạt động
trong thế giới thực
Diễn đạt thiếu tự nhiên
Khó mô tả những quan hệ phức tạp của thế giới tự nhiên
Bảo mật kém
Trang 14void setDate(Date& date, int newDay,
int newMonth, int newYear) {
date.day = newDay;
}
Chuyện gì xảy ra nếu các đối số
newDay, newMonth, newYear
tạo thành ngày tháng năm không hợp lệ?
Trang 15Object-oriented programming 15
2 Lập trình hướng đối tượng
Lập trình hướng đối tượng (Object-oriented programming)
Dữ liệu, chức năng thao tác trên dữ liệu được gom lại thành 1
đối tượng
Chương trình không dựa trên chức năng mà dựa trên đối
tượng
Trang 1616
2 Lập trình hướng đối tượng (tt)
Dữ liệu được gắn chặt với các hàm riêng
• Chỉ có các hàm đó tác động lên,
• Các hàm bên ngoài không thể truy cập
Cho phép phân tích bài toán thành:
• Các thực thể (đối tượng)
• Xây dựng các dữ liệu cùng các hàm xung quanh các đối
tượng
Trang 17Object-oriented programming 17
2 Lập trình hướng đối tượng (tt)
Lập trình hướng đối tượng cho phép khắc phục các hạn
chế của các phương pháp trước
Trang 1818
Dựa trên ý tưởng
Xem thế giới là tuyển tập các đối tượng
Dữ liệu + chức năng/xử lý => đối tượng
(thuộc tính) (phương thức)
Một đối tượng đóng bao cả dữ liệu và các
phương thức
2 Lập trình hướng đối tượng (tt)
Trang 2020
2 Lập trình hướng đối tượng (tt)
Một số ngôn ngữ lập trình hướng đối tượng
Xuất phát từ tư tưởng OOP của ngôn ngữ SIMULA67,
Trung tâm nghiên cứu Palo Alto (hãng XEROR) nghiên cứu
ngôn ngữ OOP đầu tiên với tên Smalltalk
Sau đó các ngôn ngữ OOP lần lượt ra đời như Eiffel, C++,
Delphi, Java, PHP, C#…
XEROR đã đề ra tư tưởng giao diện biểu tượng trên màn hình (icon
base screen interface)
Apple Macintosh, Microsoft Windows phát triển giao diện đồ họa
Trong Microsoft Windows, tư tưởng OOP được thể hiện:
• Chúng ta click vào đối tượng
• Mỗi đối tượng có thể là control menu, control menu box,
menu bar, scroll bar, button, minimize box,
Trang 21Object-oriented programming 21
Một số khái niệm
Lớp:
chung lại thành lớp đối tượng
đặc trưng bằng các thuộc tính, và các hoạt động (hành vi,
thao tác)
Thuộc tính (attribute) là một thành phần của đối tượng, có
giá trị nhất định cho mỗi đối tượng tại mỗi thời điểm trong hệ thống
Thao tác (operation) thể hiện hành vi của một đối tượng tác
động qua lại với các đối tượng khác hoặc với chính nó
Trang 2222
Sơ đồ lớp và sơ đồ thể hiện
Sinh viên Họ tên
Năm sinh Mã số
Điểm TB
Đi học
Đi thi Phân loại
(Sinh viên) Nguyễn Văn A
1990 02.020.001 9.5
Trang 23Object-oriented programming 23
Các đặc điểm quan trọng của OO
Các lớp đối tượng - Classes
Đóng gói – Encapsulation
Kế thừa - Inheritance
Đa hình - Polymorphism
Trang 2424
Trừu tượng hóa
Cách nhìn khái quát hóa về một tập các đối tượng có chung các đặc điểm được quan tâm (bỏ qua các chi tiết không cần thiết)
Trang 25Object-oriented programming 25
Đóng gói – Che dấu thông tin
Đóng gói: Nhóm những gì có liên quan với nhau vào làm một
Các hàm/ thủ tục đóng gói các câu lệnh
Các đối tượng đóng gói dữ liệu của chúng và các thủ tục có liên quan
Che giấu thông tin: đóng gói để che một số thông tin và chi
tiết cài đặt nội bộ để bên ngoài không nhìn thấy
Che giấu những gì mà người dùng không cần
Che giấu những gì mà mình cần giữ bí mật
Trang 2626
Kế thừa
B, (giống như thuộc tính và thao tác đó đã được định nghĩa tại lớp A)
Trang 27Object-oriented programming 27
Đa hình
Cho phép một tên thao tác hoặc thuộc tính có thể được
định nghĩa tại nhiều lớp
Có thể có nhiều cài đặt khác nhau tại mỗi lớp trong các lớp
đó
Trang 2828
Một số thuật ngữ hướng đối tượng
OOM (Object Oriented Methodology): Phương pháp luận hướng đối tượng
OOA (Object Oriented Analysis): Phân tích hướng đối tượng
OOD: Object Oriented Design (Thiết kế hướng đối tượng)
OOP: Object Oriented Programming (lập trình hướng đối tượng)
Inheritance: Kế thừa
Polymorphism: Đa hình
Encapsulation: Tính đóng gói
Trang 29Object-oriented programming 29
3 Ƣu điểm của OOP
Phân tích, thiết kế và phát triển một vấn đề trong khuôn khổ
những khái niệm và thuật ngữ thuộc lĩnh vực ứng dụng
Vì thế, có một sự tương hợp cao nhất giữa việc phát triển ứng dụng và vấn đề thực tế
Dễ mô tả các quan hệ phân cấp trong thế giới tự nhiên
Trang 3030
3 Ƣu điểm của OOP
Hỗ trợ việc chia sẻ bên trong một ứng dụng
Tái sử dụng => giảm chi phí
Giảm thiểu các lỗi => dễ bảo trì ứng dụng => do khả năng
tái sử dụng
Tăng tốc tiến trình thiết kế và phát triển ứng dụng
Trang 31Object-oriented programming 31
Ví dụ về tái sử dụng code
Trang 3232
4 PP phân tích bài toán theo tiếp cận HĐT
Mô hình hóa và thiết kế theo hướng đối tượng
Suy nghĩ mới về vấn đề cần giải quyết dùng các mô hình
Được tổ chức xung quanh các khái niệm trong thế giới
thực
Trong một hệ thống thông tin hướng đối tượng, mọi thứ
được xem như các đối tượng
Mỗi đối tượng là sự kết hợp:
Cấu trúc dữ liệu (các thuộc tính)
và hoạt động (các thủ tục xử lý dữ liệu)
Trang 33Object-oriented programming 33
4 PP phân tích bài toán theo tiếp cận HĐT
Kỹ thuật mô hình hoá OMT (Object Modeling Technique)
của J.Rumbaugh bao gồm các bước:
Trang 3434
Lịch sử ngôn ngữ lập trình
Trang 3535