SlideShare a Scribd company logo
1 of 49
Download to read offline
Bài 2:
Lập trình hướng đối tượng & Collection
Giới thiệu về .NET và Visual Studio
Giới thiệu về các kiến thức lập trình cơ bản trên ngôn
ngữ C#
Kiểu dữ liệu
Toán tử
Thao tác với chuỗi
Cấu trúc điều khiển
Phương thức
Xử lý ngoại lệ
Hệ thống bài cũ
Giới thiệu về .NET và Visual Studio
Giới thiệu về các kiến thức lập trình cơ bản trên ngôn
ngữ C#
Kiểu dữ liệu
Toán tử
Thao tác với chuỗi
Cấu trúc điều khiển
Phương thức
Xử lý ngoại lệ
Lập trình hướng đối tượng & Collection 2
Xây dựng lớp, cấu trúc
Tạo và sử dụng đối tượng
Xây dựng lớp kế thừa
Khái niệm đa hình và sử dụng đa hình
Sử dụng các lớp và đối tượng dựng sẵn
Collection
Tự sinh mã khai báo
Mục tiêu bài học
Xây dựng lớp, cấu trúc
Tạo và sử dụng đối tượng
Xây dựng lớp kế thừa
Khái niệm đa hình và sử dụng đa hình
Sử dụng các lớp và đối tượng dựng sẵn
Collection
Tự sinh mã khai báo
Lập trình hướng đối tượng & Collection 3
LỚP, CẤU TRÚC VÀ
ĐỐI TƯỢNG
Lập trình hướng đối tượng & Collection 4
LỚP, CẤU TRÚC VÀ
ĐỐI TƯỢNG
Định nghĩa lớp
Visual Basic
Định nghĩa lớp
Tạo đối tượng từ lớp
C#
Public Class Sanpham
End Class
public class Sanpham
{
}
Định nghĩa lớp
Tạo đối tượng từ lớp
Lập trình hướng đối tượng & Collection 5
Dim dtSanpham As Sanpham
dtSanpham = New Sanpham()
Sanpham dtSanpham ;
dtSanpham = new Sanpham();
Phương thức khởi tạo
Visual Basic
Khởi tạo không có tham số
Khởi tạo có tham số
C#
Khởi tạo không có tham số
Khởi tạo có tham số
Public Sub Sanpham()
End Sub
public Sanpham()
{
}
Khởi tạo không có tham số
Khởi tạo có tham số
Khởi tạo không có tham số
Khởi tạo có tham số
Lập trình hướng đối tượng & Collection 6
Public Sub Sanpham(As Decimal)
End Sub
public void Sanpham(decimal gia)
{
}
Định nghĩa các trường
và phương thức cho lớp
Visual Basic
Định nghĩa trường
Định nghĩa phương thức
C#
Private soluong As Integer
Public gia As Decimal
private int soluong;
public decimal gia;
Định nghĩa trường
Định nghĩa phương thức
Lập trình hướng đối tượng & Collection 7
Sub hienthi()
End Sub
public void hienthi()
{
}
Function hienthi() As Integer
End Function
public int hienthi()
{
}
Điều khiển truy cập
Phạm vi public internal protected private
Cùng lớp Y Y Y Y
Lớp kế thừa Y Y Y N
Cùng assembly Y Y N N
Khác assembly Y N N N
Lập trình hướng đối tượng & Collection 8
Khi build solution, mỗi project trong solution được build
thành một assemply
Điều khiển truy cập mặc định là private
Khác assembly Y N N N
Kế thừa
SanPham
string ma
string ten
decimal gia
string hienThiThongTin()
Lớp cơ sở
Lập trình hướng đối tượng & Collection 9
Sach
string ma
string ten
decimal gia
string hienThiThongTin()
string tacgia
PhanMem
string ma
string ten
decimal gia
string hienThiThongTin()
string phienban
Lớp dẫn xuất
Viết từ khóa virtual trước phương thức có thể sẽ được
ghi đè ở các lớp dẫn xuất
Tạo lớp cơ sở
public class SanPham
{
public string Ma { get; set; }
public string Ten { get; set; }
public decimal Gia { get; set; }
public SanPham(string ma, string ten, decimal gia)
{
this.Ma = ma;
this.Ten = ten;
this.Gia = gia;
}
public virtual string hienThiThongTin()
{
return Ma + "n" + Ten + "n" + Gia;
}
}
Lập trình hướng đối tượng & Collection 10
public class SanPham
{
public string Ma { get; set; }
public string Ten { get; set; }
public decimal Gia { get; set; }
public SanPham(string ma, string ten, decimal gia)
{
this.Ma = ma;
this.Ten = ten;
this.Gia = gia;
}
public virtual string hienThiThongTin()
{
return Ma + "n" + Ten + "n" + Gia;
}
}
Định nghĩa lớp dẫn xuất
Định nghĩa phương thức khởi tạo gọi đến phương thức
khởi tạo của lớp cơ sở
Gọi đến phương thức hoặc thuộc tính của lớp cơ sở
Ẩn phương thức non-virtual
Ghi đè lên phương thức virtual
Tạo lớp dẫn xuất
public class TenLopDanXuat: TenLopCoSo
public TenLop (danhSachThamSo): base(danhSachThamSo)
Định nghĩa lớp dẫn xuất
Định nghĩa phương thức khởi tạo gọi đến phương thức
khởi tạo của lớp cơ sở
Gọi đến phương thức hoặc thuộc tính của lớp cơ sở
Ẩn phương thức non-virtual
Ghi đè lên phương thức virtual
Lập trình hướng đối tượng & Collection 11
base.tenPhuongThuc(danhSachThamSo)
base.tenThuocTinh
public new kieuTraVe tenPhuongThuc
public override kieuTraVe tenPhuongThuc
Demo tạo lớp dẫn xuất
class Sach: SanPham
{
public string Tacgia { get; set; }
public Sach(string ma, string ten, string tacgia, decimal gia)
: base(ma, ten, gia)
{
this.Tacgia = tacgia;
}
public override string hienThiThongTin()
{
return base.hienThiThongTin();
}
}
Lập trình hướng đối tượng & Collection 12
class Sach: SanPham
{
public string Tacgia { get; set; }
public Sach(string ma, string ten, string tacgia, decimal gia)
: base(ma, ten, gia)
{
this.Tacgia = tacgia;
}
public override string hienThiThongTin()
{
return base.hienThiThongTin();
}
}
Cách khác để ghi đè lên một phương thức
Demo tạo lớp dẫn xuất
public override string hienThiThongTin()
{
return base.Ma + "n" + base.Ten + "n" + Tacgia + "n" +
base.Gia;
}
Lập trình hướng đối tượng & Collection 13
public override string hienThiThongTin()
{
return base.hienThiThongTin() + "n" + Tacgia;
}
Gọi đến phương thức
hienThiThongTin() của lớp cha
Là tính năng quan trọng trong lập trình hướng đối tượng
Giúp ứng dụng sẽ ứng xử khác nhau đối với các đối
tượng khác nhau kế thừa từ một lớp cơ sở
Thường được sử dụng khi không xác định được kiểu của
đối tượng lúc chạy
Đa hình
Lập trình hướng đối tượng & Collection 14
Demo sử dụng đa hình
Sach sach = new Sach("S001", "Lap trinh Winform", "Joel Murach", 20);
PhanMem phanmem = new PhanMem("PM001", "Kapersky", "2012", 30);
SanPham sanpham;
sanpham = sach;
MessageBox.Show(sanpham.hienThiThongTin());
sanpham = phanmem;
MessageBox.Show(sanpham.hienThiThongTin());
Lập trình hướng đối tượng & Collection 15
Sach sach = new Sach("S001", "Lap trinh Winform", "Joel Murach", 20);
PhanMem phanmem = new PhanMem("PM001", "Kapersky", "2012", 30);
SanPham sanpham;
sanpham = sach;
MessageBox.Show(sanpham.hienThiThongTin());
sanpham = phanmem;
MessageBox.Show(sanpham.hienThiThongTin());
Cho phương thức hienThi như sau
Hãy đoán kết quả khi gọi phương thức hienThi như sau
Demo sử dụng đa hình
private void hienThi(SanPham sanpham)
{
MessageBox.Show(sanpham.hienThiThongTin());
}
Cho phương thức hienThi như sau
Hãy đoán kết quả khi gọi phương thức hienThi như sau
Lập trình hướng đối tượng & Collection 16
Sach sach = new Sach("S001", "Lap trinh Winform", "Joel Murach", 20);
PhanMem phanmem = new PhanMem("PM001", "Kapersky", "2012", 30);
hienThi(sach);
hienThi(phanmem);
Dùng để định nghĩa kiểu biến giống như lớp nhưng kiểu
giá trị
Các kiểu giá trị như int, decimal, DateTime…
Ưu điểm của cấu trúc
Tiết kiệm bộ nhớ
Khởi tạo nhanh hơn
 Sử dụng cấu trúc để lưu trữ dữ liệu nhỏ và cho đối
tượng muốn lưu trữ kiểu giá trị
Cấu trúc giống lớp
Các trường, thuộc tính, phương thức, sự kiện và toán hạng
Thành viên tĩnh và thành viên thực thể
Cấu trúc
Dùng để định nghĩa kiểu biến giống như lớp nhưng kiểu
giá trị
Các kiểu giá trị như int, decimal, DateTime…
Ưu điểm của cấu trúc
Tiết kiệm bộ nhớ
Khởi tạo nhanh hơn
 Sử dụng cấu trúc để lưu trữ dữ liệu nhỏ và cho đối
tượng muốn lưu trữ kiểu giá trị
Cấu trúc giống lớp
Các trường, thuộc tính, phương thức, sự kiện và toán hạng
Thành viên tĩnh và thành viên thực thể
Lập trình hướng đối tượng & Collection 17
Hạn chế của cấu trúc so với lớp
Không hỗ trợ phương thức khởi tạo không có tham số
Không hỗ trợ kế thừa
Không hỗ trợ thuộc tính tự khởi tạo
Các thành viên chỉ được gọi khi được khởi tạo
Cấu trúc
Hạn chế của cấu trúc so với lớp
Không hỗ trợ phương thức khởi tạo không có tham số
Không hỗ trợ kế thừa
Không hỗ trợ thuộc tính tự khởi tạo
Các thành viên chỉ được gọi khi được khởi tạo
Lập trình hướng đối tượng & Collection 18
Demo định nghĩa cấu trúc
public struct SanPham
{
public string Ma;
public string Ten;
public decimal Gia;
public SanPham(string ma, string ten, decimal gia)
{
this.Ma = ma;
this.Ten = ten;
this.Gia = gia;
}
public string hienThiThongTin()
{
return Ma + "n" + Ten + "n" + Gia;
}
}
Lập trình hướng đối tượng & Collection 19
public struct SanPham
{
public string Ma;
public string Ten;
public decimal Gia;
public SanPham(string ma, string ten, decimal gia)
{
this.Ma = ma;
this.Ten = ten;
this.Gia = gia;
}
public string hienThiThongTin()
{
return Ma + "n" + Ten + "n" + Gia;
}
}
Khai báo và gán giá trị cho cấu trúc
Khởi tạo giá trị cho cấu trúc
SanPham sp;
sp.Ma = "001";
sp.Ten = "Wave RS";
sp.Gia = 20000000;
MessageBox.Show(sp.hienThiThongTin());
Demo khai báo và khởi tạo cấu trúc
Khai báo và gán giá trị cho cấu trúc
Khởi tạo giá trị cho cấu trúc
Lập trình hướng đối tượng & Collection 20
SanPham sp2 = new SanPham("002", "SH", 120000000);
MessageBox.Show(sp2. hienThiThongTin());
NAMESPACES
Lập trình hướng đối tượng & Collection 21
NAMESPACES
.NET 4.0 cung cấp rất nhiều lớp và cấu trúc cài đặt sẵn
Các lớp và cấu trúc này thuộc .NET FrameWork
Library
Các lớp và cấu trúc liên quan đến nhau được nhóm
thành một Namespaces
Namespaces được tổ chức theo cấu trúc phân cấp
Namespaces lớn nhất là Sytem
Lớp và cấu trúc cài đặt sẵn
.NET 4.0 cung cấp rất nhiều lớp và cấu trúc cài đặt sẵn
Các lớp và cấu trúc này thuộc .NET FrameWork
Library
Các lớp và cấu trúc liên quan đến nhau được nhóm
thành một Namespaces
Namespaces được tổ chức theo cấu trúc phân cấp
Namespaces lớn nhất là Sytem
Lập trình hướng đối tượng & Collection 22
Một số namespaces thông dụng
Các kiểu cơ bản thuộc namespaces System
System.Collections
System.Collections.Generic
System.IO
System.Windows.Forms
Namespaces
Một số namespaces thông dụng
Các kiểu cơ bản thuộc namespaces System
System.Collections
System.Collections.Generic
System.IO
System.Windows.Forms
Lập trình hướng đối tượng & Collection 23
Xem file NET35_Namespaces_Poster_LORES để biết
thêm về các lớp được các lớp được hỗ trợ bởi .NET 3.5
Xem file PDC2008-NETFX4 để biết thêm về các lớp mới
được .NET 4 hỗ trợ
Namespaces
Lập trình hướng đối tượng & Collection 24
CẤU TRÚC DATETIME
& LỚP STRING
Lập trình hướng đối tượng & Collection 25
CẤU TRÚC DATETIME
& LỚP STRING
Thuộc namespace System
Cú pháp tạo đối tượng DateTime
Ví dụ
Cấu trúc DateTime
DateTime tenbien = new DateTime (nam, thang,
ngay [, gio, phut, giay [, miligiay]]);
//hoặc
DateTime tenbien = DateTime.Parse (string)
Thuộc namespace System
Cú pháp tạo đối tượng DateTime
Ví dụ
Lập trình hướng đối tượng & Collection 26
//1/30/2010 12:00 AM
DateTime date1 = new DateTime(10, 01, 30);
//1/30/2010 2:15 PM
DateTime date2 = new DateTime(2010, 1, 30, 14, 15, 0);
//1/30/2010 12:00 AM
DateTime date3 = DateTime.Parse("01/30/10");
Thuộc tính của DateTime
Thuộc tính Mô tả
Now Trả về thời gian và ngày tháng hiện tại
Today Trả về ngày tháng hiện tại
Month Trả về tháng của giá trị DateTime
Day Trả về ngày của giá trị DateTime
Year Trả về năm của giá trị DateTime
Lập trình hướng đối tượng & Collection 27
Year Trả về năm của giá trị DateTime
Hour Trả về giờ của giá trị DateTime
Minute Trả về phút của giá trị DateTime
Second Trả về giây của giá trị DateTime
DateTime thoiGianHienTai = DateTime.Now; //30/1/2010 10:26:35
DateTime ngayThangHienTai = DateTime.Today; //30/1/2010 12:00:00 AM
int thang = ngayThangHienTai.Day; //1
Phương thức của DateTime
Phương thức Mô tả
addDays(songay) Thêm số ngày vào giá trị kiểu DateTime và trả
về giá trị khác kiểu DateTime
addMonths(sothang) Thêm số tháng vào giá trị kiểu DateTime và
trả về giá trị khác kiểu DateTime
addYears(sonam) Thêm số năm vào giá trị kiểu DateTime và trả
về giá trị khác kiểu DateTime
Lập trình hướng đối tượng & Collection 28
Thêm số năm vào giá trị kiểu DateTime và trả
về giá trị khác kiểu DateTime
DaysInMonth(nam, thang) Trả về số ngày có trong 1 tháng năm xác định
IsLeapYear(nam) Trả về giá trị Boolean cho biết năm được chỉ ra
có phải là năm nhuận hay không
DateTime tgianHienTai = DateTime.Now; //30/1/2010 10:26:35
DateTime tgianMoi = tgianHienTai.AddDays(60); //30/4/2010 10:26:35
Thuộc namespace System
Lớp String
Thuộc tính Mô tả
Length Lấy số ký tự trong chuỗi
Index Mô tả
[chiso] Truy cập đến ký tự tại vị trí được chỉ ra
Lập trình hướng đối tượng & Collection 29Lập trình hướng đối tượng & Collection 29
Phương thức Mô tả
StartsWith(chuoi) Trả về giá trị boolean cho biết chuỗi đó có
được bắt đầu bằng chuỗi chỉ ra hay không
EndsWith(chuoi) Trả về giá trị boolean cho biết chuỗi đó có
được kết thúc bằng chuỗi chỉ ra hay không
IndexOf(chuoi) Trả về vị trí xuất hiện chuỗi đầu tiên
Insert(chisodau, chuoi) Thêm chuỗi được chỉ ra vào vị trí xác định
Remove(chisodau, soluong) Trả về chuỗi với số lượng ký tự được xóa từ vị
trí được chỉ ra
Demo sử dụng String
string chars = "abcdefg";
char a = chars[0]; //'a'
char b = chars[1]; //'b'
bool isStartWith = chars.StartsWith("abc"); //true
bool isEndWith = chars.EndsWith("abc"); //false
string tenCongTy = "Mike Murach and Associates";
int index1 = tenCongTy.IndexOf("Murach"); //5
int index2 = tenCongTy.LastIndexOf(" "); //15
Lập trình hướng đối tượng & Collection 30
string chars = "abcdefg";
char a = chars[0]; //'a'
char b = chars[1]; //'b'
bool isStartWith = chars.StartsWith("abc"); //true
bool isEndWith = chars.EndsWith("abc"); //false
string tenCongTy = "Mike Murach and Associates";
int index1 = tenCongTy.IndexOf("Murach"); //5
int index2 = tenCongTy.LastIndexOf(" "); //15
MẢNG VÀ
COLLECTION
Lập trình hướng đối tượng & Collection 31
MẢNG VÀ
COLLECTION
Cú pháp khai báo mảng một chiều
Ví dụ
Mảng
kieu[] tenMang;
tenMang = new kieu[chieuDaiMang]
//hoặc
keu[] tenMang = new kieu[chieuDaiMang]
int[] diem;
diem = new int[10];
//hoặc
int[] diem = new int[10];
//khai báo và khởi tạo giá trị cho mảng
int[] diem3 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Lập trình hướng đối tượng & Collection 32
int[] diem;
diem = new int[10];
//hoặc
int[] diem = new int[10];
//khai báo và khởi tạo giá trị cho mảng
int[] diem3 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Kiểu giá trị Giá trị mặc định
Số 0
Ký tự (char) '0' (ký tự null)
Boolean False
DateTime 01/01/0001 00:00:00
Các giá trị mặc định của mảng
DateTime 01/01/0001 00:00:00
Kiểu tham chiếu null
Lập trình hướng đối tượng & Collection 33
Lấy độ dài của mảng
Truy cập đến phần tử của mảng
Gán giá trị cho các phần tử của mảng
Duyệt qua các phần tử của mảng
Thao tác với mảng
int tong = diem[0] + diem[1] + diem[2];
int dodai = diem.Length
Lấy độ dài của mảng
Truy cập đến phần tử của mảng
Gán giá trị cho các phần tử của mảng
Duyệt qua các phần tử của mảng
Lập trình hướng đối tượng & Collection 34
diem[0] = 9;
int tong = 0;
for (int i = 0; i < diem.Length; i++)
{
tong += diem[i];
}
Khai báo mảng hai chiều
Gán giá trị cho các phần tử
Mảng hai chiều
kieu[,] tenMang = new kieu[hang, cot]
//ví dụ:
int[,] diem = new int [3, 2];
//khai báo và khởi tạo giá trị cho mảng
int[,] diem2 = { { 9, 8 }, { 7, 6 }, { 5, 9 } };
Khai báo mảng hai chiều
Gán giá trị cho các phần tử
Lập trình hướng đối tượng & Collection 35
diem[0, 0] = 8;
diem[0, 1] = 9;
Mỗi mảng là một thể hiện của lớp Array
Lớp Array chứa các thuộc tính và phương thức để thao
tác với lớp
Lớp Array
Thuộc tính Mô tả
Length Cho biết số phần tử của element
Lập trình hướng đối tượng & Collection 36
Phương thức thực thể Mô tả
GetLength(chieu) Cho biết số phần tử của chiều được chỉ ra
GetUpperBound(chieu) Cho biết chỉ số của phần tử cuối cùng của
chiều được chỉ ra
Tham khảo thêm các thuộc tính và phương thức trên trang msdn
Phương thức tĩnh Mô tả
Copy(mang1, mang2, chieudai) Copy tất cả các giá trị từ mảng này sang mảng khác
BinarySearch(mang, giatri) Tìm kiếm trên mảng một chiều đã được sắp xếp
theo thứ tự tăng dần và trả về chỉ số của phần tử có
giá trị được chỉ ra
Sort(mang) Sắp xếp các thành phần của mảng một chiều theo
thứ tự tăng dần
Lớp Array
Lập trình hướng đối tượng & Collection 37
string[] tenArr = { "Thanh", "Kien", "Linh", "An" };
Array.Sort(tenArr);
string str="";
foreach (string ten in tenArr)
{
str += ten + "n";
}
MessageBox.Show(str);
Các lớp collection không định kiểu được lưu trữ trong
namespace System.Collections
Lưu trữ các kiểu khác nhau trong một collection
Các đối tượng khi lưu vào collection không định kiểu được
tự động chuyển thành kiểu Object (boxing)
Khi lấy dữ liệu ra khỏi collection cần phải ép dữ liệu về
đúng kiểu ban đầu (unboxing)
Nhược điểm:
Cần phải ép về kiểu ban đầu
Thường gặp lỗi xẩy ra khi ép kiểu sai
 Collection định kiểu ra đời để khắc phục nhược điểm
này, tuy nhiên Collection không định kiểu vẫn được sử dụng
để phát triển tiếp những ứng dụng trước đây
Collection không định kiểu
Các lớp collection không định kiểu được lưu trữ trong
namespace System.Collections
Lưu trữ các kiểu khác nhau trong một collection
Các đối tượng khi lưu vào collection không định kiểu được
tự động chuyển thành kiểu Object (boxing)
Khi lấy dữ liệu ra khỏi collection cần phải ép dữ liệu về
đúng kiểu ban đầu (unboxing)
Nhược điểm:
Cần phải ép về kiểu ban đầu
Thường gặp lỗi xẩy ra khi ép kiểu sai
 Collection định kiểu ra đời để khắc phục nhược điểm
này, tuy nhiên Collection không định kiểu vẫn được sử dụng
để phát triển tiếp những ứng dụng trước đây
Lập trình hướng đối tượng & Collection 38
Boxing và Unboxing
Lập trình hướng đối tượng & Collection 39
Boxing Unboxing
Demo sử dụng collection không định kiểu
ArrayList numbers = new ArrayList();
numbers.Add(3);
numbers.Add(7);
numbers.Add("Test"); //Không gây lỗi biên dịch
int sum = 0;
for (int i = 0; i < numbers.Count; i++)
{
int number = (int)numbers[i]; //Gây lỗi lúc chạy
sum += number;
}
Lập trình hướng đối tượng & Collection 40
ArrayList numbers = new ArrayList();
numbers.Add(3);
numbers.Add(7);
numbers.Add("Test"); //Không gây lỗi biên dịch
int sum = 0;
for (int i = 0; i < numbers.Count; i++)
{
int number = (int)numbers[i]; //Gây lỗi lúc chạy
sum += number;
}
Các lớp collection định kiểu được lưu trữ trong
namespace System.Collections.Generic
Lưu trữ cùng một kiểu dữ liệu trong một Collection
Collection định kiểu
Collection Mô tả
Dictionary<TKey, TValue> Lưu trữ collection gồm cặp khóa và giá trị
HashSet<T> Lưu trữ tập các giá trị
Các lớp collection định kiểu được lưu trữ trong
namespace System.Collections.Generic
Lưu trữ cùng một kiểu dữ liệu trong một Collection
Lập trình hướng đối tượng & Collection 41
HashSet<T> Lưu trữ tập các giá trị
LinkedList<T> Lưu trữ danh sách liên kết đôi
List<T> Lưu trữ mảng các đối tượng
Queue<T> Lưu trữ hàng đợi “Vào trước, ra trước”
SortedSet<T> Lưu trữ tập các giá trị được sắp xếp
Stack<T> Lưu trữ đối tượng theo “Vào sau, ra trước”
Tìm hiểu thêm về các collection và cách sử dụng chúng trên trang
http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx
Demo sử dụng collection định kiểu
List<int> numbers = new List<int>();
numbers.Add(3);
numbers.Add(7);
numbers.Add("Test"); //Gây lỗi biên dịch, tránh gây lỗi lúc chạy
int sum = 0;
for (int i = 0; i < numbers.Count; i++)
{
int number = numbers[i];
sum += number;
}
Lập trình hướng đối tượng & Collection 42
List<int> numbers = new List<int>();
numbers.Add(3);
numbers.Add(7);
numbers.Add("Test"); //Gây lỗi biên dịch, tránh gây lỗi lúc chạy
int sum = 0;
for (int i = 0; i < numbers.Count; i++)
{
int number = numbers[i];
sum += number;
}
TỰ SINH MÃ
KHAI BÁO
Lập trình hướng đối tượng & Collection 43
TỰ SINH MÃ
KHAI BÁO
Tự sinh mã là tính năng mới của Visual Studio 2010
Tính năng này sẽ tự sinh mã khai báo cho bạn khi cần
thiết
Bạn khai báo một đối tượng của lớp chưa định nghĩa
Tính năng này sẽ tự động sinh mã định nghĩa lớp cho bạn
Bạn gọi một phương thức chưa được định nghĩa
Tính năng này sẽ định nghĩa phương thức cho bạn
Tự sinh mã khai báo
(generate code stubs)
Tự sinh mã là tính năng mới của Visual Studio 2010
Tính năng này sẽ tự sinh mã khai báo cho bạn khi cần
thiết
Bạn khai báo một đối tượng của lớp chưa định nghĩa
Tính năng này sẽ tự động sinh mã định nghĩa lớp cho bạn
Bạn gọi một phương thức chưa được định nghĩa
Tính năng này sẽ định nghĩa phương thức cho bạn
Lập trình hướng đối tượng & Collection 44
Khai báo đối tượng thuộc lớp KhachHang chưa được
định nghĩa
Demo sử dụng tính
năng tự sinh mã khai báo
Chọn
Generate class for
‘KhachHang’
Lập trình hướng đối tượng & Collection 45
Lớp KhachHang được tạo
Dấu răng cưa báo lỗi bị
mất đi
Gọi đến phương thức hienThiThongTin chưa được
định nghĩa
Demo sử dụng tính
năng tự sinh mã khai báo
Lập trình hướng đối tượng & Collection 46
Phương thức
hienThiThongTin
được tự động định nghĩa
Gọi đến phương thức hienThiThongTin chưa được
định nghĩa với hai đối số name và age
Demo sử dụng tính
năng tự sinh mã khai báo
Lập trình hướng đối tượng & Collection 47
Thêm một phương thức
hienThiThongTin
được định nghĩa với hai tham số
Các khái niệm về lập trình hướng đối tượng và collection
trong C# giống hệt như trong Visual Basic, chỉ khác
nhau về cú pháp
Đối với kế thừa
Trong lớp cơ sở viết từ khóa virtual trước phương thức sẽ
được ghi đè
Trong lớp dẫn xuất viết từ khóa override trước phương
thức sẽ được ghi đè
Đa hình là tính năng quan trọng trong lập trình hướng
đối tượng giúp ứng dụng sẽ ứng xử khác nhau đối với
các đối tượng khác nhau kế thừa từ một lớp cơ sở
Để tiện lợi cho quá trình lập trình, .NET cung cấp các đối
tượng và cấu trúc được cài đặt sẵn như DateTime, String
Tổng kết bài học
Các khái niệm về lập trình hướng đối tượng và collection
trong C# giống hệt như trong Visual Basic, chỉ khác
nhau về cú pháp
Đối với kế thừa
Trong lớp cơ sở viết từ khóa virtual trước phương thức sẽ
được ghi đè
Trong lớp dẫn xuất viết từ khóa override trước phương
thức sẽ được ghi đè
Đa hình là tính năng quan trọng trong lập trình hướng
đối tượng giúp ứng dụng sẽ ứng xử khác nhau đối với
các đối tượng khác nhau kế thừa từ một lớp cơ sở
Để tiện lợi cho quá trình lập trình, .NET cung cấp các đối
tượng và cấu trúc được cài đặt sẵn như DateTime, String
Lập trình hướng đối tượng & Collection 48
Collection được phân làm hai loại Collection định kiểu và
không định kiểu
Collection không định kiểu có thể lưu nhiều loại đối
tượng và collection, nhưng khi lưu sẽ chuyển các đối
tượng này về kiểu Object (boxing)
Collection định kiểu chỉ lưu một kiểu đã được định nghĩa
trước vào collection
Visual Studio 2010 cung cấp tính năng tự sinh mã khai
báo khi các biến hoặc phương thức được gọi chưa được
khai báo trước đó
Tổng kết bài học
Collection được phân làm hai loại Collection định kiểu và
không định kiểu
Collection không định kiểu có thể lưu nhiều loại đối
tượng và collection, nhưng khi lưu sẽ chuyển các đối
tượng này về kiểu Object (boxing)
Collection định kiểu chỉ lưu một kiểu đã được định nghĩa
trước vào collection
Visual Studio 2010 cung cấp tính năng tự sinh mã khai
báo khi các biến hoặc phương thức được gọi chưa được
khai báo trước đó
Lập trình hướng đối tượng & Collection 49

More Related Content

What's hot

Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTMasterCode.vn
 
Cây nhị phân tìm kiếm
Cây nhị phân tìm kiếmCây nhị phân tìm kiếm
Cây nhị phân tìm kiếmkikihoho
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngNguyễn Danh Thanh
 
91684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-291684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-2tranquanthien
 
Bài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPT
Bài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPTBài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPT
Bài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPTMasterCode.vn
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGTrường Phạm
 
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...MasterCode.vn
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Designyht4ever
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệHưởng Nguyễn
 
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)iwanttoit
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệutrieulongweb
 
chuong 1. co so logic
chuong 1. co so logicchuong 1. co so logic
chuong 1. co so logickikihoho
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTMasterCode.vn
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttanhhuycan83
 
Thuật toán mã hóa rsa
Thuật toán mã hóa rsaThuật toán mã hóa rsa
Thuật toán mã hóa rsaBảo Điệp
 
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...MasterCode.vn
 
Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinVõ Phúc
 

What's hot (20)

Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
 
Thuật toán K mean
Thuật toán K meanThuật toán K mean
Thuật toán K mean
 
Cây nhị phân tìm kiếm
Cây nhị phân tìm kiếmCây nhị phân tìm kiếm
Cây nhị phân tìm kiếm
 
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di độngPhân tích thiết kế hệ thống của hàng bán điện thoại di động
Phân tích thiết kế hệ thống của hàng bán điện thoại di động
 
91684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-291684060 356-cau-trắc-nghiệm-csdl-2
91684060 356-cau-trắc-nghiệm-csdl-2
 
Bài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPT
Bài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPTBài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPT
Bài 7: Danh sách liên kết (LINKED LIST) và tập hợp (SET) - Giáo trình FPT
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
 
ERD - Database Design
ERD - Database DesignERD - Database Design
ERD - Database Design
 
Bài tập HTML/CSS
Bài tập HTML/CSSBài tập HTML/CSS
Bài tập HTML/CSS
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
 
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
 
chuong 1. co so logic
chuong 1. co so logicchuong 1. co so logic
chuong 1. co so logic
 
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPTBài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
 
Phân Tích Thiết Kế Hệ Thống Thông Tin - Quản Lý Điểm
Phân Tích Thiết Kế Hệ Thống Thông Tin -  Quản Lý ĐiểmPhân Tích Thiết Kế Hệ Thống Thông Tin -  Quản Lý Điểm
Phân Tích Thiết Kế Hệ Thống Thông Tin - Quản Lý Điểm
 
Thuật toán mã hóa rsa
Thuật toán mã hóa rsaThuật toán mã hóa rsa
Thuật toán mã hóa rsa
 
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
Bài 3: Lập trình giao diện điều khiển & Xử lý sự kiện - Lập trình winform - G...
 
Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tin
 

Viewers also liked

Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT
Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPTBài 3: COLLECTION TRONG VB.NET - Giáo trình FPT
Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPTMasterCode.vn
 
Bài 1 - Làm quen với C# - Lập trình winform
Bài 1 - Làm quen với C# - Lập trình winformBài 1 - Làm quen với C# - Lập trình winform
Bài 1 - Làm quen với C# - Lập trình winformMasterCode.vn
 
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPTBài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPTMasterCode.vn
 
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPTBÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPTMasterCode.vn
 
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#An Nguyen
 
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...MasterCode.vn
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnMasterCode.vn
 
Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Kuli An
 
Qt 03. gpp ban 0 theo don
Qt 03. gpp ban 0 theo donQt 03. gpp ban 0 theo don
Qt 03. gpp ban 0 theo donmrcam88
 
Bài 5 Hướng dẫn xây dựng Extension
Bài 5 Hướng dẫn xây dựng ExtensionBài 5 Hướng dẫn xây dựng Extension
Bài 5 Hướng dẫn xây dựng ExtensionMasterCode.vn
 
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng webBài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng webMasterCode.vn
 
Bài 6 Sử dụng hàm - Giáo trình FPT
Bài 6 Sử dụng hàm - Giáo trình FPTBài 6 Sử dụng hàm - Giáo trình FPT
Bài 6 Sử dụng hàm - Giáo trình FPTMasterCode.vn
 
BÀI 1 Những khái niệm đầu tiên về HTML5 - Giáo trình FPT
BÀI 1 Những khái niệm đầu tiên về HTML5 - Giáo trình FPTBÀI 1 Những khái niệm đầu tiên về HTML5 - Giáo trình FPT
BÀI 1 Những khái niệm đầu tiên về HTML5 - Giáo trình FPTMasterCode.vn
 
Bài 4 Quản trị domain & hosting Windows - Quản trị website
Bài 4 Quản trị domain & hosting Windows - Quản trị websiteBài 4 Quản trị domain & hosting Windows - Quản trị website
Bài 4 Quản trị domain & hosting Windows - Quản trị websiteMasterCode.vn
 
Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng webBài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng webMasterCode.vn
 
Bài 3 Cài đặt và quản lý các Extension của Joomla
Bài 3 Cài đặt và quản lý các Extension của JoomlaBài 3 Cài đặt và quản lý các Extension của Joomla
Bài 3 Cài đặt và quản lý các Extension của JoomlaMasterCode.vn
 
Bài 6: DEDICATED SERVER/VIRTUAL PRIVATE SERVER (VPS HOSTING) - Quản trị website
Bài 6: DEDICATED SERVER/VIRTUAL PRIVATE SERVER (VPS HOSTING) - Quản trị websiteBài 6: DEDICATED SERVER/VIRTUAL PRIVATE SERVER (VPS HOSTING) - Quản trị website
Bài 6: DEDICATED SERVER/VIRTUAL PRIVATE SERVER (VPS HOSTING) - Quản trị websiteMasterCode.vn
 

Viewers also liked (20)

Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT
Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPTBài 3: COLLECTION TRONG VB.NET - Giáo trình FPT
Bài 3: COLLECTION TRONG VB.NET - Giáo trình FPT
 
Bài 1 - Làm quen với C# - Lập trình winform
Bài 1 - Làm quen với C# - Lập trình winformBài 1 - Làm quen với C# - Lập trình winform
Bài 1 - Làm quen với C# - Lập trình winform
 
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPTBài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT
 
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPTBÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
BÀI 2: Thiết kế FORM và xử lý sự kiện - Giáo trình FPT
 
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#
 
BTL Lập trình C#
BTL Lập trình C#BTL Lập trình C#
BTL Lập trình C#
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
 
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
 
Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#
 
Bài tập thực hành C#
Bài tập thực hành C#Bài tập thực hành C#
Bài tập thực hành C#
 
Qt 03. gpp ban 0 theo don
Qt 03. gpp ban 0 theo donQt 03. gpp ban 0 theo don
Qt 03. gpp ban 0 theo don
 
Bài 5 Hướng dẫn xây dựng Extension
Bài 5 Hướng dẫn xây dựng ExtensionBài 5 Hướng dẫn xây dựng Extension
Bài 5 Hướng dẫn xây dựng Extension
 
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng webBài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
 
Bài 6 Sử dụng hàm - Giáo trình FPT
Bài 6 Sử dụng hàm - Giáo trình FPTBài 6 Sử dụng hàm - Giáo trình FPT
Bài 6 Sử dụng hàm - Giáo trình FPT
 
BÀI 1 Những khái niệm đầu tiên về HTML5 - Giáo trình FPT
BÀI 1 Những khái niệm đầu tiên về HTML5 - Giáo trình FPTBÀI 1 Những khái niệm đầu tiên về HTML5 - Giáo trình FPT
BÀI 1 Những khái niệm đầu tiên về HTML5 - Giáo trình FPT
 
Bài 4 Quản trị domain & hosting Windows - Quản trị website
Bài 4 Quản trị domain & hosting Windows - Quản trị websiteBài 4 Quản trị domain & hosting Windows - Quản trị website
Bài 4 Quản trị domain & hosting Windows - Quản trị website
 
Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng webBài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
 
Bài 3 Cài đặt và quản lý các Extension của Joomla
Bài 3 Cài đặt và quản lý các Extension của JoomlaBài 3 Cài đặt và quản lý các Extension của Joomla
Bài 3 Cài đặt và quản lý các Extension của Joomla
 
Bài 6: DEDICATED SERVER/VIRTUAL PRIVATE SERVER (VPS HOSTING) - Quản trị website
Bài 6: DEDICATED SERVER/VIRTUAL PRIVATE SERVER (VPS HOSTING) - Quản trị websiteBài 6: DEDICATED SERVER/VIRTUAL PRIVATE SERVER (VPS HOSTING) - Quản trị website
Bài 6: DEDICATED SERVER/VIRTUAL PRIVATE SERVER (VPS HOSTING) - Quản trị website
 

Similar to Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trình FPT

Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượngHưởng Nguyễn
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpTráng Hà Viết
 
Oop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátOop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátTráng Hà Viết
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaNhuận Lê Văn
 
Ket tap, ke thua
Ket tap, ke thuaKet tap, ke thua
Ket tap, ke thuaTuan Do
 
Pdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vnPdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vnMasterCode.vn
 
Những điểm mới trong c# 3.0
Những điểm mới trong c# 3.0Những điểm mới trong c# 3.0
Những điểm mới trong c# 3.0Trần Thiên Đại
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09xcode_esvn
 
Bai04 tao vasudungdoituong
Bai04 tao vasudungdoituongBai04 tao vasudungdoituong
Bai04 tao vasudungdoituongNhuận Lê Văn
 
Pplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPix Nhox
 
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTBài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTMasterCode.vn
 

Similar to Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trình FPT (20)

Bai05 ket tapvakethua
Bai05 ket tapvakethuaBai05 ket tapvakethua
Bai05 ket tapvakethua
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
Chuong8 (2)
Chuong8 (2)Chuong8 (2)
Chuong8 (2)
 
Bai08 lap trinhtongquat
Bai08 lap trinhtongquatBai08 lap trinhtongquat
Bai08 lap trinhtongquat
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượng
 
Chuong5 (2)
Chuong5 (2)Chuong5 (2)
Chuong5 (2)
 
Oop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớpOop unit 04 các kỹ thuật xây dựng lớp
Oop unit 04 các kỹ thuật xây dựng lớp
 
Oop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátOop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quát
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethua
 
Ket tap, ke thua
Ket tap, ke thuaKet tap, ke thua
Ket tap, ke thua
 
Pdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vnPdfc fast food-mastercode.vn
Pdfc fast food-mastercode.vn
 
Giáo trình c#
Giáo trình c#Giáo trình c#
Giáo trình c#
 
Chuong3 c
Chuong3 c Chuong3 c
Chuong3 c
 
Những điểm mới trong c# 3.0
Những điểm mới trong c# 3.0Những điểm mới trong c# 3.0
Những điểm mới trong c# 3.0
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
 
Bài 6: Working with DATA
Bài 6: Working with DATABài 6: Working with DATA
Bài 6: Working with DATA
 
Bai04 tao vasudungdoituong
Bai04 tao vasudungdoituongBai04 tao vasudungdoituong
Bai04 tao vasudungdoituong
 
Linq net
Linq net Linq net
Linq net
 
Pplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09a
 
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTBài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
 

More from MasterCode.vn

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnMasterCode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnMasterCode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnMasterCode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnMasterCode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnMasterCode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnMasterCode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnMasterCode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnMasterCode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnMasterCode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnMasterCode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnMasterCode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnMasterCode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vnMasterCode.vn
 
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...MasterCode.vn
 

More from MasterCode.vn (20)

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
 
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
 

Bài 2: Lập trình hướng đối tượng & Collection - Lập trình winform - Giáo trình FPT

  • 1. Bài 2: Lập trình hướng đối tượng & Collection
  • 2. Giới thiệu về .NET và Visual Studio Giới thiệu về các kiến thức lập trình cơ bản trên ngôn ngữ C# Kiểu dữ liệu Toán tử Thao tác với chuỗi Cấu trúc điều khiển Phương thức Xử lý ngoại lệ Hệ thống bài cũ Giới thiệu về .NET và Visual Studio Giới thiệu về các kiến thức lập trình cơ bản trên ngôn ngữ C# Kiểu dữ liệu Toán tử Thao tác với chuỗi Cấu trúc điều khiển Phương thức Xử lý ngoại lệ Lập trình hướng đối tượng & Collection 2
  • 3. Xây dựng lớp, cấu trúc Tạo và sử dụng đối tượng Xây dựng lớp kế thừa Khái niệm đa hình và sử dụng đa hình Sử dụng các lớp và đối tượng dựng sẵn Collection Tự sinh mã khai báo Mục tiêu bài học Xây dựng lớp, cấu trúc Tạo và sử dụng đối tượng Xây dựng lớp kế thừa Khái niệm đa hình và sử dụng đa hình Sử dụng các lớp và đối tượng dựng sẵn Collection Tự sinh mã khai báo Lập trình hướng đối tượng & Collection 3
  • 4. LỚP, CẤU TRÚC VÀ ĐỐI TƯỢNG Lập trình hướng đối tượng & Collection 4 LỚP, CẤU TRÚC VÀ ĐỐI TƯỢNG
  • 5. Định nghĩa lớp Visual Basic Định nghĩa lớp Tạo đối tượng từ lớp C# Public Class Sanpham End Class public class Sanpham { } Định nghĩa lớp Tạo đối tượng từ lớp Lập trình hướng đối tượng & Collection 5 Dim dtSanpham As Sanpham dtSanpham = New Sanpham() Sanpham dtSanpham ; dtSanpham = new Sanpham();
  • 6. Phương thức khởi tạo Visual Basic Khởi tạo không có tham số Khởi tạo có tham số C# Khởi tạo không có tham số Khởi tạo có tham số Public Sub Sanpham() End Sub public Sanpham() { } Khởi tạo không có tham số Khởi tạo có tham số Khởi tạo không có tham số Khởi tạo có tham số Lập trình hướng đối tượng & Collection 6 Public Sub Sanpham(As Decimal) End Sub public void Sanpham(decimal gia) { }
  • 7. Định nghĩa các trường và phương thức cho lớp Visual Basic Định nghĩa trường Định nghĩa phương thức C# Private soluong As Integer Public gia As Decimal private int soluong; public decimal gia; Định nghĩa trường Định nghĩa phương thức Lập trình hướng đối tượng & Collection 7 Sub hienthi() End Sub public void hienthi() { } Function hienthi() As Integer End Function public int hienthi() { }
  • 8. Điều khiển truy cập Phạm vi public internal protected private Cùng lớp Y Y Y Y Lớp kế thừa Y Y Y N Cùng assembly Y Y N N Khác assembly Y N N N Lập trình hướng đối tượng & Collection 8 Khi build solution, mỗi project trong solution được build thành một assemply Điều khiển truy cập mặc định là private Khác assembly Y N N N
  • 9. Kế thừa SanPham string ma string ten decimal gia string hienThiThongTin() Lớp cơ sở Lập trình hướng đối tượng & Collection 9 Sach string ma string ten decimal gia string hienThiThongTin() string tacgia PhanMem string ma string ten decimal gia string hienThiThongTin() string phienban Lớp dẫn xuất
  • 10. Viết từ khóa virtual trước phương thức có thể sẽ được ghi đè ở các lớp dẫn xuất Tạo lớp cơ sở public class SanPham { public string Ma { get; set; } public string Ten { get; set; } public decimal Gia { get; set; } public SanPham(string ma, string ten, decimal gia) { this.Ma = ma; this.Ten = ten; this.Gia = gia; } public virtual string hienThiThongTin() { return Ma + "n" + Ten + "n" + Gia; } } Lập trình hướng đối tượng & Collection 10 public class SanPham { public string Ma { get; set; } public string Ten { get; set; } public decimal Gia { get; set; } public SanPham(string ma, string ten, decimal gia) { this.Ma = ma; this.Ten = ten; this.Gia = gia; } public virtual string hienThiThongTin() { return Ma + "n" + Ten + "n" + Gia; } }
  • 11. Định nghĩa lớp dẫn xuất Định nghĩa phương thức khởi tạo gọi đến phương thức khởi tạo của lớp cơ sở Gọi đến phương thức hoặc thuộc tính của lớp cơ sở Ẩn phương thức non-virtual Ghi đè lên phương thức virtual Tạo lớp dẫn xuất public class TenLopDanXuat: TenLopCoSo public TenLop (danhSachThamSo): base(danhSachThamSo) Định nghĩa lớp dẫn xuất Định nghĩa phương thức khởi tạo gọi đến phương thức khởi tạo của lớp cơ sở Gọi đến phương thức hoặc thuộc tính của lớp cơ sở Ẩn phương thức non-virtual Ghi đè lên phương thức virtual Lập trình hướng đối tượng & Collection 11 base.tenPhuongThuc(danhSachThamSo) base.tenThuocTinh public new kieuTraVe tenPhuongThuc public override kieuTraVe tenPhuongThuc
  • 12. Demo tạo lớp dẫn xuất class Sach: SanPham { public string Tacgia { get; set; } public Sach(string ma, string ten, string tacgia, decimal gia) : base(ma, ten, gia) { this.Tacgia = tacgia; } public override string hienThiThongTin() { return base.hienThiThongTin(); } } Lập trình hướng đối tượng & Collection 12 class Sach: SanPham { public string Tacgia { get; set; } public Sach(string ma, string ten, string tacgia, decimal gia) : base(ma, ten, gia) { this.Tacgia = tacgia; } public override string hienThiThongTin() { return base.hienThiThongTin(); } }
  • 13. Cách khác để ghi đè lên một phương thức Demo tạo lớp dẫn xuất public override string hienThiThongTin() { return base.Ma + "n" + base.Ten + "n" + Tacgia + "n" + base.Gia; } Lập trình hướng đối tượng & Collection 13 public override string hienThiThongTin() { return base.hienThiThongTin() + "n" + Tacgia; } Gọi đến phương thức hienThiThongTin() của lớp cha
  • 14. Là tính năng quan trọng trong lập trình hướng đối tượng Giúp ứng dụng sẽ ứng xử khác nhau đối với các đối tượng khác nhau kế thừa từ một lớp cơ sở Thường được sử dụng khi không xác định được kiểu của đối tượng lúc chạy Đa hình Lập trình hướng đối tượng & Collection 14
  • 15. Demo sử dụng đa hình Sach sach = new Sach("S001", "Lap trinh Winform", "Joel Murach", 20); PhanMem phanmem = new PhanMem("PM001", "Kapersky", "2012", 30); SanPham sanpham; sanpham = sach; MessageBox.Show(sanpham.hienThiThongTin()); sanpham = phanmem; MessageBox.Show(sanpham.hienThiThongTin()); Lập trình hướng đối tượng & Collection 15 Sach sach = new Sach("S001", "Lap trinh Winform", "Joel Murach", 20); PhanMem phanmem = new PhanMem("PM001", "Kapersky", "2012", 30); SanPham sanpham; sanpham = sach; MessageBox.Show(sanpham.hienThiThongTin()); sanpham = phanmem; MessageBox.Show(sanpham.hienThiThongTin());
  • 16. Cho phương thức hienThi như sau Hãy đoán kết quả khi gọi phương thức hienThi như sau Demo sử dụng đa hình private void hienThi(SanPham sanpham) { MessageBox.Show(sanpham.hienThiThongTin()); } Cho phương thức hienThi như sau Hãy đoán kết quả khi gọi phương thức hienThi như sau Lập trình hướng đối tượng & Collection 16 Sach sach = new Sach("S001", "Lap trinh Winform", "Joel Murach", 20); PhanMem phanmem = new PhanMem("PM001", "Kapersky", "2012", 30); hienThi(sach); hienThi(phanmem);
  • 17. Dùng để định nghĩa kiểu biến giống như lớp nhưng kiểu giá trị Các kiểu giá trị như int, decimal, DateTime… Ưu điểm của cấu trúc Tiết kiệm bộ nhớ Khởi tạo nhanh hơn  Sử dụng cấu trúc để lưu trữ dữ liệu nhỏ và cho đối tượng muốn lưu trữ kiểu giá trị Cấu trúc giống lớp Các trường, thuộc tính, phương thức, sự kiện và toán hạng Thành viên tĩnh và thành viên thực thể Cấu trúc Dùng để định nghĩa kiểu biến giống như lớp nhưng kiểu giá trị Các kiểu giá trị như int, decimal, DateTime… Ưu điểm của cấu trúc Tiết kiệm bộ nhớ Khởi tạo nhanh hơn  Sử dụng cấu trúc để lưu trữ dữ liệu nhỏ và cho đối tượng muốn lưu trữ kiểu giá trị Cấu trúc giống lớp Các trường, thuộc tính, phương thức, sự kiện và toán hạng Thành viên tĩnh và thành viên thực thể Lập trình hướng đối tượng & Collection 17
  • 18. Hạn chế của cấu trúc so với lớp Không hỗ trợ phương thức khởi tạo không có tham số Không hỗ trợ kế thừa Không hỗ trợ thuộc tính tự khởi tạo Các thành viên chỉ được gọi khi được khởi tạo Cấu trúc Hạn chế của cấu trúc so với lớp Không hỗ trợ phương thức khởi tạo không có tham số Không hỗ trợ kế thừa Không hỗ trợ thuộc tính tự khởi tạo Các thành viên chỉ được gọi khi được khởi tạo Lập trình hướng đối tượng & Collection 18
  • 19. Demo định nghĩa cấu trúc public struct SanPham { public string Ma; public string Ten; public decimal Gia; public SanPham(string ma, string ten, decimal gia) { this.Ma = ma; this.Ten = ten; this.Gia = gia; } public string hienThiThongTin() { return Ma + "n" + Ten + "n" + Gia; } } Lập trình hướng đối tượng & Collection 19 public struct SanPham { public string Ma; public string Ten; public decimal Gia; public SanPham(string ma, string ten, decimal gia) { this.Ma = ma; this.Ten = ten; this.Gia = gia; } public string hienThiThongTin() { return Ma + "n" + Ten + "n" + Gia; } }
  • 20. Khai báo và gán giá trị cho cấu trúc Khởi tạo giá trị cho cấu trúc SanPham sp; sp.Ma = "001"; sp.Ten = "Wave RS"; sp.Gia = 20000000; MessageBox.Show(sp.hienThiThongTin()); Demo khai báo và khởi tạo cấu trúc Khai báo và gán giá trị cho cấu trúc Khởi tạo giá trị cho cấu trúc Lập trình hướng đối tượng & Collection 20 SanPham sp2 = new SanPham("002", "SH", 120000000); MessageBox.Show(sp2. hienThiThongTin());
  • 21. NAMESPACES Lập trình hướng đối tượng & Collection 21 NAMESPACES
  • 22. .NET 4.0 cung cấp rất nhiều lớp và cấu trúc cài đặt sẵn Các lớp và cấu trúc này thuộc .NET FrameWork Library Các lớp và cấu trúc liên quan đến nhau được nhóm thành một Namespaces Namespaces được tổ chức theo cấu trúc phân cấp Namespaces lớn nhất là Sytem Lớp và cấu trúc cài đặt sẵn .NET 4.0 cung cấp rất nhiều lớp và cấu trúc cài đặt sẵn Các lớp và cấu trúc này thuộc .NET FrameWork Library Các lớp và cấu trúc liên quan đến nhau được nhóm thành một Namespaces Namespaces được tổ chức theo cấu trúc phân cấp Namespaces lớn nhất là Sytem Lập trình hướng đối tượng & Collection 22
  • 23. Một số namespaces thông dụng Các kiểu cơ bản thuộc namespaces System System.Collections System.Collections.Generic System.IO System.Windows.Forms Namespaces Một số namespaces thông dụng Các kiểu cơ bản thuộc namespaces System System.Collections System.Collections.Generic System.IO System.Windows.Forms Lập trình hướng đối tượng & Collection 23
  • 24. Xem file NET35_Namespaces_Poster_LORES để biết thêm về các lớp được các lớp được hỗ trợ bởi .NET 3.5 Xem file PDC2008-NETFX4 để biết thêm về các lớp mới được .NET 4 hỗ trợ Namespaces Lập trình hướng đối tượng & Collection 24
  • 25. CẤU TRÚC DATETIME & LỚP STRING Lập trình hướng đối tượng & Collection 25 CẤU TRÚC DATETIME & LỚP STRING
  • 26. Thuộc namespace System Cú pháp tạo đối tượng DateTime Ví dụ Cấu trúc DateTime DateTime tenbien = new DateTime (nam, thang, ngay [, gio, phut, giay [, miligiay]]); //hoặc DateTime tenbien = DateTime.Parse (string) Thuộc namespace System Cú pháp tạo đối tượng DateTime Ví dụ Lập trình hướng đối tượng & Collection 26 //1/30/2010 12:00 AM DateTime date1 = new DateTime(10, 01, 30); //1/30/2010 2:15 PM DateTime date2 = new DateTime(2010, 1, 30, 14, 15, 0); //1/30/2010 12:00 AM DateTime date3 = DateTime.Parse("01/30/10");
  • 27. Thuộc tính của DateTime Thuộc tính Mô tả Now Trả về thời gian và ngày tháng hiện tại Today Trả về ngày tháng hiện tại Month Trả về tháng của giá trị DateTime Day Trả về ngày của giá trị DateTime Year Trả về năm của giá trị DateTime Lập trình hướng đối tượng & Collection 27 Year Trả về năm của giá trị DateTime Hour Trả về giờ của giá trị DateTime Minute Trả về phút của giá trị DateTime Second Trả về giây của giá trị DateTime DateTime thoiGianHienTai = DateTime.Now; //30/1/2010 10:26:35 DateTime ngayThangHienTai = DateTime.Today; //30/1/2010 12:00:00 AM int thang = ngayThangHienTai.Day; //1
  • 28. Phương thức của DateTime Phương thức Mô tả addDays(songay) Thêm số ngày vào giá trị kiểu DateTime và trả về giá trị khác kiểu DateTime addMonths(sothang) Thêm số tháng vào giá trị kiểu DateTime và trả về giá trị khác kiểu DateTime addYears(sonam) Thêm số năm vào giá trị kiểu DateTime và trả về giá trị khác kiểu DateTime Lập trình hướng đối tượng & Collection 28 Thêm số năm vào giá trị kiểu DateTime và trả về giá trị khác kiểu DateTime DaysInMonth(nam, thang) Trả về số ngày có trong 1 tháng năm xác định IsLeapYear(nam) Trả về giá trị Boolean cho biết năm được chỉ ra có phải là năm nhuận hay không DateTime tgianHienTai = DateTime.Now; //30/1/2010 10:26:35 DateTime tgianMoi = tgianHienTai.AddDays(60); //30/4/2010 10:26:35
  • 29. Thuộc namespace System Lớp String Thuộc tính Mô tả Length Lấy số ký tự trong chuỗi Index Mô tả [chiso] Truy cập đến ký tự tại vị trí được chỉ ra Lập trình hướng đối tượng & Collection 29Lập trình hướng đối tượng & Collection 29 Phương thức Mô tả StartsWith(chuoi) Trả về giá trị boolean cho biết chuỗi đó có được bắt đầu bằng chuỗi chỉ ra hay không EndsWith(chuoi) Trả về giá trị boolean cho biết chuỗi đó có được kết thúc bằng chuỗi chỉ ra hay không IndexOf(chuoi) Trả về vị trí xuất hiện chuỗi đầu tiên Insert(chisodau, chuoi) Thêm chuỗi được chỉ ra vào vị trí xác định Remove(chisodau, soluong) Trả về chuỗi với số lượng ký tự được xóa từ vị trí được chỉ ra
  • 30. Demo sử dụng String string chars = "abcdefg"; char a = chars[0]; //'a' char b = chars[1]; //'b' bool isStartWith = chars.StartsWith("abc"); //true bool isEndWith = chars.EndsWith("abc"); //false string tenCongTy = "Mike Murach and Associates"; int index1 = tenCongTy.IndexOf("Murach"); //5 int index2 = tenCongTy.LastIndexOf(" "); //15 Lập trình hướng đối tượng & Collection 30 string chars = "abcdefg"; char a = chars[0]; //'a' char b = chars[1]; //'b' bool isStartWith = chars.StartsWith("abc"); //true bool isEndWith = chars.EndsWith("abc"); //false string tenCongTy = "Mike Murach and Associates"; int index1 = tenCongTy.IndexOf("Murach"); //5 int index2 = tenCongTy.LastIndexOf(" "); //15
  • 31. MẢNG VÀ COLLECTION Lập trình hướng đối tượng & Collection 31 MẢNG VÀ COLLECTION
  • 32. Cú pháp khai báo mảng một chiều Ví dụ Mảng kieu[] tenMang; tenMang = new kieu[chieuDaiMang] //hoặc keu[] tenMang = new kieu[chieuDaiMang] int[] diem; diem = new int[10]; //hoặc int[] diem = new int[10]; //khai báo và khởi tạo giá trị cho mảng int[] diem3 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Lập trình hướng đối tượng & Collection 32 int[] diem; diem = new int[10]; //hoặc int[] diem = new int[10]; //khai báo và khởi tạo giá trị cho mảng int[] diem3 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  • 33. Kiểu giá trị Giá trị mặc định Số 0 Ký tự (char) '0' (ký tự null) Boolean False DateTime 01/01/0001 00:00:00 Các giá trị mặc định của mảng DateTime 01/01/0001 00:00:00 Kiểu tham chiếu null Lập trình hướng đối tượng & Collection 33
  • 34. Lấy độ dài của mảng Truy cập đến phần tử của mảng Gán giá trị cho các phần tử của mảng Duyệt qua các phần tử của mảng Thao tác với mảng int tong = diem[0] + diem[1] + diem[2]; int dodai = diem.Length Lấy độ dài của mảng Truy cập đến phần tử của mảng Gán giá trị cho các phần tử của mảng Duyệt qua các phần tử của mảng Lập trình hướng đối tượng & Collection 34 diem[0] = 9; int tong = 0; for (int i = 0; i < diem.Length; i++) { tong += diem[i]; }
  • 35. Khai báo mảng hai chiều Gán giá trị cho các phần tử Mảng hai chiều kieu[,] tenMang = new kieu[hang, cot] //ví dụ: int[,] diem = new int [3, 2]; //khai báo và khởi tạo giá trị cho mảng int[,] diem2 = { { 9, 8 }, { 7, 6 }, { 5, 9 } }; Khai báo mảng hai chiều Gán giá trị cho các phần tử Lập trình hướng đối tượng & Collection 35 diem[0, 0] = 8; diem[0, 1] = 9;
  • 36. Mỗi mảng là một thể hiện của lớp Array Lớp Array chứa các thuộc tính và phương thức để thao tác với lớp Lớp Array Thuộc tính Mô tả Length Cho biết số phần tử của element Lập trình hướng đối tượng & Collection 36 Phương thức thực thể Mô tả GetLength(chieu) Cho biết số phần tử của chiều được chỉ ra GetUpperBound(chieu) Cho biết chỉ số của phần tử cuối cùng của chiều được chỉ ra Tham khảo thêm các thuộc tính và phương thức trên trang msdn
  • 37. Phương thức tĩnh Mô tả Copy(mang1, mang2, chieudai) Copy tất cả các giá trị từ mảng này sang mảng khác BinarySearch(mang, giatri) Tìm kiếm trên mảng một chiều đã được sắp xếp theo thứ tự tăng dần và trả về chỉ số của phần tử có giá trị được chỉ ra Sort(mang) Sắp xếp các thành phần của mảng một chiều theo thứ tự tăng dần Lớp Array Lập trình hướng đối tượng & Collection 37 string[] tenArr = { "Thanh", "Kien", "Linh", "An" }; Array.Sort(tenArr); string str=""; foreach (string ten in tenArr) { str += ten + "n"; } MessageBox.Show(str);
  • 38. Các lớp collection không định kiểu được lưu trữ trong namespace System.Collections Lưu trữ các kiểu khác nhau trong một collection Các đối tượng khi lưu vào collection không định kiểu được tự động chuyển thành kiểu Object (boxing) Khi lấy dữ liệu ra khỏi collection cần phải ép dữ liệu về đúng kiểu ban đầu (unboxing) Nhược điểm: Cần phải ép về kiểu ban đầu Thường gặp lỗi xẩy ra khi ép kiểu sai  Collection định kiểu ra đời để khắc phục nhược điểm này, tuy nhiên Collection không định kiểu vẫn được sử dụng để phát triển tiếp những ứng dụng trước đây Collection không định kiểu Các lớp collection không định kiểu được lưu trữ trong namespace System.Collections Lưu trữ các kiểu khác nhau trong một collection Các đối tượng khi lưu vào collection không định kiểu được tự động chuyển thành kiểu Object (boxing) Khi lấy dữ liệu ra khỏi collection cần phải ép dữ liệu về đúng kiểu ban đầu (unboxing) Nhược điểm: Cần phải ép về kiểu ban đầu Thường gặp lỗi xẩy ra khi ép kiểu sai  Collection định kiểu ra đời để khắc phục nhược điểm này, tuy nhiên Collection không định kiểu vẫn được sử dụng để phát triển tiếp những ứng dụng trước đây Lập trình hướng đối tượng & Collection 38
  • 39. Boxing và Unboxing Lập trình hướng đối tượng & Collection 39 Boxing Unboxing
  • 40. Demo sử dụng collection không định kiểu ArrayList numbers = new ArrayList(); numbers.Add(3); numbers.Add(7); numbers.Add("Test"); //Không gây lỗi biên dịch int sum = 0; for (int i = 0; i < numbers.Count; i++) { int number = (int)numbers[i]; //Gây lỗi lúc chạy sum += number; } Lập trình hướng đối tượng & Collection 40 ArrayList numbers = new ArrayList(); numbers.Add(3); numbers.Add(7); numbers.Add("Test"); //Không gây lỗi biên dịch int sum = 0; for (int i = 0; i < numbers.Count; i++) { int number = (int)numbers[i]; //Gây lỗi lúc chạy sum += number; }
  • 41. Các lớp collection định kiểu được lưu trữ trong namespace System.Collections.Generic Lưu trữ cùng một kiểu dữ liệu trong một Collection Collection định kiểu Collection Mô tả Dictionary<TKey, TValue> Lưu trữ collection gồm cặp khóa và giá trị HashSet<T> Lưu trữ tập các giá trị Các lớp collection định kiểu được lưu trữ trong namespace System.Collections.Generic Lưu trữ cùng một kiểu dữ liệu trong một Collection Lập trình hướng đối tượng & Collection 41 HashSet<T> Lưu trữ tập các giá trị LinkedList<T> Lưu trữ danh sách liên kết đôi List<T> Lưu trữ mảng các đối tượng Queue<T> Lưu trữ hàng đợi “Vào trước, ra trước” SortedSet<T> Lưu trữ tập các giá trị được sắp xếp Stack<T> Lưu trữ đối tượng theo “Vào sau, ra trước” Tìm hiểu thêm về các collection và cách sử dụng chúng trên trang http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx
  • 42. Demo sử dụng collection định kiểu List<int> numbers = new List<int>(); numbers.Add(3); numbers.Add(7); numbers.Add("Test"); //Gây lỗi biên dịch, tránh gây lỗi lúc chạy int sum = 0; for (int i = 0; i < numbers.Count; i++) { int number = numbers[i]; sum += number; } Lập trình hướng đối tượng & Collection 42 List<int> numbers = new List<int>(); numbers.Add(3); numbers.Add(7); numbers.Add("Test"); //Gây lỗi biên dịch, tránh gây lỗi lúc chạy int sum = 0; for (int i = 0; i < numbers.Count; i++) { int number = numbers[i]; sum += number; }
  • 43. TỰ SINH MÃ KHAI BÁO Lập trình hướng đối tượng & Collection 43 TỰ SINH MÃ KHAI BÁO
  • 44. Tự sinh mã là tính năng mới của Visual Studio 2010 Tính năng này sẽ tự sinh mã khai báo cho bạn khi cần thiết Bạn khai báo một đối tượng của lớp chưa định nghĩa Tính năng này sẽ tự động sinh mã định nghĩa lớp cho bạn Bạn gọi một phương thức chưa được định nghĩa Tính năng này sẽ định nghĩa phương thức cho bạn Tự sinh mã khai báo (generate code stubs) Tự sinh mã là tính năng mới của Visual Studio 2010 Tính năng này sẽ tự sinh mã khai báo cho bạn khi cần thiết Bạn khai báo một đối tượng của lớp chưa định nghĩa Tính năng này sẽ tự động sinh mã định nghĩa lớp cho bạn Bạn gọi một phương thức chưa được định nghĩa Tính năng này sẽ định nghĩa phương thức cho bạn Lập trình hướng đối tượng & Collection 44
  • 45. Khai báo đối tượng thuộc lớp KhachHang chưa được định nghĩa Demo sử dụng tính năng tự sinh mã khai báo Chọn Generate class for ‘KhachHang’ Lập trình hướng đối tượng & Collection 45 Lớp KhachHang được tạo Dấu răng cưa báo lỗi bị mất đi
  • 46. Gọi đến phương thức hienThiThongTin chưa được định nghĩa Demo sử dụng tính năng tự sinh mã khai báo Lập trình hướng đối tượng & Collection 46 Phương thức hienThiThongTin được tự động định nghĩa
  • 47. Gọi đến phương thức hienThiThongTin chưa được định nghĩa với hai đối số name và age Demo sử dụng tính năng tự sinh mã khai báo Lập trình hướng đối tượng & Collection 47 Thêm một phương thức hienThiThongTin được định nghĩa với hai tham số
  • 48. Các khái niệm về lập trình hướng đối tượng và collection trong C# giống hệt như trong Visual Basic, chỉ khác nhau về cú pháp Đối với kế thừa Trong lớp cơ sở viết từ khóa virtual trước phương thức sẽ được ghi đè Trong lớp dẫn xuất viết từ khóa override trước phương thức sẽ được ghi đè Đa hình là tính năng quan trọng trong lập trình hướng đối tượng giúp ứng dụng sẽ ứng xử khác nhau đối với các đối tượng khác nhau kế thừa từ một lớp cơ sở Để tiện lợi cho quá trình lập trình, .NET cung cấp các đối tượng và cấu trúc được cài đặt sẵn như DateTime, String Tổng kết bài học Các khái niệm về lập trình hướng đối tượng và collection trong C# giống hệt như trong Visual Basic, chỉ khác nhau về cú pháp Đối với kế thừa Trong lớp cơ sở viết từ khóa virtual trước phương thức sẽ được ghi đè Trong lớp dẫn xuất viết từ khóa override trước phương thức sẽ được ghi đè Đa hình là tính năng quan trọng trong lập trình hướng đối tượng giúp ứng dụng sẽ ứng xử khác nhau đối với các đối tượng khác nhau kế thừa từ một lớp cơ sở Để tiện lợi cho quá trình lập trình, .NET cung cấp các đối tượng và cấu trúc được cài đặt sẵn như DateTime, String Lập trình hướng đối tượng & Collection 48
  • 49. Collection được phân làm hai loại Collection định kiểu và không định kiểu Collection không định kiểu có thể lưu nhiều loại đối tượng và collection, nhưng khi lưu sẽ chuyển các đối tượng này về kiểu Object (boxing) Collection định kiểu chỉ lưu một kiểu đã được định nghĩa trước vào collection Visual Studio 2010 cung cấp tính năng tự sinh mã khai báo khi các biến hoặc phương thức được gọi chưa được khai báo trước đó Tổng kết bài học Collection được phân làm hai loại Collection định kiểu và không định kiểu Collection không định kiểu có thể lưu nhiều loại đối tượng và collection, nhưng khi lưu sẽ chuyển các đối tượng này về kiểu Object (boxing) Collection định kiểu chỉ lưu một kiểu đã được định nghĩa trước vào collection Visual Studio 2010 cung cấp tính năng tự sinh mã khai báo khi các biến hoặc phương thức được gọi chưa được khai báo trước đó Lập trình hướng đối tượng & Collection 49