Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 104 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
104
Dung lượng
2,67 MB
Nội dung
CHƯƠNG VI TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG I II III IV V VI Khái niệm Các nguyên lý Khai báo lớp đối tượng Sử dụng đối tượng Kết tập kế thừa Đa hình I Khái niệm • Đối tượng giới thực – Ví dụ tơ • 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, Đối tượng giới thực Một đối tượng giới thực thực thể cụ thể mà thơng thường sờ, nhìn thấy hay cảm nhận Tất có trạng thái (state) hành động (behaviour) Đối tượng phần mềm Các đối tượng phần mềm dùng để biểu diễn đối tượng giới thực Cũng có trạng thái hành động Trạng thái: thuộc tính (attribute; property) Hành động: phương thức (method) Đối tượng Đối tượng phần mềm Đối tượng (object) thực thể phần mềm bao bọc thuộc tính phương thức liên quan Đối tượng phần mềm Xe Đạp Thuộc tính xác định giá trị cụ thể gọi thuộc tính thể Một đối tượng cụ thể gọi thể Mơ hình hóa đối tượng Car Tom House Reality Tree Object-oriented modeling Model House drives lives in Car Tree Tom Tương tác đối tượng • Sự giao tiếp đối tượng giới thực: • Các đối tượng tương tác chúng lập trình – Các đối tượng giao tiếp với cách gửi thông điệp (message) Gọi hàm vs Gửi thông điệp • Gọi hàm (Call function) – Chỉ xác đoạn mã thực – Chỉ có thực thi hàm với tên – Khơng có hai hàm trùng tên • Gửi thơng điệp – u cầu dịch vụ từ đối tượng đối tượng định cần phải làm – Các đối tượng khác có cách thực thi thơng điệp theo cách khác Thông điệp vs Phương thức • Thông điệp – Được gửi từ đối tượng đến đối tượng kia, không bao gồm đoạn mã thực thực thi • Phương thức – Thủ tục/hàm ngơn ngữ lập trình cấu trúc – Là thực thi dịch vụ yêu cầu thông điệp – Là đoạn mã thực thi để đáp ứng thông điệp gửi đến cho đối tượng Hướng cấu trúc vs Hướng ĐT? • Hướng cấu trúc: – data structures + algorithms = Program • Hướng đối tượng: – objects + messages = program 10 class TuGiac { TuGiac Diem private Diem d1, d2; private Diem d3, d4; public TuGiac(Diem p1, Diem p2, Diem p3, Diem p4){ d1 = p1; d2 = p2; d3 = p3; d4 = p4; } public TuGiac(){ d1 = new Diem(); d2 = new Diem(0,1); d3 = new Diem (1,1); d4 = new Diem (1,0); } public void printTuGiac(){ d1.printDiem(); d2.printDiem(); d3.printDiem(); d4.printDiem(); System.out.println(); } } 90 public class Test { public static void main(String arg[]) { Diem d1 = new Diem(2,3); Diem d2 = new Diem(4,1); Diem d3 = new Diem (5,1); Diem d4 = new Diem (8,4); TuGiac tg1 = new TuGiac(d1, d2, d3, d4); TuGiac tg2 = new TuGiac(); tg1.printTuGiac(); tg2.printTuGiac(); } } 91 2.4 Thứ tự khởi tạo kết tập • Khi đối tượng tạo mới, thuộc tính đối tượng phải khởi tạo gán giá trị tương ứng • Các đối tượng thành phần khởi tạo trước Các phương thức khởi tạo lớp đối tượng thành phần thực trước 92 Kế thừa • Ví dụ: – Điểm • Tứ giác gồm điểm Kết tập – Tứ giác • Hình vng Kế thừa 93 Bản chất kế thừa • Kế thừa (Inherit, Derive) – Tạo lớp cách phát triển lớp có – Lớp kế thừa có lớp cũ phát triển tính • Lớp cũ: – Lớp cha (parent, superclass), lớp sở (base class) • Lớp mới: – Lớp (child, subclass), lớp dẫn xuất (derived class) 94 Bản chất kế thừa (2) • Lớp – Là loại (is-a-kind-of) lớp cha – Tái sử dụng cách kế thừa thành phần liệu hành vi lớp cha – Chi tiết hóa cho phù hợp với mục đích sử dụng • Extension: Thêm thuộc tính/hành vi • Redefinition (Method Overriding): Chỉnh sửa lại hành vi kế thừa từ lớp cha 95 Cây phân cấp kế thừa (Inheritance hierarchy) A • Cấu trúc phân cấp hình cây, biểu diễn mối quan hệ kế thừa lớp B • Dẫn xuất trực tiếp – B dẫn xuất trực tiếp từ A Vehicle • Dẫn xuất gián tiếp C – C dẫn xuất gián tiếp từ A Car SportCar Moto Compact SportMoto 96 Ví dụ • • • Các lớp có lớp cha gọi anh chị em (siblings) Thành viên kế thừa kế thừa xuống phân cấp Lớp kế thừa tất lớp tổ tiên Trong gói java.lang, lớp không định nghĩa lớp lớp khác mặc định lớp trực tiếp lớp Object. Lớp Object lớp gốc tất phân cấp kế thừa Hình Hình hai chiều Hình trịn Tứ giác Hình ba chiều Tam giác Hình cầu Hình lăng trụ Tứ diện 97 So sánh kết tập kế thừa • Giống – Đều kỹ thuật OOP để tái sử dụng mã nguồn • Khác nhau? 98 Phân biệt kế thừa kết tập • Kết tập tái sử dụng thông qua đối tượng – Tạo lớp tập hợp đối tượng lớp có – Lớp tồn thể sử dụng liệu hành vi thông qua đối tượng thành phần • Quan hệ “là phần” (“is a part of”) • Ví dụ: Bánh xe phần Ơ tơ • Kế thừa tái sử dụng thơng qua lớp – Tạo lớp cách phát triển lớp có – Lớp kế thừa liệu hành vi lớp cha • Quan hệ “là loại” (“is a kind of”) • Ví dụ: Ơ tô loại phương tiện vận tải 99 VI ĐA HÌNH Khái niệm Up casting down casting Liên kết động Khái niệm • Các lớp khác đáp ứng danh sách thơng điệp giống nhau, cung cấp dịch vụ giống ▫ Cách thức đáp ứng thông điệp, thực dịch vụ khác ▫ Chúng tráo đổi cho mà không ảnh hưởng đến đối tượng gửi thơng điệp Đa hình 101 Khái niệm • Polymorphism: Nhiều hình thức thực hiện, nhiều kiểu tồn • Đa hình lập trình – Đa hình phương thức: • Phương thức trùng tên, phân biệt danh sách tham số – Đa hình đối tượng • Nhìn nhận đối tượng theo nhiều kiểu khác • Các đối tượng khác đáp ứng chung danh sách thơng điệp có giải nghĩa thơng điệp theo cách thức khác 102 Up casting Down casting • Nhìn nhận đối tượng theo nhiều kiểu khác nhau: – Up casting: nhìn nhận đối tượng thuộc lớp dẫn xuất đối tượng thuộc lớp sở Tự động ép kiểu – Down casting: nhìn nhận đối tượng thuộc lớp sở đối tượng thuộc lớp dẫn xuất LTV phải ép kiểu public class Test3 { public static void main(String args[]){ Person p1 = new Employee(); Person p2 = new Manager(); } } Employee e = (Employee) p1; Manager m = (Manager) p2; 103 Liên kết động • Các đối tượng khác giải nghĩa thông điệp theo cách thức khác – Lời gọi phương thức định thực (run-time) • Late binding/Run-time binding • Lựa chọn phiên phương thức phù hợp với đối tượng gọi • Ví dụ: Person p1 = new Person(); Person p2 = new Employee(); Person p3 = new Manager(); // System.out.println(p1.getDetail()); System.out.println(p2.getDetail()); System.out.println(p3.getDetail()); 104