Bài giảng Lập trình hướng đối tượng (OOP) - Chương 6: Gói và Giao diện - Văn Thị Thiên Trang

1. Giao diện (Interface) „ Giao diện là một giải pháp của Java nhằm thay thế cho đa kế thừa. „ Một giao diện là một tập các hằng, các mẫu phương thức (prototype) mà không có cài đặt chi tiết. „ Khai báo giao diện: i t f nterface { khai báo các nội dung của giao diện Ví dụ: Giao diện tính toán trên các hình. interface TinhToanHinh { public final double PI = 3.1415; double dientich(); double chuvi(); } Có thể coi giao diện như một lớp trừu tượng đặc biệt: các phương thức đều trừu tượng. „ Khai báo lớp cài đặt giao diện: phải tường minh các phương thức của giao diện. „ Cú pháp: class implements { Khai báo các thành phần của lớp Cài đặt chi tiết các phương thức của các giao diện }

pdf9 trang | Chia sẻ: candy98 | Lượt xem: 541 | 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 6: Gói và Giao diện - 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
22/01/2013 1 Chương 6. GIAO DiỆN, GÓI 1 Mục đích & yêu cầu „ Giới thiệu một thành phần cơ bản: Gói, giao diện. „ Giải thích được Gói, giao diện là gì? „ Sử dụng các thành phần này, viết một chương trình đơn giản. 2 1. Giao diện (Interface) „ Giao diện là một giải pháp của Java nhằm thay thế cho đa kế thừa. „ Một giao diện là một tập các hằng, các mẫu phương thức (prototype) mà không có cài đặt chi tiết. „ Khai báo giao diện: i t f tê i diện er ace { khai báo các nội dung của giao diện } 3 1. Giao diện (Interface) „ Ví dụ: Giao diện tính toán trên các hình. interface TinhToanHinh { public final double PI = 3.1415; double dientich(); double chuvi(); } 4 22/01/2013 2 1. Giao diện (Interface) „ Có thể coi giao diện như một lớp trừu tượng đặc biệt: các phương thức đều trừu tượng. „ Khai báo lớp cài đặt giao diện: phải tường minh các phương thức của giao diện. Cú pháp:„ class implements { Khai báo các thành phần của lớp Cài đặt chi tiết các phương thức của các giao diện } 5 1. Giao diện (Interface) „ Ví dụ: lớp hình chữ nhật cài đặt giao diện TinhToanHinh class HinhChuNhat implements TinhToanHinh{ private double dai, rong; public HinhChuNhat(double d, double r) {dai = d; rong = r;} public double chuvi(){ return dai+rong;} public double dientich(){return dai*rong;} } 6 1. Giao diện (Interface) „ Lớp hình tròn cài đặt giao diện TinhToanHinh l Hi hT i l t Ti hT Hi hc ass n ron mp emen s n oan n { private double bankinh; public HinhTron(double d) { bankinh = d;} public double chuvi() { return 2*bankinh*PI;} public double dientich() { return bankinh*bankinh*PI; } } 7 1. Giao diện (Interface) „ Lưu ý: một lớp cài đặt một giao diện thì phải cài đặt tất cả các phương thức mà giao diện khai báo (có thể là cài đặt rỗng). „ Một giao diện có thể mở rộng (kế thừa) từ một giao diện khác Î giao diện mới sẽ có đầy đủ các thành phần được khai báo trong giao diện cơ sở. 8 22/01/2013 3 1. Giao diện (Interface) „ Ví dụ: giao diện GiaoDienHinh mở rộng từ giao diện TinhToanHinh interface GiaoDienHinh extends TinhToanHinh { //khai báo các thành phần bổ sung void ve(); void xoa(); void dichuyen(int x, int y); } 9 1. Giao diện (Interface) „ Phạm vi của các thành phần trong giao diện: • Thành phần là hằng thì có phạm vi là public static final. • Thành phần là phương thức có phạm vi public. „ Sử dụng giao diện như tham chiếu: tương tự như lớp cơ sở trừu tượng, có thể dùng giao diện để tạo ra tham chiếu đến đối tượng cài đặt giao diện. „ Ví dụ: TinhToanHinh x = new HinhTron(3.0); 10 1. Giao diện (Interface) „ Ví dụ: class GiaoDien1 { public static void main(String args[]) { TinhToanHinh h; h = new HinhChuNhat(1,2); System.out.println("Chu vi HCN = " + h.chuvi()); System.out.println("Dien tich HCN = " + h.dientich()); h = new HinhTron(1); System out println("Chu vi hinh tron " + h chuvi());. . = . System.out.println("Dien tich hinh tron = "+ h.dientich()); } } 11 1. Giao diện (Interface) „ Một lớp có thể cài đặt nhiều giao diện. „ Ví dụ: class HinhTron implements TinhToanHinh, VeHinh { } 12 22/01/2013 4 1. Giao diện (Interface) „ Phân biệt giữa lớp trừu tượng và giao diện: • Lớp trừu tượng có thể chứa các thuộc tính, trong khi giao diện chỉ chứa các hằng và khai báo phương thức. • Một lớp có thể cài đặt nhiều giao diện trong khi chỉ kế thừa một lớp trừu tượng. „ Khi cần xây dựng một lớp trừu tượng không có dữ liệu và mọi phương thức đều là trừu tượng thì nên dùng giao diện để thay thế. 13 2- Gói (Package) là gì? Bài class C1 class C2 class C3 Quản lý thế nào? Phâ hó Phân tích, quản lý project toán ....... class Cn n n m theo chức năng Nhóm 1 class C1 class C2 class C3 Nhóm 2 class C1 class C2 class C3 ó Nhóm ... class C8 Nh m 2_1 class C4 class C5 Nhóm 2_2 class C6 class C7 .... class Cn Mỗi nhóm để trong một thư mụcÎ Package 14 2. Packages • Gói và điều khiển truy xuất (Packages & Access Control) Modifier private friendly protected public Cùng class YES YES YES YES Cùng gói, khác class NO YES YES YES lớp con trong cùng gói với lớp NO YES YES YES cha Khác gói, khác lớp NO NO NO YES Lớp con khác gói với lớp cha NO NO YES YES 15 Package.... „ Package: gói phần mềm. Là một nhóm các class interface các gói, , khác đã được biên dịch thành Java bytecode. „ Tổ chức của 1 package là 1 thư mục có tên là tên của package Æ Sub-package là 1 gói con (thư mục con) của 1 package mức cao hơn (giống cấu trúc thư mục). „ Gói là công cụ tạo khả năng tái sử dụng mã (reusable code). 16 22/01/2013 5 2.1 Tạo package „ Khai báo package trong code của class. „ Dùng từ khóa package „ Cú pháp: package PackageCha[.PackageCon]; „ Phài là dòng đầu tiên của code java. package PackageCha[.PackageCon]; [import OtherPackageName ;] class ClassName { ....... } Khi biên dịch thành công: - Nếu chưa có thư mục PackageName thì thư mục này sẽ được tự động tạo ra. - File.class của code này sẽ được đặt vào thư mục này. 17 2.2- Sử dụng Package „ Dùng chỉ thị import với một trong các cú pháp sau: import PackageName.*; import PackageCha.PackageCon.*; import PackageName.ClassName; import PackagCha.PackageCon.ClassName; 18 Thí dụ Tạo các „ package với cấu trúc: 19 Thí dụ... 20 22/01/2013 6 Thí dụ... 21 Thí dụ... 22 Thí dụ... Tham khảo gói java,util để biết về các lớp java làm sẵn để quản lý các loại danh sách 23 Thí dụ... import hai lớp 24 22/01/2013 7 Bài tập Bạn viết thêm: (1) Lớp FacultyList để quản lý danh sách giáo viên đưa vào gói Faculty (2) Lớp FacultyListDemo để minh họa việc quản lý danh sách giáo viên Xây dựng các gói theo thiết kế sau: public class Calculate { public static double Volume(double l, double w, double h) {return l*w*h;} public static double Add(double n1, double n2) { return n1+n2;} } public class Circle { double r; public Circle(double rr) { r=rr;} public double Circumference() { return 2*Math.PI*r;} public double Area() { return Math.PI* r*r; } } 25 Thí dụ... Sau đó, viết một chương trình sử dụng hai lớp trong hai gói này. 26 Thí dụ: Sử dụng gói tại bên trong gói Sử dụng gói mà source code nằm t ói ẽ ó bá rong g s c o lỗi Î Sử dụng gói phải ở bên ngoài gói. 27 Thí dụ: Sử dụng gói nhưng ở bên ngoài gói Gói tự tạo ầ hỉc n c định rõ import lớp nào 28 22/01/2013 8 Sử dụng gói bằng cách copy gói sang thư mục khác Chép S d l ừtu ent.c ass t thư mục StudentClasses sang Î Error 29 Sử dụng gói bằng cách copy gói sang thư mục khác Chép cả thư mục StudentClasses sang Î Error vì lớp Student tham khảo gói CommonClasses 30 Sử dụng gói bằng cách copy gói sang thư mục khác Chép cả thư mục StudentClasses lẫn CommonClasses sang ÎOK Î Chép gói thì phải chép cả thư mục chứa + các thư mục có liên quan 31 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. • 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. 32 22/01/2013 9 Thự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. 3. Thực hành bài quản lý tài liệu thư viện. 33