You are on page 1of 31

Bài 3:

COLLECTION TRONG VB.NET


Nhắc lại bài cũ
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

Slide 3 - Collection trong VB.Net 2


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

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

Slide 3 - Collection trong VB.Net 3


Khái niệm

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

Slide 3 - Collection trong VB.Net 4


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

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ự

Slide 3 - Collection trong VB.Net 5


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

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

2 3 5 7 11 13 17
Vị trí: 0 1 2 3 4 5 6

Thứ tự truy cập

Slide 3 - Collection trong VB.Net 6


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

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)

Slide 3 - Collection trong VB.Net 7


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

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

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, …

Slide 3 - Collection trong VB.Net 8


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

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ị…

Slide 3 - Collection trong VB.Net 9


Truy cập theo phân cấp
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}

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

Slide 3 - Collection trong VB.Net 10


Truy cập theo phân nhóm

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)

Slide 3 - Collection trong VB.Net 11


Truy cập theo phân nhóm

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

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


thành phố

Slide 3 - Collection trong VB.Net 12


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

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

Slide 3 - Collection trong VB.Net 13


Sử dụng lớp Collection

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.

Slide 3 - Collection trong VB.Net 14


Sử dụng lớp Collection

String Object

Integer Object

Real Object

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

Slide 3 - Collection trong VB.Net 15


Sử dụng lớp Collection

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


Trong đó:
“names” là tên của collection

Slide 3 - Collection trong VB.Net 16


Sử dụng lớp Collection
Lớp Collection cung cấp một số thuộc tính chính:
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

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

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

Có thể xem chi tiết API của lớp trên MSDN


http://msdn.microsoft.com/en-us/library/system.collections.aspx
Slide 3 - Collection trong VB.Net 17
Phương thức Add

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


Collection

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")

Slide 3 - Collection trong VB.Net 18


Phương thức Add
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

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)

Slide 3 - Collection trong VB.Net 19


Phương thức Add
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.
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)

Slide 3 - Collection trong VB.Net 20


Thuộc tính Item
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ố:

' 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

Slide 3 - Collection trong VB.Net 21


Thuộc tính Item
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):
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
Slide 3 - Collection trong VB.Net 22
Chuyển đổi kiểu đối tượng
lấy từ Collection

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ùng
hàm chuyển CType

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)

Slide 3 - Collection trong VB.Net 23


Sử dụng lớp Collection

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ử.

Slide 3 - Collection trong VB.Net 24


Demo về CollectionBase

Demo và giải thích cài đặt lớp collection


riêng trên VB.NET (trong SGK)

Slide 3 - Collection trong VB.Net 25


Lớp CollectionBase
Là lớp dạng abstract, cung cấp khung để xây dựng các
lớp mới hỗ trợ kiểu tổ chức collection
Phương Giải thích
thức
Bao gồm các phương thức abstract chính sau:
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 đối
tượ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ủa
phầ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

Slide 3 - Collection trong VB.Net 26


Sử dụng lớp CollectionBase

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.

Slide 3 - Collection trong VB.Net 27


Demo về CollectionBase

Demo và giải thích cài đặt lớp StudentColl


kế thừa từ lớp CollectionBase (trong SGK)

Slide 3 - Collection trong VB.Net 28


Namespace System.Collection
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:

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ị, được
sắ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

Slide 3 - Collection trong VB.Net 29


Tổng kết

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

Slide 3 - Collection trong VB.Net 30


Tổng kết

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.

Slide 3 - Collection trong VB.Net 31

You might also like