Trong thế giới thực, chung quanh chúng ta là những đối tượng, đó là các thực thể có mối quan hệ với nhau. Ví dụ: Các phòng trong một công ty Lập trình hướng đối tượng (Object Oriented Programming – LTHĐT)? Là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình Trong thế giới thực, chung quanh chúng ta là những đối tượng, đó là các thực thể có mối quan hệ với nhau. Ví dụ: Các phòng trong một công ty Lập trình hướng đối tượng (Object Oriented Programming – LTHĐT)? Là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình Trong thế giới thực, chung quanh chúng ta là những đối tượng, đó là các thực thể có mối quan hệ với nhau. Ví dụ: Các phòng trong một công ty Lập trình hướng đối tượng (Object Oriented Programming – LTHĐT)? Là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình Trong thế giới thực, chung quanh chúng ta là những đối tượng, đó là các thực thể có mối quan hệ với nhau. Ví dụ: Các phòng trong một công ty Lập trình hướng đối tượng (Object Oriented Programming – LTHĐT)? Là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình Trong thế giới thực, chung quanh chúng ta là những đối tượng, đó là các thực thể có mối quan hệ với nhau. Ví dụ: Các phòng trong một công ty Lập trình hướng đối tượng (Object Oriented Programming – LTHĐT)? Là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình Trong thế giới thực, chung quanh chúng ta là những đối tượng, đó là các thực thể có mối quan hệ với nhau. Ví dụ: Các phòng trong một công ty Lập trình hướng đối tượng (Object Oriented Programming – LTHĐT)? Là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình Trong thế giới thực, chung quanh chúng ta là những đối tượng, đó là các thực thể có mối quan hệ với nhau. Ví dụ: Các phòng trong một công ty Lập trình hướng đối tượng (Object Oriented Programming – LTHĐT)? Là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình
TỔNG QUAN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Khoa Công nghệ phần mềm Nội dung Giới thiệu Các phương pháp lập trình Một số khái niệm Các đặc điểm quan trọng OOP Một số thuật ngữ OOP 2/17/2016 Lập trình hướng đối tượng Giới thiệu Mục tiêu kỹ sư lập trình: Tạo sản phẩm tốt cách có hiệu Nắm bắt công nghệ 17/02/2016 Lập trình hướng đối tượng Giới thiệu Độ phức tạp độ lớn ngày cao: Một số hệ Unix chứa khoảng 4M dòng lệnh MS Windows chứa hàng chục triệu dòng lệnh Người dùng ngày đòi hỏi nhiều chức năng, đặc biệt chức thông minh Phần mềm cần sửa đổi … 17/02/2016 Lập trình hướng đối tượng Giải pháp Cần kiểm soát chi phí: Chi phí phát triển Chi phí bảo trì Giải pháp sử dụng lại (tái sử dụng): Giảm chi phí thời gian phát triển Nâng cao chất lượng 17/02/2016 Lập trình hướng đối tượng Giải pháp Để sử dụng lại (mã nguồn): Cần dễ hiểu Được coi xác Có giao diện rõ ràng Tính module hóa Không yêu cầu thay đổi sử dụng chương trình 17/02/2016 Lập trình hướng đối tượng Mục tiêu việc thiết kế phần mềm Tính tái sử dụng (reusability): thiết kế thành phần sử dụng nhiều phần mềm khác Tính mở rộng (extensibility) Tính mềm dẻo (flexibility): Có thể dễ dàng thay đổi thêm liệu hay tính Các thay đổi không làm ảnh hưởng nhiều đến toàn hệ thống 17/02/2016 Lập trình hướng đối tượng Các phương pháp lập trình Sự tiến hóa phương pháp lập trình: Lập trình cấu trúc Lập trình có cấu trúc (lập trình thủ tục), hướng chức Lập trình hướng đối tượng 17/02/2016 Lập trình hướng đối tượng Lập trình cấu trúc Là phương pháp xuất đầu tiên: Các ngôn ngữ Assembly, Basic Sử dụng biến toàn cục Lạm dụng lệnh GOTO Nhược điểm? Khó hiểu, khó bảo trì, sử dụng lại Chất lượng kém, Chi phí cao Không thể phát triển ứng dụng lớn 17/02/2016 Lập trình hướng đối tượng Lập trình cấu trúc Ví dụ: 10 k =1 20 gosub 100 30 if y > 120 goto 60 40 k = k+1 50 goto 20 60 print k, y 70 stop 100 y = 3*k*k + 7*k-3 110 return 17/02/2016 10 Lập trình hướng đối tượng Thiết kế theo hướng đối tượng Trừu tượng hóa liệu hàm/thủ tục liên quan Chia hệ thống thành lớp/đối tượng Mỗi lớp/đối tượng có tính hành động chuyên biệt Các lớp sử dụng để tạo nhiều đối tượng cụ thể 17/02/2016 25 Lập trình hướng đối tượng Các đặc điểm quan trọng OOP Các lớp đối tượng - Classes Đóng gói - Encapsulation Thừa kế - Inheritance Đa hình - Polymorphism 17/02/2016 26 Lập trình hướng đối tượng Trừu tượng hóa Thế giới thực Trừu tượng hóa Thuộc tính Phần mềm Dữ liệu Thực thể Hành động 17/02/2016 hàm 27 Lập trình hướng đối tượng Trừu tượng hóa Cách nhìn khái quát hóa tập đối tượng có chung đặc điểm quan tâm (và bỏ qua chi tiết không cần thiết) 17/02/2016 28 Lập trình hướng đối tượng Đóng gói – Che dấu thông tin Đóng gói: Nhóm có liên quan với vào làm một, để sau dùng tên để gọi đến Các hàm/ thủ tục đóng gói câu lệnh Các đối tượng đóng gói liệu chúng thủ tục có liên quan 17/02/2016 29 Lập trình hướng đối tượng Đóng gói – Che dấu thông tin Che dấu thông tin: đóng gói để che số thông tin chi tiết cài đặt nội để bên không nhìn thấy Che giấu mà người dùng không cần Che giấu mà cần giữ bí mật 17/02/2016 30 Lập trình hướng đối tượng Thừa kế Là chế cho phép lớp D có thuộc tính thao tác lớp C, thể thuộc tính thao tác định nghĩa lớp D Cho phép cài đặt nhiều quan hệ đối tượng: Đặc biệt hóa (“là”) Khái quát hóa 17/02/2016 31 Lập trình hướng đối tượng Đa hình Là chế cho phép tên thao tác thuộc tính định nghĩa nhiều lớp có nhiều cài đặt khác lớp lớp 17/02/2016 32 Lập trình hướng đối tượng Các ưu điểm OOP Nguyên lý kế thừa: tránh lặp, tái sử dụng Nguyên lý đóng gói – che dấu thông tin: chương trình an toàn không bị thay đổi bới đoạn chương trình khác Dễ mở rộng, nâng cấp Mô giới thực tốt 17/02/2016 33 Lập trình hướng đối tượng Các đặc tính OOP Chương trình chia thành đối tượng Các cấu trúc liệu thiết kế cho đặc tả đối tượng Các hàm thao tác vùng liệu đối tượng gắn với cấu trúc liệu 17/02/2016 34 Lập trình hướng đối tượng Các đặc tính OOP Dữ liệu đóng gói lại, che giấu không cho phép hàm ngoại lai truy nhập tự Các đối tượng tác động trao đổi thông tin với qua hàm Có thể dễ dàng bổ sung liệu hàm vào đối tượng cần thiết Chương trình thiết kế theo cách tiếp cận từ lên (bottomup) 17/02/2016 35 Lập trình hướng đối tượng Một số thuật ngữ OOP 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 (LTHĐT) Inheritance: Kế thừa Polymorphism: Đa hình Encapsulation: Tính đóng gói 17/02/2016 36 Lập trình hướng đối tượng Ngôn ngữ OOP Cung cấp khả lập trình hướng đối tượng Cung cấp khả kiểm soát truy cập Kế thừa Đa hình 17/02/2016 37 Lập trình hướng đối tượng Bài kiểm tra Viết chương trình cho phép nhập dãy phân số Cài đặt hàm tính tổng phân số tìm phân số lớn 17/02/2016 38 Lập trình hướng đối tượng Q&A [...]... tượng có chung các đặc điểm được quan tâm (và bỏ qua những chi tiết không cần thiết) 17 /02/ 2016 28 Lập trình hướng đối tượng Đó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, để sau này có thể dùng một cái tên để gọi đến 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 17 /02/ 2016 29 Lập trình hướng đối... được sử dụng để tạo ra nhiều đối tượng cụ thể 17 /02/ 2016 25 Lập trình hướng đối tượng Các đặc điểm quan trọng của OOP Các lớp đối tượng - Classes Đóng gói - Encapsulation Thừa kế - Inheritance Đa hình - Polymorphism 17 /02/ 2016 26 Lập trình hướng đối tượng Trừu tượng hóa Thế giới thực Trừu tượng hóa Thuộc tính Phần mềm Dữ liệu Thực thể Hành động 17 /02/ 2016 hàm 27 Lập trình hướng đối tượng Trừu tượng... trong lớp 17 /02/ 2016 23 Lập trình hướng đối tượng Sơ đồ lớp và sơ đồ thể hiện Tên lớp Sinh viên Thuộc tính Hành vi Họ tên Năm sinh Mã số Điểm TB Nguyễn Văn A 1984 06 1023 4T 9.2 Đi học Đi thi Phân loại Sơ đồ lớp 17 /02/ 2016 (Sinh viên) Sơ đồ thể hiện Đối tượng = Dữ liệu + Phương thức Lập trình hướng đối tượng 24 Thiết kế theo hướng đối tượng Trừu tượng hóa dữ liệu và các hàm/thủ tục liên quan Chia hệ... tượng Lập trình hướng đối tượng Trong thế giới thực, chung quanh chúng ta là những đối tượng, đó là các thực thể có mối quan hệ với nhau Ví dụ: Các phòng trong một công ty Lập trình hướng đối tượng (Object Oriented Programming – LTHĐT)? Là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình 17 /02/ 2016 15 Lập trình hướng đối tượng Lập trình Hướng đối tượng... dùng không cần Che giấu những gì mà mình cần giữ bí mật 17 /02/ 2016 30 Lập trình hướng đối tượng Thừa kế Là cơ chế cho phép một lớp D có được các thuộc tính và thao tác của lớp C, như thể các thuộc tính và thao tác đó đã được định nghĩa tại lớp D Cho phép cài đặt nhiều quan hệ giữa các đối tượng: Đặc biệt hóa (“là”) Khái quát hóa 17 /02/ 2016 31 Lập trình hướng đối tượng Đa hình Là cơ chế cho... được gọi là một thể hiện (instance) của lớp đó 17 /02/ 2016 21 Lập trình hướng đối tượng Interacting Objects Class A Class B Private: data members Private: data members Member methods Member methods Public: Constructor Public: Constructor Destructor Message passing Other public methods Destructor Other public methods Private: methods Private: methods 17 /02/ 2016 22 Lập trình hướng đối tượng Sơ đồ đối tượng... d.mon, d.year); } 17 /02/ 2016 13 Lập trình hướng đối tượng Lập trình có cấu trúc Nhược điểm? Dữ liệu và mã xử lý là tách rời Người lập trình phải biết cấu trúc dữ liệu Khi thay đổi cấu trúc dữ liệu thuật toán phải thay đổi theo Khó đảm bảo tính đúng đắn của dữ liệu Không tự động khởi tạo hay giải phóng dữ liệu động Không mô tả được đầy đủ, trung thực hệ thống trong thực tế 17 /02/ 2016 14 Lập... hơn Chương trình = Cấu trúc dữ liệu + Giải thuật 17 /02/ 2016 11 Lập trình hướng đối tượng Lập trình có cấu trúc Sử dụng các lệnh có cấu trúc: for, do, while, if then else Các ngôn ngữ: Pascal, C, Chương trình là tập các hàm/thủ tục Ưu điểm? Chương trình được module hóa, do đó dễ hiểu, dễ bảo trì hơn Dễ dàng tạo ra các thư viện phần mềm 17 /02/ 2016 12 Lập trình hướng đối tượng Lập trình có cấu... trình hướng đối tượng Lập trình Hướng đối tượng Lập trình hướng đối tượng là phương pháp lập trình dựa trên kiến trúc lớp (class) và đối tượng (object) 17 /02/ 2016 16 Lập trình hướng đối tượng Một số khái niệm cơ bản Đối tượng (object) Lớp (class) 17 /02/ 2016 17 Lập trình hướng đối tượng Một số khái niệm cơ bản Đối tượng (object): Trong thế giới thực, đối tượng được hiểu như là một thực thể: người,... tính Mỗi đối tượng bao gồm 2 thành phần: thuộc tính và thao tác (hành động) 17 /02/ 2016 18 Lập trình hướng đối tượng Một số khái niệm cơ bản Ví dụ đối tượng: một người Một người có các thuộc tính: tên, tuổi, địa chỉ, màu mắt… Các hành động: đi, nói, thở… Một đối tượng là 1 thực thể bao gồm thuộc tính và hành động 17 /02/ 2016 19 Lập trình hướng đối tượng Một số khái niệm cơ bản Lớp (class): Các