Upload
hoc-lap-trinh-web
View
3.053
Download
4
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
Bài 3:COLLECTION TRONG VB.NET
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
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
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
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
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í:
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
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, …
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
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
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
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ố
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
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
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
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
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
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")
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)
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)
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
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
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)
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
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
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
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
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
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
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
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