intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Object-Oriented programming: Chương 6 - Văn Thị Thiên Trang

Chia sẻ: Nhân Chi Sơ | Ngày: | Loại File: PDF | Số trang:9

26
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Chương 6 – Gói và giao diện. Chương này 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. Mời các bạn cùng tham khảo để tìm hiểu thêm các nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Object-Oriented programming: Chương 6 - Văn Thị Thiên Trang

22/01/2013<br /> <br /> Mục đích & yêu cầu<br /> <br /> Chương 6.<br /> <br /> Giới thiệu một thành phần cơ bản: Gói, giao<br /> bản:<br /> <br /> GIAO DiỆN, GÓI<br /> <br /> diện.<br /> diện.<br /> Giải thích được Gói, giao diện là gì?<br /> Sử dụng các thành phần này, viết một chương<br /> trình đơn giản.<br /> giản.<br /> <br /> 1<br /> <br /> 2<br /> <br /> 1. Giao diện (Interface)<br /> <br /> 1. Giao diện (Interface)<br /> Ví dụ: Giao diện tính toán trên các hình.<br /> dụ:<br /> hình.<br /> <br /> Giao diện là một giải pháp của Java nhằm<br /> thay thế cho đa kế thừa.<br /> thừa.<br /> Một giao diện là một tập các hằng, các<br /> mẫu phương thức (prototype) mà không<br /> có cài đặt chi tiết.<br /> tiết.<br /> Khai báo giao diện:<br /> diện:<br /> <br /> interface TinhToanHinh<br /> {<br /> public final double PI = 3.1415;<br /> 1415;<br /> double dientich();<br /> dientich();<br /> double chuvi();<br /> chuvi();<br /> }<br /> <br /> interface <br /> {<br /> khai báo các nội dung của giao diện<br /> }<br /> 3<br /> <br /> 4<br /> <br /> 1<br /> <br /> 22/01/2013<br /> <br /> 1. Giao diện (Interface)<br /> Có thể coi giao diện như một lớp<br /> tượng đặc biệt: các phương thức đều<br /> biệt:<br /> tượng.<br /> tượng.<br /> Khai báo lớp cài đặt giao diện:<br /> diện:<br /> tường minh các phương thức của<br /> diện.<br /> diện.<br /> Cú pháp:<br /> pháp:<br /> <br /> 1. Giao diện (Interface)<br /> trừu<br /> trừu<br /> <br /> Ví dụ: lớp hình chữ nhật cài đặt giao diện<br /> dụ:<br /> TinhToanHinh<br /> class HinhChuNhat implements TinhToanHinh{<br /> <br /> phải<br /> giao<br /> <br /> private double dai, rong;<br /> public HinhChuNhat(double d, double r)<br /> {dai = d; rong = r;}<br /> <br /> class implements <br /> <br /> public double chuvi(){ return dai+rong;}<br /> <br /> {<br /> <br /> public double dientich(){return dai*rong;}<br /> <br /> Khai báo các thành phần của lớp<br /> Cài đặt chi tiết các phương thức của các giao diện<br /> }<br /> <br /> }<br /> 5<br /> <br /> 1. Giao diện (Interface)<br /> <br /> 6<br /> <br /> 1. Giao diện (Interface)<br /> <br /> Lớp hình tròn cài đặt giao diện TinhToanHinh<br /> class Hi hT<br /> l<br /> HinhTron i l<br /> implements Ti hT<br /> t TinhToanHinh<br /> Hi h<br /> {<br /> <br /> Lưu ý: một lớp cài đặt một giao diện thì<br /> phải cài đặt tất cả các phương thức mà<br /> giao diện khai báo (có thể là cài đặt<br /> <br /> private double bankinh;<br /> public HinhTron(double d) { bankinh = d;}<br /> public<br /> double<br /> chuvi()<br /> {<br /> return<br /> 2*bankinh*PI;}<br /> public double dientich()<br /> { return bankinh*bankinh*PI; }<br /> <br /> rỗng).<br /> rỗng).<br /> Một giao diện có thể mở rộng (kế thừa) từ<br /> một giao diện khác<br /> <br /> giao diện mới sẽ có<br /> <br /> đầy đủ các thành phần được khai báo trong<br /> giao diện cơ sở.<br /> sở.<br /> <br /> }<br /> 7<br /> <br /> 8<br /> <br /> 2<br /> <br /> 22/01/2013<br /> <br /> 1. Giao diện (Interface)<br /> <br /> 1. Giao diện (Interface)<br /> <br /> Ví dụ: giao diện GiaoDienHinh mở rộng từ<br /> giao diện TinhToanHinh<br /> interface GiaoDienHinh extends TinhToanHinh<br /> {<br /> //khai báo các thành phần bổ sung<br /> void ve();<br /> void xoa();<br /> void dichuyen(int x, int y);<br /> }<br /> <br /> Phạm vi của các thành phần trong giao diện:<br /> diện:<br /> • Thành phần là hằng thì có phạm vi là public<br /> static final.<br /> final.<br /> • Thành phần là phương thức có phạm vi public.<br /> public.<br /> <br /> Sử dụng giao diện như tham chiếu: tương tự<br /> chiếu:<br /> như lớp cơ sở trừu tượng, có thể dùng giao<br /> diện để tạo ra tham chiếu đến đối tượng cài<br /> đặt giao diện.<br /> diện.<br /> Ví dụ:<br /> dụ:<br /> TinhToanHinh x = new HinhTron(3.0);<br /> <br /> 9<br /> <br /> 1. Giao diện (Interface)<br /> <br /> 10<br /> <br /> 1. Giao diện (Interface)<br /> <br /> Ví dụ:<br /> <br /> class GiaoDien1<br /> {<br /> public static void main(String args[])<br /> {<br /> TinhToanHinh h;<br /> h = new HinhChuNhat(1,2);<br /> System.out.println("Chu vi HCN = " + h.chuvi());<br /> System.out.println("Dien tich HCN = " + h.dientich());<br /> h = new HinhTron(1);<br /> System.out.println("Chu<br /> System out println("Chu vi hinh tron = " + h chuvi());<br /> h.chuvi());<br /> System.out.println("Dien tich hinh tron = "+ h.dientich());<br /> }<br /> }<br /> <br /> 11<br /> <br /> Một lớp có thể cài đặt nhiều giao diện.<br /> diện.<br /> Ví dụ:<br /> dụ:<br /> class HinhTron implements TinhToanHinh,<br /> VeHinh<br /> {…}<br /> <br /> 12<br /> <br /> 3<br /> <br /> 22/01/2013<br /> <br /> 2- Gói (Package) là gì?<br /> <br /> 1. Giao diện (Interface)<br /> <br /> Phân tích, quản lý<br /> project<br /> <br /> Phân biệt giữa lớp trừu tượng và giao diện:<br /> diện:<br /> • Lớp trừu tượng có thể chứa các thuộc tính, trong khi giao<br /> <br /> Bài<br /> toán<br /> <br /> diện chỉ chứa các hằng và khai báo phương thức.<br /> thức.<br /> • Một lớp có thể cài đặt nhiều giao diện trong khi chỉ kế thừa<br /> một lớp trừu tượng.<br /> tượng.<br /> <br /> Khi cần xây dựng một lớp trừu tượng không có dữ<br /> <br /> class C1<br /> class C2<br /> class C3<br /> .......<br /> class Cn<br /> <br /> Nhóm 1<br /> class C1<br /> class C2<br /> class C3<br /> <br /> liệu và mọi phương thức đều là trừu tượng thì nên<br /> Mỗi nhóm để trong<br /> một thư mục<br /> Package<br /> <br /> dùng giao diện để thay thế.<br /> thế.<br /> <br /> Quản lý thế nào?<br /> Phâ nhóm<br /> Phân hó<br /> theo chức năng<br /> <br /> Nhóm 2<br /> class C1<br /> class C2<br /> class C3<br /> Nhóm 2_1<br /> ó<br /> class C4<br /> class C5<br /> Nhóm 2_2<br /> class C6<br /> class C7<br /> <br /> Nhóm ...<br /> class C8<br /> ....<br /> class Cn<br /> <br /> 13<br /> <br /> 14<br /> <br /> Package....<br /> <br /> 2. Packages<br /> <br /> Package:<br /> Package: gói phần mềm.<br /> mềm.<br /> Là một nhóm các class interface các gói<br /> class, interface,<br /> khác đã được biên dịch thành Java<br /> bytecode.<br /> bytecode.<br /> Tổ chức của 1 package là 1 thư mục có<br /> tên là tên của package<br /> <br /> • Gói và điều khiển truy xuất (Packages &<br /> Access Control)<br /> Modifier<br /> <br /> private<br /> <br /> friendly<br /> <br /> protected<br /> <br /> public<br /> <br /> Cùng class<br /> <br /> YES<br /> <br /> YES<br /> <br /> YES<br /> <br /> YES<br /> <br /> Cùng gói, khác<br /> class<br /> <br /> NO<br /> <br /> YES<br /> <br /> YES<br /> <br /> YES<br /> <br /> lớp con trong<br /> cùng gói với lớp<br /> cha<br /> <br /> NO<br /> <br /> YES<br /> <br /> YES<br /> <br /> YES<br /> <br /> Khác gói, khác<br /> lớp<br /> <br /> NO<br /> <br /> NO<br /> <br /> NO<br /> <br /> YES<br /> <br /> Lớp con khác<br /> gói với lớp cha<br /> <br /> NO<br /> <br /> NO<br /> <br /> YES<br /> <br /> YES<br /> <br /> SubSub-package là 1 gói con (thư mục con) của 1<br /> package mức cao hơn (giống cấu trúc thư<br /> mục).<br /> mục).<br /> <br /> Gói là công cụ tạo khả năng tái sử dụng<br /> mã (reusable code).<br /> code).<br /> 15<br /> <br /> 16<br /> <br /> 4<br /> <br /> 22/01/2013<br /> <br /> 2.1 Tạo package<br /> <br /> 2.22.2- Sử dụng Package<br /> <br /> Khai báo package trong code của class.<br /> class.<br /> Dùng từ khóa package<br /> Cú pháp: package PackageCha[.PackageCon];<br /> pháp:<br /> PackageCha[ PackageCon];<br /> Phài là dòng đầu tiên của code java.<br /> java.<br /> <br /> Dùng chỉ thị import với một trong các cú<br /> pháp sau:<br /> sau:<br /> import<br /> import<br /> import<br /> p<br /> import<br /> <br /> package PackageCha[.PackageCon];<br /> PackageCha[.PackageCon];<br /> [import OtherPackageName ;]<br /> class ClassName<br /> Khi biên dịch thành công:<br /> { .......<br /> - Nếu chưa có thư mục PackageName<br /> thì thư mục này sẽ được tự động tạo ra.<br /> }<br /> <br /> PackageName.*;<br /> PackageName.<br /> PackageCha.PackageCon.*;<br /> PackageCha.PackageCon.<br /> PackageName.ClassName;<br /> PackageName.ClassName;<br /> g<br /> PackagCha.PackageCon.ClassName;<br /> PackagCha.PackageCon.ClassName;<br /> <br /> - File.class của code này sẽ được đặt vào<br /> thư mục này.<br /> 17<br /> <br /> Thí dụ<br /> <br /> 18<br /> <br /> Thí dụ...<br /> <br /> Tạo các<br /> package<br /> với cấu<br /> trúc:<br /> <br /> 19<br /> <br /> 20<br /> <br /> 5<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2