Bài giảng Lập trình hướng đối tượng (OOP) - Chương 5: Lớp trừu tượng - Văn Thị Thiên Trang

1. Đối tượng Object 2. Lớp trừu tượng 1. Đối tượng Object „ Đây là đối tượng cấp cao nhất của mọi lớp trong Java. Mọi lớp trong Java đều kế thừa từ lớp này. „ Đối tượng Object có một số phương thức: •public boolean equals(Object) • public String toString() 4 „ Ta có thể dùng tham chiếu của lớp Object để tham chiếu đến một đối tượng thuộc lớp bất kỳ. • Ví dụ: Object o = new SinhVien(…);

pdf7 trang | Chia sẻ: candy98 | Lượt xem: 562 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Lập trình hướng đối tượng (OOP) - Chương 5: Lớp trừu tượng - Văn Thị Thiên Trang, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Chương 5: LỚP TRỪU TƯỢNG 1 Mục đích & yêu cầu „ Giới thiệu một thành phần cơ bản: Đối tượng Object, Lớp trừu tượng, gói, giao diện. „ Giải thích được lớp trừu tượng là gì, Gói, giao diện là gì? 2 „ Sử dụng các thành phần này, viết một chương trình đơn giản. Nội dung chính 1. Đối tượng Object 2. Lớp trừu tượng 3 1. Đối tượng Object „ Đây là đối tượng cấp cao nhất của mọi lớp trong Java. Mọi lớp trong Java đều kế thừa từ lớp này. „ Đối tượng Object có một số phương thức: • public boolean equals(Object) • public String toString() 4 „ Ta có thể dùng tham chiếu của lớp Object để tham chiếu đến một đối tượng thuộc lớp bất kỳ. • Ví dụ: Object o = new SinhVien(); 22- Lớp trừu tượng „ Lớp trừu tượng là gì? • Xem kết qủa của việc khái quát hóa sau: class ANIMAL void Travel(); Bạn có hình dung nổi một ANIMAL di chuyển như thế nào không? Không Î Trừu tượng 5 class Bird void Travel() class Fish void Travel() class Snake void Travel()Bạn có hình dung nổi một đối tượng thuộc các lớp này di chuyển như thế nào không? Có Î cụ thể „ Là kết qủa của việc khái quát hóa cao đến nỗi 2 - Lớp trừu tượng không biết viết code thế nào. „ Là lớp có những hành vi chỉ khai báo mà không viết code. Để dành code cụ thể sẽ được hiện thực ở các lớp dẫn xuất ( lớp cụ thể hơn). Tư duy tự nhiên: 6 „ • Từ các đối tượng cụ thể Î Lớp cụ thể. • Từ các lớp cụ thể có cùng tính chất Î lớp trừu tượng. 2 - Lớp trừu tượng „ Phương thức trừu tượng là phương thức khô ài đặ hi iếng c t c t t. „ Khai báo PTTT: abstract ; „ Ví dụ: khai báo phương thức duocTN() 7 của lớp SV. abstract boolean duocTN(); 2 - Lớp trừu tượng „ Lớp trừu tượng là lớp chứa ít nhất một PTTT. ớ ừ dù để là ở đ h hĩ„ L p tr u tượng ng m cơ s ịn ng a các lớp khác. „ Khai báo lớp trừu tượng: abstract class { 8 khai báo các thành phần của lớp } 32 - Lớp trừu tượng „ Ví dụ: khai báo lớp trừu tượng SV abstract class SV { abstract public boolean duocTN(); } „ Lưu ý: không thể tạo đối tượng từ lớp trừu 9 tượng. „ Ví dụ: không thể tạo đối tượng từ lớp SV SV s = new SV(); Æ sai 2 - Lớp trừu tượng „ Lớp kế thừa từ lờp trừu tượng phải khai báo tường minh các PTTT nếu không cũng là lớp trừu tượng. „ Ví dụ: khai báo lớp SVSP kế thừa từ lớp SV 10 class SVSP extends SV{ public boolean duocTN(){} } 2 - Lớp trừu tượng „ Ví dụ: lớp sinh viên tại chức (SVTC) kế thừ từ lớ SV là lớ t ừ tượa p , p r u ng. abstract class SVTC extends SV { Protected String noiCT; 11 //abstract public boolean duocTN(); } 2 - Lớp trừu tượng Hành vi không có chỉ thị abstract thì phải có code 12 Có hành vi abstract mà lớp không có chỉ thị abstract 4Ch hể iế d ì l 1 ời 2 - Lớp trừu tượng ưa t v t co e v ương ngư = lương cơ bản * hệ số 13 5.3- Đặc điểm của lớp trừu tượng. „ Không thể khởi tạo một đối tượng thuộc lớp trừu tượng (abstract) mà chỉ khởi 14 tạo đối tượng thuộc lớp cụ thể (concrete). 2 - Lớp trừu tượng Vì biến đối tượng là tham khảo chỉ đến đối tượng nên một biến thuộc lớp 15 cha nhưng lại chỉ đến một lớp con là lớp trừ tượng hoặc là lớp cụ thề. ĐÂY LÀ CÁCH DÙNG TÍNH ĐA HÌNH TRONG OOP • Lớp con cũng là lớp trừu tượng 2 - Lớp trừu tượng 16 Biến lớp ông chỉ đến đối tượng lớp cháu 52 - Lớp trừu tượng 17 Chú ý về kết hợp abstract với các chỉ thị khác 2.2 Ví dụ „ Ví dụ: xây dựng các lớp tính diện tích các hình: tròn, tam giác, chữ nhật. „ Chương trình minh họa gồm một mảng các đối tượng và tính tổng diện tích của các hình trong mảng. 18 Lớp HINH abstract class HINH { abstract double dienTich(); } 19 Lớp HinhTron class HinhTron extends HINH { double bk; public HinhTron(double b){ bk = b;} public double dienTich() { 20 return bk*bk*Math.PI; } } 6Lớp HinhCN class HinhCN extends HINH { double dai,rong; public HinhCN(double d, double r) { dai = d; rong = r;} public double dienTich() 21 { return dai*rong; } } Lớp TamGiac class TamGiac extends HINH { double c1,c2,c3; public TamGiac(double a, double b, double c) { c1 = a; c2 = b; c3 = c;} public double dienTich() { 22 double p = (c1+c2+c3)/2 return Math.sqrt(p*(p-c1)*(p-c2)*(p-c3)); } } Lớp DTHINH class DTHINH { public static void main(String args[]) { HINH ds[]=new HINH[5]; ds[0]=new HinhTron(1.3); ds[1]=new TamGiac(3,4,5); ds[2]=new HinhCN(2,5); ds[3]=new HinhTron(3.0); ds[4]=new HinhCN(4 3); 23 , //Tính tổng diện tích các hình double tongDT=0; for(int i=0;i<5;i++) tongDT+=ds[i].dienTich(); System.out.println(“Tong dien tich ”+ tongDT); } } Bài tập Quản lý tài liệu ở thư viện „ Một thư viện gồm các loại tài liệu sau: • Sách(Mã sách, Tên Sách, Tác giả, NXB, Năm XB, Vị trí) • Tạp chí (Mã tạp chí, Tên tạp chí, Chuyên ngành, Số, Năm, Vị trí) • CD(Mã CD, Tên CD, Số thứ tự, Nội dung, Vị trí) „ Hãy tổ chức các lớp sao cho có thể lập trình để thực hiện được các chức năng sau: • Lưu danh sách các tài liệu có trong thư viện. • Liệt kê toàn bộ tài liệu có trong thư viện. 24 • Liệt kê từng loại tài liệu có trong thư viện. • Xem thông tin về tài liệu khi biết mã tài liệu. • Tìm kiếm một tài liệu theo: Tên và tác giả đối với sách; Tên tạp chí, Chuyên ngành, số, năm đối với tạp chí, Tên CD, Số thứ tự và nội dung đối với CD. 7Thực hành 1. Thực hành bài quản lý danh sách nhân iê bằ 2 á hv n ng c c : • Không dùng lớp trừu tượng. • Dùng lớp trừu tượng. 2. Thực hành bài DTHINH cài đặt bằng giao diện 25 . 3. Thực hành bài quản lý tài liệu thư viện.