Hành vi nhìn thấy được của một đối tượng được mô hình thành một tập các thông điệp nó có thể đáp trả các thao tác mà đối tượng đó thực hiện... Bộ Môn CNPM - ĐHBK Hà Nội..[r]
(1)LẬP TRÌNH JAVA Bài 4: Tổng quan lập trình hướng đối tượng (2) Mục tiêu Kết thúc bài học bạn có thể nắm được: Giới thiệu lịch sử phát triển các ngôn ngữ lập trình Giới thiệu lập trình hướng đối tượng Các khái niệm Lập trình hướng đối tượng 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội (3) Nội dung 4.1 Giới thiệu lịch sử phát triển các ngôn ngữ lập trình 4.2 Giới thiệu lập trình hướng đối tượng 4.3 Các khái niệm Lập trình hướng đối tượng 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội (4) 4.1- Giới thiệu lịch sử NNLT a Hợp ngữ (Assembly language): Là ngôn ngữ lập trình tuần tự, gần với tập các lệnh mã máy CPU Khó nhớ, khó viết, là với bài toán phức tạp Khó sửa lỗi, bảo trì b NNLT cấu trúc/thủ tục: 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội (5) 4.1- Giới thiệu lịch sử NNLT b NNLT cấu trúc/thủ tục: Tư tưởng chính: 13/06/21 Tìm cách thể bài toán cần giải cấu trúc lập trình có các ngôn ngữ tương ứng Tập trung chủ yếu vào việc viết phần mềm dựa trên các hàm/thủ tục/chương trình Dữ liệu và các hàm xử lý liệu tách rời Các thủ tục không bắt buộc cách thức chung truy nhập vào liệu Bộ Môn CNPM - ĐHBK Hà Nội (6) 4.1- Giới thiệu lịch sử NNLT c NNLT hướng đối tượng: Giải chung số lượng lớn các bài toán Thể các thành phần bài toán là các “đối tượng” (object) 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội (7) 4.1- Giới thiệu lịch sử NNLT Lập trình cấu trúc vs OOP? Lập trình cấu trúc: data structures + algorithms = Program (cấu trúc liệu + giải thuật = Chương trình) OOP : 13/06/21 objects + messages = Program (đối tượng + thông điệp = Chương trình) Bộ Môn CNPM - ĐHBK Hà Nội (8) Nội dung 4.1 Giới thiệu lịch sử phát triển các ngôn ngữ lập trình 4.2 Giới thiệu lập trình hướng đối tượng 4.3 Các khái niệm Lập trình hướng đối tượng 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội (9) 4.2- Giới thiệu LT HĐT Lịch sử công nghệ hướng đối tượng: 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội (10) 4.2- Giới thiệu LT HĐT Đối tượng là gì? Đối tượng giới thực, ví dụ ô tô, người, khoản tiền Liên quan đến ô tô: Các thông tin xe như: màu sắc, tốc độ, số km đã được, Các hoạt động xe như: tăng tốc nhấn ga, giảm tốc đạp phanh, Các đối tượng giới thực có thể mô hình hóa các ngôn ngữ lập trình, gọi là đối tượng (object) 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 10 (11) 4.2- Giới thiệu LT HĐT Đối tượng diễn tả thực thể, có thể là vật chất, khái niệm phần mềm Thực thể vật chất Thực thể khái niệm Thực thể phần mềm 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 11 (12) 4.2- Giới thiệu LT HĐT Đối tượng là gì? Là thực thể đóng gói thành trạng thái (state) và hành vi (behavior) Trạng thái biểu diễn các thuộc tính (attributes) và các mối quan hệ (relationships) Hành vi biểu diễn các thao tác (operations), phương thức (methods) 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 12 (13) 4.2- Giới thiệu LT HĐT Một đối tượng có trạng thái Trạng thái đối tượng là các điều kiện chứng tỏ đối tượng đó tồn Trạng thái đối tượng thường thay đổi theo thời gian 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 13 (14) 4.2- Giới thiệu LT HĐT Một đối tượng có hành vi Hành vi định đối tượng đó hành động và đáp trả nào bên ngoài Hành vi nhìn thấy đối tượng mô hình thành tập các thông điệp nó có thể đáp trả (các thao tác mà đối tượng đó thực hiện) 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 14 (15) 4.2- Giới thiệu LT HĐT Một đối tượng có định danh Mỗi đối tượng có định danh nhất, dù trạng thái nó có thể giống với đối tượng khác 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 15 (16) Nội dung 4.1 Giới thiệu lịch sử phát triển các ngôn ngữ lập trình 4.2 Giới thiệu lập trình hướng đối tượng 4.3 Các khái niệm Lập trình hướng đối tượng 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 16 (17) 4.3- Các khái niệm Trừu tượng hóa (Abstraction) Đóng gói (Encapsulation) Mô đun hóa (Modularity) Tái sử dụng (Re-usability) Kế thừa (Inheritance) Đa hình (Polymophism) 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 17 (18) 4.3- Các khái niệm Trừu tượng hóa (Abstraction) Giảm lượng thông tin các thực thể, giữ lại các thông tin liên quan cho mục đích nào đó 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 18 (19) 4.3- Các khái niệm Đóng gói (Encapsulation) Đóng gói (Encapsulation) là dạng che giấu liệu (Data Hiding): 13/06/21 Cho phép quy định người sử dụng phép truy cập và sử dụng gì đã quy định cho họ Một phần lớp che giấu và không cho người sử dụng quyền truy nhập Cho phép thay đổi thiết kế bên lớp mà giao diện bên ngoài không bị thay đổi theo Không ảnh hưởng tới chương trình người sử dụng lớp này Bộ Môn CNPM - ĐHBK Hà Nội 19 (20) 4.3- Các khái niệm Mô đun hóa (Modularity) Mô đun hóa là chia hệ thống phức tạp thành phần có thể quản lý Mô đun hóa giúp ta có thể hiểu hệ thống phức tạp 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 20 (21) 4.3- Các khái niệm Mô đun hóa (Modularity) Ví dụ việc chia hệ thống phức tạp thành các hệ thống nhỏ hơn: 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 21 (22) 4.3- Các khái niệm Kế thừa (Inheritance) Khả cho phép chúng ta có thể xây dựng các lớp dựa trên các lớp đã có sẵn, cần thêm vào đó gì chưa có, gì chưa đủ Định nghĩa phân cấp các trừu tượng hóa mà các lớp kế thừa từ nhiều lớp cha Đơn kế thừa (Single Inheritance) Đa kế thừa (Multiple Inheritance) Mối quan hệ “Là”, “Là loại” 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 22 (23) 4.3- Các khái niệm Kế thừa (Inheritance) Ví dụ đơn kế thừa Một lớp kế thừa Superclass (Parent) từ lớp khác (Ancestor) Java cho phép đơn kế thừa Account + balance + name + number + withdraw () + createStatement () Generalization Relationship Checking Savings + getInterest () Subclasses (Child) (Descendants) 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 23 (24) 4.3- Các khái niệm Kế thừa (Inheritance) Ví dụ đa kế thừa Một lớp có thể kế thừa từ nhiều lớp khác C++ cho phép đa kế thừa 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 24 (25) 4.3- Các khái niệm Tái sử dụng (Re-usability) Sử dụng lại các lớp đã viết mã cách để sử dụng lại lớp: 13/06/21 Sử dụng trực tiếp các đối tượng lớp này là các biến cần thiết để giải bài toán -> Dễ Sử dụng các biến - đối tượng thuộc lớp để xây dựng nên các lớp (tức là đối tượng nằm bên lớp => Kết tập Kế thừa Bộ Môn CNPM - ĐHBK Hà Nội 25 (26) 4.3- Các khái niệm Đa hình (Polymophism) Một phương thức có các cách thể khác trên nhiều loại đối tượng khác Đa hình (Polymorphism) Tính đa hình là đặc tính quan trọng hệ thống hướng đối tượng 13/06/21 Bộ Môn CNPM - ĐHBK Hà Nội 26 (27) 4.3- Các khái niệm Đa hình (Polymophism) Ví dụ đa hình: Animal + communicate () Lion + communicate () Without Polymorphism if animal = “Lion” then Lion communicate else if animal = “Tiger” then Tiger communicate end 13/06/21 Tiger + communicate () With Polymorphism Animal communicate Bộ Môn CNPM - ĐHBK Hà Nội 27 (28)