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

Bài giảng Lập trình hướng đối tượng: Chương 11 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:20

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

Bài giảng Lập trình hướng đối tượng: Chương 11 Indexer, cung cấp cho người đọc những kiến thức như: Đặt vấn đề; Indexer; Cách dùng khác của Indexer; Ý nghĩa của indexer;...Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 11 - Trường Đại học Ngoại ngữ - Tin học, TP.HCM

  1. CHƯƠNG 11: Click to edit Master subtitle style INDEXERS Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM 1
  2. NỘI DUNG Đặt vấn đề Indexer Cách dùng khác của Indexer Ý nghĩa của indexer Tóm tắt 2
  3. ĐẶT VẤN ĐỀ
  4. Đặt vấn đề Để truy xuất một đối tượng thuộc 1 class, ta dùng biến đối tượng. Thông qua biến đối tượng, ta truy xuất từng thành phần (thuộc tính). Cú pháp: Tên biến đối tượng.tên thành phần Ví dụ: Book b = new Book (); string tenSach = b.TenSach; 4
  5. Đặt vấn đề Nhưng, đôi khi ta muốn truy xuất một tập hợp (collection) nằm trong 1 class ? Ví dụ: tạo 1 class quản lý sách (lớp Book) bao gồm: mã sách, tên sách, các chương của sách; biết 1 cuốn sách có nhiều chương. Ta muốn truy xuất tập hợp các chương của 1 lớp Book? 5
  6. Đặt vấn đề class Book { public string MaSach { get; set; } Tạo mảng kiểu public string TenSach { get; set; } string chứa tên các string[] chuong; chương của sách get public string GetChapter(int i) { return chuong[i]; } set public void SetChapter(int i, string str) { chuong[i] = str; } Phương thức public Book(int soChuong) khởi tạo { chuong = new string[soChuong]; } } 6
  7. Đặt vấn đề Book book = new Book(10); book.MaSach = "01_TH"; book.TenSach = "Lap Trinh Huong Doi Tuong"; book.SetChapter(0, "Gioi Thieu"); book.SetChapter(1, "Lop va Doi Tuong"); Lấy nội dung chương ... 1 của lớp Book string noiDung = book.GetChapter(1); Có thể viết lại ???? INDEXER Book book = new Book(10); book.MaSach = "01_TH"; book.TenSach = "Lap Trinh Huong Doi Tuong"; Sử dụng indexer để book[0]= "Gioi Thieu"; ghi (write) book[1]= "Lop va Doi Tuong"; ... Console.WriteLine(“In cac chuong cua sach”); Sử dụng indexer để for(int i=0;i
  8. INDEXER
  9. Indexer Indexer là chức năng được C# hỗ trợ để người dùng có thể truy xuất những tập hợp (collection như: mảng, danh sách,…) nằm trong lòng 1 lớp. Indexer chính là cách overload phép toán chỉ mục ([ và ]) 9
  10. Indexer Cú pháp: [scope] [attribute] type this [int index] {[getdef] [setdef]}; Ví dụ class Book { ... string[] chuong; public string this [int index] { . . .} } scope type: loại từ khoá: this tham số get, set dữ liệu accessors được đánh chỉ mục 10
  11. Indexer Ví dụ class Book { public string MaSach { get; set; } public string TenSach { get; set; } string[] chuong; public string this[int index] { get { read return chuong[index]; } Cách sử dụng set { write chuong[i] = value; } } Book book = new Book(10); public Book(int soChuong) book.MaSach = "01_TH"; { book.TenSach = "Lap Trinh Huong Doi Tuong"; chuong = new string[soChuong]; book[0]= "Gioi Thieu"; } book[1]= "Lop va Doi Tuong"; } ... Console.WriteLine(“In cac chuong cua sach”); for(int i=0;i
  12. Indexer Các thành phần của indexer Bắt đầu là public (không phải public và static) Kiểu của giá trị trả về Từ khóa this[ ] chỉ index Trong [] là danh sách chỉ mục Giống properties: có get và set Không cần phải có cả hai. Trong get/set dùng biến index Trong set dùng biến value để lấy giá trị được gán 12
  13. CÁCH DÙNG KHÁC CỦA INDEXER
  14. Cách dùng khác của Indexer class Chuong { private string tenChuong; private string noiDung; public string TenChuong { get{return tenChuong;} set{tenChuong= value;} } public string NoiDung { get { return noiDung; } set { noiDung = value; } } public Chuong(string ten, string noiDungChuong) { tenChuong = ten; noiDung = noiDungChuong; } } 14
  15. Cách dùng khác của Indexer class Sach { public string TenSach { get; set; } private Chuong[] dsChuong; public Sach(int soChuong) { dsChuong = new Chuong[soChuong]; } public Chuong this[int index] { Cách sử dụng get { return dsChuong[index]; } set { dsChuong[index] = value; } } public Chuong this[string tenChuong] { Book book = new Book(10); get book.TenSach = "Lap Trinh Huong Doi Tuong"; { book[0]= new Chuong("Gioi Thieu“,”LTHDT là foreach (Chuong c in dsChuong) ….”); { book[1]= new Chuong("Lop va Doi Tuong“, “Lop if (c.TenChuong == tenChuong) la ….”; { book[2] = new Chuong(“Phuong thuc”, “Dinh return c; nghia phuong thuc ….”) } ... } Console.WriteLine(“In noi dung chuong Lop va return null; Doi tuong cua sach:”); } Console.WriteLine(book[“Lop va Doi } Tuong”].NoiDung); } 15
  16. Cách dùng khác của Indexer Indexer có tham số là string có cú pháp như sau: class Book { ... Chuong[] dsChuong; public Chuong this [string component] { . . .} } scope type: loại tham số get, set từ khoá: this dữ liệu accessors được đánh chỉ mục 16
  17. Indexer có nhiều tham số public type this[string component, int index] { get { } set { } } 17
  18. Ý NGHĨA CỦA INDEXER
  19. Ý nghĩa của Indexer Indexer được sử dụng giúp code dễ đọc và tự nhiên hơn Chỉ nên dùng indexer và operator overloading khi việc dùng này làm code dễ đọc. Indexer có thể có bất kỳ kiểu tham số nào 19
  20. Tóm tắt Indexer là cách overload phép toán chỉ mục ([ và ]) Định nghĩa indexer vừa giống operator overloading vừa giống property public type this[int index] { get{…} set{…} } Indexer có thể có bất kỳ kiểu tham số nào Indexer có thể có nhiều tham số. 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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