Tải bản đầy đủ (.pdf) (49 trang)

bài 2 lập tình hướng đối tượng và collection

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.49 MB, 49 trang )

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

×