31
Bài 3: COLLECTION TRONG VB.NET

Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Embed Size (px)

DESCRIPTION

Tìm hiểu về Collection trong VB.Net: Khái niệm Collection Phân loại các Collection Lớp Collection trong VB.Net Lớp CollectionBase trong VB.Net

Citation preview

Page 1: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Bài 3:COLLECTION TRONG VB.NET

Page 2: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Nhắc lại khái niệm lập trình hướng thủ tục (Procedural

Programming)

Tìm hiểu các khái niệm và ý nghĩa Lập trình hướng đối

tượng (OOP)

Lập trình hướng đối tượng trong VB.Net

Nhắc lại bài cũ

Slide 3 - Collection trong VB.Net 2

Page 3: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Tìm hiểu về Collection trong VB.Net:

Khái niệm Collection

Phân loại các Collection

Lớp Collection trong VB.Net

Lớp CollectionBase trong VB.Net

Mục tiêu bài học hôm nay

Slide 3 - Collection trong VB.Net 3

Page 4: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Collection (tập hợp): là một kiểu dữ liệu cho phép lưu

một tập hợp các đối tượng dữ liệu, theo một cách tổ

chức dữ liệu nhất định (ví dụ tổ chức theo dạng tập, cây,

danh sách,…)

Có thể phân loại thành:

Tập hợp tuyến tính

Tập hợp phi tuyến tính

Khái niệm

Slide 3 - Collection trong VB.Net 4

Page 5: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Các phần tử được sắp xếp theo vị trí

Thứ tự truy cập:

Truy cập trực tiếp

Truy cập tuần tự

Tập hợp tuyến tính

Slide 3 - Collection trong VB.Net 5

Page 6: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: Mảng là một tập các phần tử có cùng kiểu dữ liệu

và các phần tử được truy cập trực tiếp thông qua các chỉ

số là các số nguyên

Tập hợp truy cập trực tiếp

Slide 3 - Collection trong VB.Net 6

2 3 5 7 11 13 17

0 1 2 3 4 5 6

Thứ tự truy cập

Vị trí:

Page 7: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Tập hợp được thiết kế chỉ cho phép duyệt từ đầu tới cuối

tập hợp hoặc từ cuối tập hợp ngược lại.

Ví dụ:

Ngăn xếp (Stack)

Hàng đợi (Queue)

Danh sách liên kết (Linked list)

Tập hợp truy cập tuần tự

Slide 3 - Collection trong VB.Net 7

Page 8: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: danh sách liên kết là một tập các phần tử có cùng

kiểu dữ liệu và việc truy cập các phần tử được tiến hành

tuần tự từ đầu danh sách đến cuối danh sách

Tập hợp truy cập tuần tự

Slide 3 - Collection trong VB.Net 8

HHình minh họa một danh sách liên kết. Việc duyệt danh sách nàyđược tiến hành từ phần tử đầu 18, lần lượt đến 24, 39, …

Page 9: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Các phần tử không được sắp xếp theo vị trí

Thứ tự truy cập:

Truy cập theo phân cấp. Ví dụ: Cây (Tree)

Truy cập theo phân nhóm. Ví dụ: Đồ thị…

Tập hợp phi tuyến tính

Slide 3 - Collection trong VB.Net 9

Page 10: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: Cây (Tree) là một cấu trúc phi tuyến tính

Truy nhập các phần tử theo cấp từ nút gốc đến nút lá ->

cây biểu diễn mảng {13, 12, 10, 7, 11, 8, 9}

Truy cập theo phân cấp

Slide 3 - Collection trong VB.Net 10

HHình minh họa một cấu trúc dữ liệu dạng cây

Page 11: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Tập phi tuyến tính với các phần tử không được sắp xếp

thứ tự được gọi là nhóm

Tập hợp nhóm được phân chia thành ba nhóm chính là:

Set, đồ thị (graph) và mạng lưới (network)

Truy cập theo phân nhóm

Slide 3 - Collection trong VB.Net 11

Page 12: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: Đồ thị mô tả mạng lưới các thành phố

Truy cập theo phân nhóm

Slide 3 - Collection trong VB.Net 12

HHình minh họa một đồ thị mô tả mạng lưới cácthành phố

Page 13: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Có hai lớp cài đặt cấu trúc dữ liệu collection trong

VB.Net

Sử dụng lớp Collection

Sử dụng lớp CollectionBase

Cài đặt tập hợp trong VB.Net

Slide 3 - Collection trong VB.Net 13

Page 14: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Tính chất:

Các phần tử không giới hạn vào tập hợp

Các phần tử có kiểu bất kì được thêm vào collection đều được

lưu với kiểu Object.

Sử dụng lớp Collection

Slide 3 - Collection trong VB.Net 14

Page 15: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Sử dụng lớp Collection

Slide 3 - Collection trong VB.Net 15

String

Integer

Real

Object

Object

Object

Hình minh họa các phần tử có kiểu bất kì đều được lưutrong Collection với kiểu là Object

Page 16: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Cách khai báo: Dim names As New Collection

Trong đó:

“names” là tên của collection

Sử dụng lớp Collection

Slide 3 - Collection trong VB.Net 16

Page 17: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Lớp Collection cung cấp một số thuộc tính chính:

Lớp Collection cung cấp một số phương thức chính:

Sử dụng lớp Collection

Slide 3 - Collection trong VB.Net 17

Có thể xem chi tiết API của lớp trên MSDNhttp://msdn.microsoft.com/en-us/library/system.collections.aspx

Thuộc tính (Property) Giải thích

Count cho biết số phần tử có trong collection

Item trả về một phần tử của collection theo chỉ sốhoặc khóa

Add thêm phần tử vào collection

Remove xóa một phần tử khỏi collection

Clear xóa tất cả các phần tử của collection

Page 18: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: dùng phương thức Add để thêm dữ liệu vào

Collection

Phương thức Add

Slide 3 - Collection trong VB.Net 18

Dim names As New Collection

' Thêm tên các phần tử vào Collection

names.Add("David Durr")

names.Add("Raymond Williams")

names.Add("Bernica Tackett")

names.Add("Beata Lovelace")

Page 19: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: Thêm tên các phần tử vào tập hợp cùng với khóa (key) đi

kèm. Lưu ý: khóa của mỗi phần tử phải là biểu thức String duy nhất

Phương thức Add

Slide 3 - Collection trong VB.Net 19

Dim names As New Collection

' Thêm tên các phần tử vào Collection

names.Add("David Durr", “300")names.Add("Raymond Williams“, “301")names.Add("Bernica Tackett“, “302")names.Add("Beata Lovelace“, “303")

'Hiển thị số phần tử có trong Collection

Console.WriteLine(names.Count)

Page 20: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: thêm các phần tử vào tập hợp cùng với khóa và

chỉ định vị trí thêm vào trong tập hợp.

Phương thức Add

Slide 3 - Collection trong VB.Net 20

Dim names As New Collection

names.Add("David Durr", “300")names.Add("Raymond Williams“, “301")

'Chỉ định vị trí thêm vào trước phần tử đầu tiên

names.Add("Bernica Tackett“, “302“, 1)

'Chỉ định vị trí thêm vào trước phần tử thứ 3

names.Add("Beata Lovelace“, “303“, 3)

Page 21: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: Hiển thị ra màn hình thông tin mỗi phần tử trong

collection thông qua thuộc tính Item truyền theo chỉ số:

Thuộc tính Item

Slide 3 - Collection trong VB.Net 21

' Khai báo biến index

Dim index As Integer

'Hiển thị ra màn hình

For index = 1 To names.Count

Console.WriteLine(names.Item(index))

Next

Page 22: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ví dụ: Hiển thị ra màn hình thông tin mỗi phần tử trong

tập hợp thông qua thuộc tính Item truyền theo khóa

(với trường hợp các phần tử có chỉ số bắt đầu từ 300):

Thuộc tính Item

Slide 3 - Collection trong VB.Net 22

Dim index As Integer 'khai báo biến index

Dim key As Integer = 300 'khai báo biến key

Dim name As String 'khai báo biến lặp

'Hiển thị ra màn hình tên mỗi phần tử trong

Collection

For Each name In names

key = CStr(index)

Console.WriteLine(names.Item(key))

index += 1

Next

Page 23: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Khi lấy một phần tử ra khỏi Collection, phần tử sẽ cókiểu đối tượng. Để chuyển kiểu tường minh, cần dùnghàm chuyển CType

Chuyển đổi kiểu đối tượnglấy từ Collection

Slide 3 - Collection trong VB.Net 23

Option Strict On

Dim myString As String = "This is my String"

Dim aString As String

Dim myCollection As New Collection()

myCollection.Add(myString)

aString = CType(myCollection.Item(1), String)

Page 24: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Nhận xét:

Các phần tử có kiểu bất kì được thêm vào collection đều được lưu với

kiểu Object

Do đó các phương thức định nghĩa cho các lớp String, Interger, Decimal

… không được gọi trực tiếp, phải sử dụng hàm CType để chuyển các

Object về kiểu dữ liệu ban đầu (String, Integer, Decimal…)

Có thể thêm nhiều đối tượng với kiểu khác nhau vào cùng một

collection

Sử dụng lớp CollectionBase để cài đặt tập hợp định kiểu rõ ràng cho các

phần tử.

Sử dụng lớp Collection

Slide 3 - Collection trong VB.Net 24

Page 25: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Demo và giải thích cài đặt lớp collectionriêng trên VB.NET (trong SGK)

Demo về CollectionBase

Slide 3 - Collection trong VB.Net 25

Page 26: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Là lớp dạng abstract, cung cấp khung để xây dựng cáclớp mới hỗ trợ kiểu tổ chức collection

Bao gồm các phương thức abstract chính sau:

Lớp CollectionBase

Slide 3 - Collection trong VB.Net 26

Phươngthức

Giải thích

Add Thêm một đối tượng vào cuối collection.

Insert Chèn thêm một phần tử vào collection tại vị trí chỉ định.

Remove Xóa bỏ phần tử đầu tiên tìm thấy trong collection giống đốitượng được chỉ định.

Contains Xác định vị trí mà collection chứa phần tử được chỉ định.

IndexOf Tìm kiếm phần tử được chỉ định và trả về chỉ số (tính từ 0) củaphần tử đầu tiên trong collection thỏa mãn điều kiện.

CopyTo Sao chép toàn bộ collection tới một mảng một chiều phù hợp,bắt đầu tại vị trí được chỉ định của mảng đích

Page 27: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Bao gồm các phương thức public chính sau:

Clear: Xóa bỏ tất cả các đối tượng từ collection

RemoveAt: Xóa một phần tử tại vị trí chỉ định trong collection

Equals: Xác minh xem đối tượng đường truyền vào có bằng với

đối tượng hiện tại không.

ToString: Trả về một chuỗi thể hiện đối tượng hiện hành.

GetEnumerator: Trả về một điều khiển liệt kê được sử dụng để

lặp và duyệt toàn bộ collection.

Sử dụng lớp CollectionBase

Slide 3 - Collection trong VB.Net 27

Page 28: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Demo và giải thích cài đặt lớp StudentCollkế thừa từ lớp CollectionBase (trong SGK)

Demo về CollectionBase

Slide 3 - Collection trong VB.Net 28

Page 29: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Ngoài lớp CollectionBase, trong namespace System.Collection còn cónhiều lớp kiểu collection, ví dụ một số lớp điển hình:

Namespace System.Collection

Slide 3 - Collection trong VB.Net 29

Tên lớp Ý nghĩa

ArrayList Biểu diễn tập các đối tượng dưới dạng mảng

Hashtable Biểu diễn tập phần tử theo cặp khóa/giá trị

Queue Biểu diễn cấu trúc queue, vào-trước-ra-trước

SortedList Biểu diễn tập phần tử theo cặp khóa/giá trị, đượcsắp xếp theo khóa, truy cập theo khóa hoặc chỉ số

ReadOnlyCollectionBase Lớp abstract để cài đặt collection chỉ hỗ trợ đọc

Stack Biểu diễn cấu trúc stack, vào-sau-ra-trước

Chi tiết xem thêm tại:http://msdn.microsoft.com/en-us/library/system.collections%28v=VS.110%29.aspx

Page 30: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Collection là một kiểu dữ liệu được cấu trúc để một

nhóm không giới hạn số lượng và kiểu phần tử

Hai loại collection:

Tập hợp tuyến tính: các phần tử được sắp xếp theo vị trí.

Tập hợp phi tuyến tính: các phần tử không được sắp xếp theo vị

trí.

Phần tử trong collection có kiểu là Object

Tổng kết

Slide 3 - Collection trong VB.Net 30

Page 31: Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT

Hai cách cài đặt collection trong VB.Net:

Sử dụng ngay lớp Collection để tạo đối tượng collection

Tạo lớp mới kế thừa từ lớp trừu tượng CollectionBase. kiểu của

các phần tử do người dùng chỉ định.

Tổng kết

Slide 3 - Collection trong VB.Net 31