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

Bài giảng Cấu trúc dữ liệu: Chương 2 - Nguyễn Xuân Vinh

Chia sẻ: Xaydung K23 | Ngày: | Loại File: PPTX | Số trang:38

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

Bài giảng Cấu trúc dữ liệu - Chương 2: Java generics giới thiệu về generic, generic trong Java, lớp generic, phương thức generic, giới hạn (bound) của các biến kiểu (Type variables), wildcard, generic và máy ảo java, các lớp generic collection, hạn chế của generic, kết luận và bài tập.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Cấu trúc dữ liệu: Chương 2 - Nguyễn Xuân Vinh

  1. GV: NGUYỄN XUÂN VINH CẤU TRÚC DỮ LIỆU DATA STRUCTURES [214331] JAVA GENERICS MÔN: CẤU TRÚC DỮ LIỆU Source: Nguyễn Văn Khiêm 6/12/14 /XX 1
  2. Nội dung chính GV: NGUYỄN XUÂN VINH • Giới thiệu về Generic. • Generic trong Java. • Lớp Generic. • Phương thức Generic. MÔN: CẤU TRÚC DỮ LIỆU • Giới hạn (bound) của các biến kiểu (Type variables). • Wildcard. • Generic và Máy ảo Java. • Các lớp Generic Collection. • Hạn chế của Generic. • Kết luận. 6/12/14 • Bài tập. /XX 2
  3. Giới thiệu về Generic GV: NGUYỄN XUÂN VINH • Lập trình Generic được đề xướng bởi ngôn ngữ Ada năm 1983. • Cho phép các giải thuật có thể dựa trên các kiểu được xác định sau, và các kiểu này sẽ được thể hiện khi cần thiết. MÔN: CẤU TRÚC DỮ LIỆU • Định nghĩa các kiểu ở mức trừu tượng. • Các kiểu này có thể được thay thế bằng nhiều kiểu cụ thể (class, interface) khác khi sử dụng. • Hiện nay Generic có trong Ada, Java, Template trong C++, C#, Visual Basic, .Net, Eiffel và Haskell 6/12/14 /XX 3
  4. 4 /XX 6/12/14 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH • Trước jdk1.5: Generic trong Java
  5. JDK 1.4 GV: NGUYỄN XUÂN VINH • Trước jdk1.5: MÔN: CẤU TRÚC DỮ LIỆU Phải ép  kiểu Ném ngoại  6/12/14 lệ khi chạy /XX 5
  6. GV: NGUYỄN XUÂN VINH Một giải pháp tồi • Chúng ta có thể tạo class sau chỉ để chứa danh sách Student: class StudentList { void add(Student element) { ... } Student remove(int index) { ... } MÔN: CẤU TRÚC DỮ LIỆU } Nhưng, khi cần một danh sách chỉ chứa đối tượng Teacher? Copy-paste? 6/12/14 /XX 6
  7. Generic trong Java (tt) GV: NGUYỄN XUÂN VINH Sử dụng  Generic • Từ jdk1.5: MÔN: CẤU TRÚC DỮ LIỆU Lỗi ngay khi  biên dịch Không phải  ép kiểu 6/12/14 /XX 7
  8. 8 /XX 6/12/14 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH • Lớp Generic Là lớp với một hoặc nhiều biến kiểu.
  9. Lớp Generic GV: NGUYỄN XUÂN VINH • Là lớp với một hoặc nhiều biến kiểu. Các biến kiểu khai  báo cách nhau bởi  dấu phẩy MÔN: CẤU TRÚC DỮ LIỆU 6/12/14 /XX 9
  10. Lớp Generic GV: NGUYỄN XUÂN VINH • Là lớp với một hoặc nhiều biến kiểu. Các biến kiểu khai  báo cách nhau bởi  dấu phẩy MÔN: CẤU TRÚC DỮ LIỆU Sử dụng các biến  kiểu để khai báo  thuộc tính 6/12/14 /XX 10
  11. Lớp Generic(tt) GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU Lỗi biên dịch Không cần ép  kiểu, không cần  bắt ngoại lệ 6/12/14 /XX 11
  12. Phương thức Generic GV: NGUYỄN XUÂN VINH • Ta có thể định nghĩa một phương thức với các tham số kiểu ngay trong một lớp bình thường hoặc một lớp Generic. MÔN: CẤU TRÚC DỮ LIỆU 6/12/14 Lỗi biên dịch /XX 12
  13. Giới hạn của các kiểu biến GV: NGUYỄN XUÂN VINH Làm thế nào để first luôn nhỏ hơn second? MÔN: CẤU TRÚC DỮ LIỆU 6/12/14 /XX 13
  14. 14 /XX 6/12/14 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giới hạn của các kiểu biến (tt) Giải pháp?
  15. Giới hạn của các kiểu biến (tt) GV: NGUYỄN XUÂN VINH Làm sao để T có thể được so sánh? MÔN: CẤU TRÚC DỮ LIỆU Lỗi biên dịch 6/12/14 /XX 15
  16. Giới hạn của các kiểu biến (tt) GV: NGUYỄN XUÂN VINH • Cần phải giới hạn T trong Interface Comparable. Giới hạn T MÔN: CẤU TRÚC DỮ LIỆU 6/12/14 /XX 16
  17. Giới hạn của các kiểu biến (tt) GV: NGUYỄN XUÂN VINH • Một kiểu biến có thể có nhiều giới hạn. MÔN: CẤU TRÚC DỮ LIỆU Giới hạn T  vừa có thể so  sánh, vừa có  thể sao chép 6/12/14 /XX 17
  18. Wildcard GV: NGUYỄN XUÂN VINH • Java cho phép sử dụng các Wildcard để xác định biên của kiểu tham số Generic. MÔN: CẤU TRÚC DỮ LIỆU • Được sử dụng khi: Ø Không biết kiểu Generic là gì. Ø Các kiểu Generic được khai báo nhưng không được sử dụng. Ø Chúng ta muốn kiểu Generic là “read-only”. 6/12/14 /XX 18
  19. GV: NGUYỄN XUÂN VINH Bounded Wildcards • Upper bound (Wildcard biên trên) – List any items 6/12/14 • So, it can contain any things. /XX 19
  20. GV: NGUYỄN XUÂN VINH Josh Bloch’s Bounded Wildcards Rule • The rule is: PECS (Producer-Extends, Comsumer-Super) – Use
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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