Upload
hoc-lap-trinh-web
View
1.535
Download
4
Embed Size (px)
DESCRIPTION
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
Citation preview
Bài 2:Lập trình hướng đối tượng & Collection
Giới thiệu về .NET và Visual StudioGiới thiệu về các kiến thức lập trình cơ bản trên ngônngữ C#
Kiểu dữ liệuToán tửThao tác với chuỗiCấu trúc điều khiểnPhương thứcXử lý ngoại lệ
Hệ thống bài cũ
Giới thiệu về .NET và Visual StudioGiới thiệu về các kiến thức lập trình cơ bản trên ngônngữ C#
Kiểu dữ liệuToán tửThao tác với chuỗiCấu trúc điều khiểnPhương thứcXử lý ngoại lệ
Lập trình hướng đối tượng & Collection 2
Xây dựng lớp, cấu trúcTạo và sử dụng đối tượngXây dựng lớp kế thừaKhái niệm đa hình và sử dụng đa hìnhSử dụng các lớp và đối tượng dựng sẵnCollectionTự sinh mã khai báo
Mục tiêu bài học
Xây dựng lớp, cấu trúcTạo và sử dụng đối tượngXây dựng lớp kế thừaKhái niệm đa hình và sử dụng đa hìnhSử dụng các lớp và đối tượng dựng sẵnCollectionTự 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 SanphamdtSanpham = 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ườngvà 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 IntegerPublic 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 privateCùng lớp Y Y Y YLớp kế thừa Y Y Y NCùng assembly Y Y N NKhá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 buildthà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 mastring tendecimal giastring hienThiThongTin()
Lớp cơ sở
Lập trình hướng đối tượng & Collection 9
Sach
string mastring tendecimal giastring hienThiThongTin()
string tacgia
PhanMem
string mastring tendecimal giastring hienThiThongTin()
string phienban
Lớp dẫn xuất
Viết từ khóa virtual trước phương thức có thể sẽ đượcghi đè ở 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ứckhở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ứckhở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ứchienThiThongTin() của lớp cha
Là tính năng quan trọng trong lập trình hướng đối tượngGiúp ứng dụng sẽ ứng xử khác nhau đối với các đốitượ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ểugiá 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 đốitượng muốn lưu trữ kiểu giá trị
Cấu trúc giống lớpCác trường, thuộc tính, phương thức, sự kiện và toán hạngThà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ểugiá 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 đốitượng muốn lưu trữ kiểu giá trị
Cấu trúc giống lớpCác trường, thuộc tính, phương thức, sự kiện và toán hạngThà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ớpKhông hỗ trợ phương thức khởi tạo không có tham sốKhông hỗ trợ kế thừaKhông hỗ trợ thuộc tính tự khởi tạoCá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ớpKhông hỗ trợ phương thức khởi tạo không có tham sốKhông hỗ trợ kế thừaKhông hỗ trợ thuộc tính tự khởi tạoCá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ẵnCác lớp và cấu trúc này thuộc .NET FrameWorkLibraryCác lớp và cấu trúc liên quan đến nhau được nhómthành một NamespacesNamespaces được tổ chức theo cấu trúc phân cấpNamespaces 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ẵnCác lớp và cấu trúc này thuộc .NET FrameWorkLibraryCác lớp và cấu trúc liên quan đến nhau được nhómthành một NamespacesNamespaces được tổ chức theo cấu trúc phân cấpNamespaces lớn nhất là Sytem
Lập trình hướng đối tượng & Collection 22
Một số namespaces thông dụngCác kiểu cơ bản thuộc namespaces SystemSystem.CollectionsSystem.Collections.GenericSystem.IOSystem.Windows.Forms
Namespaces
Một số namespaces thông dụngCác kiểu cơ bản thuộc namespaces SystemSystem.CollectionsSystem.Collections.GenericSystem.IOSystem.Windows.Forms
Lập trình hướng đối tượng & Collection 23
Xem file NET35_Namespaces_Poster_LORES để biếtthêm về các lớp được các lớp được hỗ trợ bởi .NET 3.5Xem 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 SystemCú 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ặcDateTime tenbien = DateTime.Parse (string)
Thuộc namespace SystemCú 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 AMDateTime date1 = new DateTime(10, 01, 30);//1/30/2010 2:15 PMDateTime date2 = new DateTime(2010, 1, 30, 14, 15, 0);//1/30/2010 12:00 AMDateTime 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:35DateTime ngayThangHienTai = DateTime.Today; //30/1/2010 12:00:00 AMint 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ỉ racó phải là năm nhuận hay không
DateTime tgianHienTai = DateTime.Now; //30/1/2010 10:26:35DateTime 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"); //truebool isEndWith = chars.EndsWith("abc"); //false
string tenCongTy = "Mike Murach and Associates";int index1 = tenCongTy.IndexOf("Murach"); //5int 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"); //truebool isEndWith = chars.EndsWith("abc"); //false
string tenCongTy = "Mike Murach and Associates";int index1 = tenCongTy.IndexOf("Murach"); //5int 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ặckeu[] tenMang = new kieu[chieuDaiMang]
int[] diem;diem = new int[10];//hoặcint[] diem = new int[10];//khai báo và khởi tạo giá trị cho mảngint[] 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ặcint[] diem = new int[10];//khai báo và khởi tạo giá trị cho mảngint[] 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ảngint[,] 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 ArrayLớp Array chứa các thuộc tính và phương thức để thaotá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ủachiề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ếptheo 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 theothứ 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ữ trongnamespace System.CollectionsLưu trữ các kiểu khác nhau trong một collectionCác đối tượng khi lưu vào collection không định kiểu đượctự độ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 đầuThườ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ểmnà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ữ trongnamespace System.CollectionsLưu trữ các kiểu khác nhau trong một collectionCác đối tượng khi lưu vào collection không định kiểu đượctự độ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 đầuThườ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ểmnà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ịchint 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ịchint 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ữ trongnamespace System.Collections.GenericLư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ữ trongnamespace System.Collections.GenericLư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 tranghttp://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ạyint 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ạyint 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 2010Tính năng này sẽ tự sinh mã khai báo cho bạn khi cầnthiết
Bạn khai báo một đối tượng của lớp chưa định nghĩaTí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ĩaTí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 2010Tính năng này sẽ tự sinh mã khai báo cho bạn khi cầnthiết
Bạn khai báo một đối tượng của lớp chưa định nghĩaTí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ĩaTí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ínhnăng tự sinh mã khai báo
ChọnGenerate 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ínhnăng tự sinh mã khai báo
Lập trình hướng đối tượng & Collection 46
Phương thứchienThiThongTin
đượ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ínhnă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ứchienThiThongTin
đượ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à collectiontrong C# giống hệt như trong Visual Basic, chỉ khácnhau 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ươngthứ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ớicá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 đốitượ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à collectiontrong C# giống hệt như trong Visual Basic, chỉ khácnhau 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ươngthứ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ớicá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 đốitượ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ểuCollection không định kiểu có thể lưu nhiều loại đốitượng và collection, nhưng khi lưu sẽ chuyển các đốitượng này về kiểu Object (boxing)Collection định kiểu chỉ lưu một kiểu đã được định nghĩatrước vào collectionVisual Studio 2010 cung cấp tính năng tự sinh mã khaibáo khi các biến hoặc phương thức được gọi chưa đượckhai 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ểuCollection không định kiểu có thể lưu nhiều loại đốitượng và collection, nhưng khi lưu sẽ chuyển các đốitượng này về kiểu Object (boxing)Collection định kiểu chỉ lưu một kiểu đã được định nghĩatrước vào collectionVisual Studio 2010 cung cấp tính năng tự sinh mã khaibáo khi các biến hoặc phương thức được gọi chưa đượckhai báo trước đó
Lập trình hướng đối tượng & Collection 49