Bài giảng Lập trình hướng đối tượng: Chương 6 - Châu Thị Bảo Hà

23 7 0
Bài giảng Lập trình hướng đối tượng: Chương 6 - Châu Thị Bảo Hà

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 6 của bài giảng Lập trình hướng đối tượng cung cấp cho người học những kiến thức về lập trình Generic. Mục tiêu của chương này nhằm giúp người học: Trình bày được mục đích của lập trình Generic, có thể hiện thực các lớp và các phương thức Generic, trình bày được mối quan hệ giữa các kiểu Generic và kế thừa. Mời các bạn cùng tham khảo.

Chương LẬP TRÌNH GENERIC Mục tiêu • • • Trình bày mục đích lập trình Generic Có thể thực lớp phương thức Generic Trình bày mối quan hệ kiểu Generic kế thừa Nội dung 6.1 Đặt vấn đề 6.2 Mục đích Generic 6.3 Generics mức lớp 6.4 Generics mức phương thức 6.5 Sử dụng Type Bounds 6.6 Sử dụng Wildcard Generic 6.7 Generics xử lý ngoại lệ 6.8 Thừa kế Generic 6.1 Đặt vấn đề • Trước có JDK 5.0, người lập trình đưa đối tượng vào Collection, ví dụ: List myList = new ArrayList(10); myList.add(new Integer(10)); myList.add("Hello, World"); • Do đó, muốn lấy đối tượng, người lập trình phải dùng tốn tử ép kiểu, ví dụ: Integer myInt = (Integer)myList.get(0); 6.1 Đặt vấn đề • • Nếu người lập trình vơ ý chuyển đổi sai kiểu, chương trình thực thi xảy ngoại lệ Có thể khắc phục cách dùng tốn tử instance of, ví dụ: Iterator listItor = myList.iterator(); while (listItor.hasNext()) { { Object myObject = listItor.next(); Integer myInt; if (myObject instanceof Integer) { myInt = (Integer)myObject; } } 6.2 Mục đích Generics • • • • JDK 5.0 cung cấp chuyển đổi an tồn kiểu lúc biên dịch cho Collections Framework thơng qua Generic Generic cho phép người lập trình xác định trước loại đối tượng muốn lưu Collection Do đó, khơng cần phải ép kiểu lấy đối tượng Và có phép gán sai kiểu, trình biên dịch phát sinh lỗi Ví dụ: 6.3 Generic mức lớp • • • Lớp Generic chế để rõ mối quan hệ lớp kiểu liệu liên quan đến - type parameter Các type parameter xác định thời điểm đối tượng lớp tạo Quy ước tên type parameter o Viết hoa, dùng chữ • • • • • E – Element K – Key N – Number Type parameter T – Type V – Value public class GenericClass { // class body… } 6.3 Generic mức lớp • Trong class Collection Framework cài đặt generic, ví dụ kiểu generic lớp ArrayList viết sau: 6.3 Generic mức lớp • Ví dụ: Tạo lớp Generic 6.3 Generic mức lớp • Ví dụ: Tạo lớp Generic 10 6.4 Generic mức phương thức • Thích hợp cho phương thức overloading 6.4 Generic mức phương thức • • Generic mức phương thức phạm vi kiểu liệu giới hạn phương thức Cú pháp: o o • Các type parameter khai báo phạm vi phương thức Type parameter phải rõ trước kiểu liệu trả phương thức đặt cặp dấu Có thể dùng tham số kiểu cho: o o o Các tham số phương thức Dữ liệu trả Biến cục 12 6.4 Generic mức phương thức • Ví dụ: Output 13 6.5 Sử dụng Type Bounds • Ví dụ: public static T min(T[] array) { public static T min(T[] array) { T = array[0]; T = array[0]; for (int i = 1; i < array.length; i++) { for (int i = 1; i < array.length; i++) { if (min.compareTo(array[i]) > 0) if (min.compareTo(array[i]) > 0) = array[i]; = array[i]; } } return min; } Vấn đề: Làm để trình biên dịch biết kiểu T so sánh (dùng hàm compareTo)? return min; } 6.6 Sử dụng Wildcard Generic • • Trong lập trình generic, ký tự “?” đại diện cho kiểu chưa biết Wildcards dùng cho vài tình huống: o o o o kiểu tham số kiểu thuộc tính kiểu biến cục kiểu trả 15 6.6 Sử dụng Wildcard Generic • “?” o o • Ví dụ: List list = new ArrayList(); “? extends Type” o o • Đại diện cho kiểu chưa xác định Đại diện cho kiểu lớp lớp Ví dụ: List

Ngày đăng: 09/05/2021, 22:02

Mục lục

  • Slide 1

  • Mục tiêu

  • Nội dung

  • 6.1. Đặt vấn đề

  • 6.1. Đặt vấn đề

  • 6.2. Mục đích của Generics

  • 6.3. Generic ở mức lớp

  • 6.3. Generic ở mức lớp

  • 6.3. Generic ở mức lớp

  • 6.3. Generic ở mức lớp

  • 6.4. Generic ở mức phương thức

  • 6.4. Generic ở mức phương thức

  • 6.4. Generic ở mức phương thức

  • 6.5. Sử dụng Type Bounds

  • 6.6. Sử dụng Wildcard trong Generic

  • 6.6. Sử dụng Wildcard trong Generic

  • 6.6. Sử dụng Wildcard trong Generic

  • 6.6. Sử dụng Wildcard trong Generic

  • 6.6. Sử dụng Wildcard trong Generic

  • 6.7. Generic và xử lý ngoại lệ

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan