Collection tập hợp: là một kiểu dữ liệu cho phép lưumộ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
Trang 1Bài 3:
COLLECTION TRONG VB.NET
Trang 2Nhắc lại khái niệm lập trình hướng thủ tục (Procedural
Trang 3Tì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
Trang 4Collection (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
Trang 7Tập hợp được thiết kế chỉ cho phép duyệt từ đầu tới cuốitập hợp hoặc từ cuối tập hợp ngược lại.
Trang 8Ví dụ: danh sách liên kết là một tập các phần tử có cùngkiểu dữ liệu và việc truy cập các phần tử được tiến hànhtuần tự từ đầu danh sách đến cuối danh sách
Tập hợp truy cập tuần tự
H Hì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, …
Trang 9Cá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
Trang 10Ví 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
H Hình minh họa một cấu trúc dữ liệu dạng cây
Trang 11Tập phi tuyến tính với các phần tử không được sắp xếpthứ 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
Trang 12Ví dụ: Đồ thị mô tả mạng lưới các thành phố
Truy cập theo phân nhóm
H Hình minh họa một đồ thị mô tả mạng lưới các
thành phố
Trang 13Có hai lớp cài đặt cấu trúc dữ liệu collection trong
Trang 14Tí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
Trang 16Cách khai báo: Dim names As New Collection
Trong đó:
“ names ” là tên của collection
Sử dụng lớp Collection
Trang 17Lớ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
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
Trang 18Ví dụ: dùng phương thức Add để thêm dữ liệu vào
Collection
Phương thức Add
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" )
Trang 19Ví 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
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" )
Trang 20Ví 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
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)
Trang 21Ví dụ: Hiển thị ra màn hình thông tin mỗi phần tử trongcollection thông qua thuộc tính Item truyền theo chỉ số:
Thuộc tính Item
' 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))
Trang 22Ví dụ: Hiển thị ra màn hình thông tin mỗi phần tử trongtậ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
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
Collection
For Each name In names
key = CStr (index) Console.WriteLine(names.Item(key)) index += 1
Trang 23Khi 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
Chuyển đổi kiểu đối tượng
lấy từ Collection
Option Strict On
Dim myString As String = "This is my String"
Dim aString As String
Dim myCollection As New Collection ()
Trang 24Nhậ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
Trang 25Demo và giải thích cài đặt lớp collection
riêng trên VB.NET (trong SGK)
Demo về CollectionBase
Trang 26Là 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
Phương
thứ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 đố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
Trang 27Bao 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 để
Sử dụng lớp CollectionBase
Trang 28Demo và giải thích cài đặt lớp StudentColl
kế thừa từ lớp CollectionBase (trong SGK)
Demo về CollectionBase
Trang 29Ngoà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
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
Trang 30Collection 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
Trang 31Hai 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