SlideShare a Scribd company logo
1 of 128
Download to read offline
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
1
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 4: Classes, objects và namespaces
• Tổng quan về lập trình hướng đối tượng
• Xây dựng class trong C#
• NamespacesNamespaces
2
- 12 tiết -
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tổng quan về lập trình hướng đối tượng
• Khái niệm
• Các đặc trưng cơ bản
3
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Khái niệm
Lậ t ì h h ớ đối t (OOP) là ột h há− Lập trình hướng đối tượng (OOP) là một phương pháp
thiết kế và phát triển phần mềm dựa trên kiến trúc lớp
(class) và đối tượng (object).
− OOP là cách lập trình nhằm hướng các xử lý đến từng
đối tượng, mỗi đối tượng sẽ có các xử lý của riêng nó
4
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
ố ể ế• Đối tượng (object) là một thực thể trong thực tế
− Con người
• Nhân viên Trần Anh Tuấn• Nhân viên Trần Anh Tuấn
• Sinh viên Lê Bảo Huy
− Đồ vật
• Bàn B01
• Phòng học E304
Chứng từ− Chứng từ
• Hóa đơn HD200606-S21
• Đơn đặt hàng DH200605-K01
5
− …
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Các thông tin về đối tượng:
− Ví dụ: Đối tượng Xe Ô tôg
• Mã số xe
• Hiệu xe
• Màu sơn
• Hãng sản xuất
• Nă ả ất• Năm sản xuất
• …
6
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Tiếp cận hướng đối tượng
− Là kỹ thuật cho phép biểu diễn tự nhiên các đối tượng
t th tế ới á đối t bê t h t ì htrong thực tế với các đối tượng bên trong chương trình
Đối tượng
trong thực tế
Đối tượng
trong chương
7
trong chương
trình
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
ế ố• Tiếp cận hướng đối tượng
− “Nhân cách hóa” đối tượng
Hệ thống thực tế Thực hiện nghiệp vụ f liên
quan đối tượng x
Hệ thống tin học Đối tượng x với khả năng
th hiệ hiệ f
8
thực hiện nghiệp vụ f
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Tiếp cận hướng đối tượng• Tiếp cận hướng đối tượng
Ví dụ 1:
Giải h t ì h bậ h i P− Giải phương trình bậc hai P
ax2 + bx + c = 0
Đối tượng P với hàm giải phương trìnhĐối tượng P với hàm giải phương trình
− Thông tin về đối tượng P
• Các hệ số a, b, c
9
Các hệ số a, b, c
• (Biến số x, Tên phương trình P)
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Tiếp cận hướng đối tượng• Tiếp cận hướng đối tượng
Ví dụ 2:
ề− Tính tiền lương của nhân viên Nv
• Họ tên, Giới tính, Ngày vào làm, Hệ số lương, Số con
Đối tượng Nv với hàm Tính tiền lương
− Thông tin về đối tượng Nv
10
Thông tin về đối tượng Nv
• Họ tên, Giới tính, Ngày vào làm, Hệ số lương, Số con
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Lớp đối tượng (Class)• Lớp đối tượng (Class)
− Class là một khái niệm trong Lập trình hướng đối tượng
mô tả cho những thực thể có chung tính chất và hànhmô tả cho những thực thể có chung tính chất và hành
vi. Class định nghĩa những thuộc tính và hành vi được
dùng cho những đối tượng của lớp đó
ế Ừ Á− Kết quả của sự TRỪU TƯỢNG HOÁ (Abstraction) các
đối tượng:
• Cùng loạiCùng loại
• Cùng các thông tin mô tả về đối tượng
11
Lớp đối tượng
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lớp: XE OTOp _
12
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Cá thà h hầ ủ lớ• Các thành phần của lớp
13
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Cá thà h hầ ủ lớ• Các thành phần của lớp
− Biến thành viên (Field)
ề ố• Lưu trữ các thông tin mô tả về đối tượng.
• Ví dụ: Lưu trữ thông tin về nhân viên
– Mã nhân viênMã nhân viên
– Họ nhân viên
– Tên nhân viên
N à i h– Ngày sinh
– Ngày vào làm
– Hệ số lương
14
– Số con
– …
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Các thành phần của lớp• Các thành phần của lớp
− Thuộc tính và Phương thức
ù ể ậ ậ í á ấ à ử ý ô• Dùng để cập nhật, tính toán, cung cấp và xử lý thông tin
của đối tượng
15
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Cá thà h hầ ủ lớ• Các thành phần của lớp
− Thuộc tính và Phương thức
• Ví dụ:
Thuộc tính
– He so luong: Cập nhật/cung cấp thông tin về hệ sốHe_so_luong: Cập nhật/cung cấp thông tin về hệ số
lương của nhân viên
– Tham_nien: Cung cấp thông tin về thâm niên của nhân
viênviên
Phương thức
– Tien_luong: Tính tiền lương cho nhân viên
16
– Tro_cap: Tính trợ cấp cho nhân viên
– Tien_thuong: Tính tiền thưởng cho nhân viên
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
ầ• Các thành phần của lớp
− Sự kiện
• Gởi thông báo của đối tượng ra bên ngoài
17
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
XE OTO
Khái niệm
ID
Hieu xe
XE_OTO
Thuộc tính
• Ví dụ Lớp XE_OTO
_
Hang_san_xuat
Mau_son
Thuộc tính
Nam_san_xuat
No_may
Vao soVao_so
Thang
Tat may
Phương thức
18
_ y
Sap_het_xangSự kiện
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
NHAN_VIEN
Khái niệm
Ma_nhan_vien
Ho_nhan_vien
T h iThuộc tính
• Ví dụ Lớp NHAN_VIEN
Ten_nhan_vien
Ngay_sinh
Ngay vao lam
Thuộc tính
Ngay_vao_lam
He_so_luong
So_con
Tien_luong
Tro_cap
Ti th
Phương thức
19
Tien_thuong
Tang_luongSự kiện
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tổng quan về lập trình hướng đối tượng
• Khái niệm
• Các đặc trưng cơ bản
20
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các đặc trưng cơ bản
• Tính trừu tượng (Abstraction)• Tính trừu tượng (Abstraction)
• Tính đóng gói (Encapsulation)
• Tính kế thừa (Inheritance)
21
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các đặc trưng cơ bản
• Tí h t ừ t (Ab t ti )• Tính trừu tượng (Abstraction)
− Lớp (Class) là một khái niệm trừu tượng
ế ế• Ví dụ: 1 bản thiết kế (bản vẽ) xe hơi Lớp Xe hơi
− Đối tượng (Object) là một thể hiện cụ thể của lớp
ế ấ ở ả ẩ ể• Ví dụ: 1 chiếc xe hơi được xuất xưởng là 1 sản phẩm cụ thể
được tạo ra từ bản thiết kế gốc Đối tượng Xe hơi
Từ những đối tượng giống nhau, ta có thể trừu tượng hoá thành 1
lớlớp
22
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các đặc trưng cơ bản
• Tí h đó ói (E l ti )• Tính đóng gói (Encapsulation)
− Mỗi lớp được xây dựng để thực hiện một nhóm
chức năng đặc trưng của riêng lớp đóchức năng đặc trưng của riêng lớp đó
• Ví dụ:
– Muốc thực hiện các hàm toán học lớp Math
– Muốn xử lý chuỗi lớp String
23
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các đặc trưng cơ bản
• Tí h kế thừ (I h it )• Tính kế thừa (Inheritance)
− Tính chất này cho phép xây dựng những lớp mới
dựa trên những lớp sẵn có (lớp Con kế thừa lớpdựa trên những lớp sẵn có (lớp Con kế thừa lớp
Cha)
− Lớp Con có khả năng bổ sung, mở rộng những tínhp g g, ộ g g
năng mới dựa trên những phần sẵn có ở lớp Cha
• Ví dụ:
Các loại xe đời mới ngày càng hiện đại hơn và có– Các loại xe đời mới ngày càng hiện đại hơn và có
nhiều chức năng tiện dụng hơn những loại xe đời cũ
24
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 4: Classes, objects và namespaces
• Tổng quan về lập trình hướng đối tượng
• Xây dựng class trong C#
• NamespacesNamespaces
25
- 12 tiết -
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng class trong C#
• Khái niệm
• Khai báo class
• Tạo đối tượng có kiểu class
• Xây dựng các thành phần trong class
26
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khái niệm
• Một class là kết quả của sự trừu tượng hóa đại
diện chung cho dữ liệu và các hành vi của mộtdiện chung cho dữ liệu và các hành vi của một
thực thể hay một tập các đối tượng
• Các classes còn mang ý nghĩa là một kiểu dữCác classes còn mang ý nghĩa là một kiểu dữ
liệu và là các khối xây dựng cơ sở của các trình
ứng dụng hướng đối tượng
27
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng class trong C#
• Khái niệm
• Khai báo class
• Tạo đối tượng có kiểu class
• Xây dựng các thành phần trong class
28
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo class trong C#
• Cú há• Cú pháp
<từ khóa khai báo phạm vi> class <tên_lớp>
{
// khai báo các sự kiện (Events)
ế// khai báo các biến thành viên (Fields)
// khai báo các thuộc tính (Properties)
// kh i bá á h thứ (M th d )// khai báo các phương thức (Methods)
// ...
}
29
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo class trong C#
• Ý hĩ• Ý nghĩa:
− Từ khóa khai báo phạm vi: xác định phạm vi hoạt động
của class Nếu không chỉ ra từ khóa khai báo phạm vicủa class. Nếu không chỉ ra từ khóa khai báo phạm vi
thì class sẽ có phạm vi hoạt động là private (cục bộ).
− Các từ khóa khai báo phạm vi thường dùng khi khai báop ạ g g
class:
• Private
• Protected
• Public
• Static
30
Static
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo class trong C#
• Cách tạo file class
− Tạo thư mục chứa các class
− Click phải vào thư mục Chọn Add  Add Class
− Đặt tên cho tập tin (*.cs)
31
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo class trong C#
• Ví dụ: tạo một class có tên là Nhan_vien
32
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng class trong C#
• Khái niệm
• Khai báo class
• Tạo đối tượng có kiểu class
• Xây dựng các thành phần trong class
33
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tạo đối tượng có kiểu class
• Một class định nghĩa một kiểu của đối tượng.
Một đối tượng là một thực thể cụ thể trên cơ
sở của một class và nó đôi khi còn được gọisở của một class, và nó đôi khi còn được gọi
là một thể hiện (instance) của một class.
• Các đối tượng có thể được tạo bằng cách sử• Các đối tượng có thể được tạo bằng cách sử
dụng từ khóa new theo sau đó là tên của class
mà đối tượng dựa vào đó để khai báo:
<Tên class> tên_đối tượng = new <Tên class>();
34
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tạo đối tượng có kiểu class
• Ví dụ: khai báo một đối tượng có tên nv1 có
kiểu class Nhan_vien
Nhan_vien nv1 = new Nhan_vien();
• Có thể tạo một đối tượng tham chiếu mà
không khởi tạo new nó như sau :
<Tên class> tên_đối tượng;
− Ví dụ:
35
Nhan_vien nv1;
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Tạo đối tượng có kiểu class
• Khi một instance của một class được tạo, một
tham chiếu tới đối tượng sẽ được thiết lập.
(Trong ví dụ trên nv1 là một tham chiếu tới(Trong ví dụ trên, nv1 là một tham chiếu tới
một đối tượng mới dựa trên class Nhan_vien)
• Nếu bạn thực hiện các khai báo sau đây:• Nếu bạn thực hiện các khai báo sau đây:
Nhan_vien nv1 = new Nhan_vien() ;
Nh i 2Nhan_vien nv2;
nv2 = nv1;
ế ế ố
36
=> nv2 sẽ tham chiếu đến cùng đối tượng trên vùng nhớ
heap giống như nv1
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng class trong C#
• Khái niệm
• Khai báo class
• Tạo đối tượng có kiểu class
• Xây dựng các thành phần trong class
37
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng các thành phần trong class
• Biến thành viên (Field)
• Thuộc tính (Property)
• Các phương thức (Method)
• Nạp chồng toán tử (Operator Overloading)
• Delegate trong C#• Delegate trong C#
• Sự kiện (Event)
38
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Biến thành viên (Field)
• Khái niệm:
− Biến thành viên là các trường dữ liệu lưu trữ dữ liệu của
ột l ó ũ hí h là á thà h iê dữ liệ ủmột class, nó cũng chính là các thành viên dữ liệu của
class.
− Các trường dữ liệu của class được khai báo bên trongCác trường dữ liệu của class được khai báo bên trong
khối class với việc chỉ định cấp độ truy xuất của trường
dữ liệu (public/private)
ế− Khi khai báo nếu không chỉ ra phạm vi là private hay
public thì mặc định được hiểu là private
39
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Biến thành viên (Field)
• Khai báo:
− Cú pháp:
l Tê lớclass <Tên lớp>
{ // ……
// Khai báo biến thành viên// Khai báo biến thành viên
[private | public] Kieu_du_lieu Bien_thanh_vien_1;
[private | public] Kieu_du_lieu Bien_thanh_vien_2;
……
[private | public] Kieu_du_lieu Bien_thanh_vien_N;
40
// Tiếp tục cho những khai báo khác
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Biến thành viên (Field)
[private | public] Kiểu_dữ_liệu Biến_thành_viên;
• Từ khóa privateTừ khóa private
41
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Biến thành viên (Field)
[private | public] Kiểu_dữ_liệu Biến_thành_viên;
• Từ khóa publicTừ khóa public
42
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ
class NHAN_VIEN
{ // ……
// Khai báo biến thành viên
private string mHo nhan vien;private string mHo_nhan_vien;
private string mTen_nhan_vien;
private DateTime mNgay_sinh;
private bool mGioi_tinh;
private double mHe_so_luong;
//// ……
// Tiếp tục cho những khai báo khác
//……
43
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Biến thành viên (Field)
• Lưu ý:
− Đối với các biến thành viên được khai báo public có thể
đ t ất bằ á h thê dấ hấ têđược truy xuất bằng cách thêm dấu chấm ngay sau tên
của đối tượng, kế tiếp đó là tên của trường dữ liệu.
− Ví dụ:Ví dụ:
44
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng các thành phần trong class
• Biến thành viên (Field)
• Thuộc tính (Property)
• Các phương thức (Method)
• Nạp chồng toán tử (Operator Overloading)
• Delegate trong C#• Delegate trong C#
• Sự kiện (Event)
45
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thuộc tính (Property)
• Khái niệm:
− Thuộc tính (Property) là thành phần được sử dụng để
t ất đế á biế thà h iê (Fi ld) đ kh i bátruy xuất đến các biến thành viên (Field) được khai báo
private bên trong class
− Mỗi thuộc tính chỉ truy xuất đến một biến thành viên duyMỗi thuộc tính chỉ truy xuất đến một biến thành viên duy
nhất
46
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thuộc tính (Property)
• Kh i bá• Khai báo:
− Cú pháp:
class <Tên lớp>class <Tên lớp>
{ // Khai báo thuộc tính
[private | public] Kieu_du_lieu_X Ten_thuoc_tinh
{
get { return Tên_biến_thành_viên;}
set { Tên biến thành viên = value;}set { Tên_biến_thành_viên = value;}
}
47
// Tiếp tục cho những khai báo khác
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ
class NHAN_VIEN_
{
single mHe_so_luong;
Ho_nhan_vien
Ten nhan vien
// Khai báo các thuộc tính
public double He_so_luong
NHAN_VIEN
Ten_nhan_vien
Ngay_sinh
He_so_luong
{
get {return mHe_so_luong;}
set {mHe so luong = value;} _ _ g
Ngay_vao_lam
So_con
set {mHe_so_luong value;}
}
// Tiếp tục cho những khai báo khác
48
//……
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Thuộc tính (Property)
• Kiể t tí h h lệ ủ dữ liệ• Kiểm tra tính hợp lệ của dữ liệu
// Khai báo các thuộc tính
public double He_so_luong
{
t { t H l }get { return mHe_so_luong; }
set {
if (value >=1)if (value 1)
mHe_so_luong = value;
}
49
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng các thành phần trong class
• Biến thành viên (Field)
• Thuộc tính (Property)
• Các phương thức (Method)
• Nạp chồng toán tử (Operator Overloading)
• Delegate trong C#• Delegate trong C#
• Sự kiện (Event)
50
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo (Constructor):
− Constructor là một phương thức đặc biệt có cùng tên
ới tê ủ l hứ óvới tên của class chứa nó.
− Constructor có vai trò khởi tạo các thành viên dữ liệu
của đối tượng mớicủa đối tượng mới.
− Ngoài việc cùng tên với class, Constructor còn có điểm
đặc biệt nữa so với các phương thức khác là nó được
ố ằtriệu gọi ngay sau khi khởi tạo đối tượng bằng lệnh new
và tương ứng với mỗi đối tượng, nó chỉ được gọi một
lần duy nhất.
51
y
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo không có tham số:
− Được dùng cho việc khởi tạo các giá trị mặc định cho
dữ liệ ủ ldữ liệu của class.
− Khi khởi tạo đối tượng không phải truyền tham số lúc
triệu gọitriệu gọi
− Xét ví dụ lớp nhan_vien với khai báo như sau:
52
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo không có tham số:
− Ví dụ:
53
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo không có tham số:
− Và đoạn lệnh khởi tạo đối tượng như sau:
54
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo không có tham số:
− Kết quả xuất ra màn hình:
55
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo có tham số:
− Cho phép định nghĩa nhiều constructor trong một class.
56
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo có tham số:
− Lúc đó đoạn lệnh khởi tạo đối tượng như sau:
57
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo không có tham số:
− Kết quả xuất ra màn hình:
58
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo với khai báo private :
− Một private constructor là một thể hiện constructor cụ
thể Nó th ờ đ dù t á l hỉ hứthể . Nó thường được dùng trong các class chỉ chứa
các thành viên tĩnh (các thành viên có khai báo từ khóa
static).
− Nếu một class có một hay nhiều private constructor và
không khai báo từ khóa public, thì các class khác (ngoại
trừ các class được lồng) sẽ không được phép tạo cáctrừ các class được lồng) sẽ không được phép tạo các
thể hiện (instances) của class này.
59
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo với khai báo private :
− Ví dụ: xét class Counter như sau:
60
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo với khai báo private :
− Lúc đó đoạn lệnh gọi thực hiện như sau:
− Dòng lệnh 18: gán giá trị 100 cho thành viên dữ liệu
currentCount, Buộc phải truy xuất đến thành viên dữ
liệ à thô tê l hứ ó
61
liệu này thông qua tên class chứa nó.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo với khai báo static :
− static constructor thường được dùng để khởi tạo dữ liệu
t ti bất kỳ h ặ để th hiệ ột hà h độ iêstatic bất kỳ, hoặc để thực hiện một hành động riêng
biệt mà hành động này chỉ cần thiết thực thi một lần.
− static constructor được gọi một cách tự động trước khistatic constructor được gọi một cách tự động trước khi
instance đầu tiên được tạo hoặc bất kỳ thành viên static
nào đó được tham chiếu tới.
62
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo với khai báo static :
− Ví dụ: xét class Buss với constructor static như sau:
63
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức khởi tạo với khai báo static :
− Xét đoạn lệnh sử dụng class như sau:
− Kết quả xuất ra màn hình:
64
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Các đặc tính của static constructor:
− static constructor không được phép có tham số
− static constructor được triệu gọi một cách tự động để
khởi tạo một class trước khi instance đầu tiên được tạo
hay các thành viên static bất kỳ được tham chiếu tớihay các thành viên static bất kỳ được tham chiếu tới.
− static constructor không thể được triệu gọi trực tiếp.
− Người dùng không thể can thiệp vào khi static− Người dùng không thể can thiệp vào khi static
constructor được thực thi trong chương trình.
65
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Tạo một Copy Constructor:
− Trong C# không cung cấp một copy constructor. Tuy
hiê ó thể â d ột h thứ thí h h đểnhiên có thể xây dựng một phương thức thích hợp để
sao chép các giá trị từ một đối tượng đang tồn tại.
− Xét lớp nhan vien với khai báo copy constructor nhưXét lớp nhan_vien với khai báo copy constructor như
trong ví dụ sau:
66
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
67
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Tạo một Copy Constructor:
− Dòng lệnh 9 13 : tạo constructor có tham số có kiểu
ũ hí h là kiể l hứ ó C t t à ócũng chính là kiểu class chứa nó. Constructor này có
nhiệm vụ thực hiện việc sao chép dữ liệu tương ứng từ
tham số vào các thành viên dữ liệu của class.
− Dòng lệnh 15 19 : tạo constructor thể hiện (instance
constructor). Constructor này có hai tham số tương ứng
với hai thành viên dữ liệu của class Từ khóa this đượcvới hai thành viên dữ liệu của class. Từ khóa this được
sử dụng nhằm ám chỉ đến instance hiện hành của
class.
68
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức hủy (Destructor):
− Destructor thường được dùng để hủy instance của các
lclass.
− Để khai báo Destructor sử dụng ký hiệu ~ theo cú pháp
sau:sau:
class Car
{
~ Car() // destructor
{
// Các câu lệnh mang tính dọn dẹp
69
ệ g ọ ẹp
}
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức hủy (Destructor):• Phương thức hủy (Destructor):
− Destructor ngầm định gọi Finalize trên class cơ sở của
đối tượng. Vì vậy, mã lệnh destructor ở trên sẽ ngầmđối tượng. Vì vậy, mã lệnh destructor ở trên sẽ ngầm
chuyển đổi tới phương thức Finalize sau đây :
protected override void Finalize()
{{
try {
// Các câu lệnh mang tính dọn dẹp ...
}
finally {
base Finalize();
70
base.Finalize();
}
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức hủy (Destructor):• Phương thức hủy (Destructor):
− Với phương cách này phương thức finalize được gọi đệ
qui cho tất cả các instance trong một loạt đối tượng kếqui cho tất cả các instance trong một loạt đối tượng kế
thừa.
− Ví dụ:
class K
{
K( ) { }
class K
{
K( ) { }K( ) { }
~K( ) { }
}
void Finalize()
{
base.Finalize( );
}
71
}
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Các chú ý sau khi làm việc với destructor :• Các chú ý sau khi làm việc với destructor :
− Các destructor không thể được định nghĩa trong các
struct Chúng chỉ được sử dụng với các classstruct. Chúng chỉ được sử dụng với các class.
− Một class chỉ có thể có duy nhất một destructor.
− Các destructor không thể được kế thừa hay được táiCác destructor không thể được kế thừa hay được tái
định nghĩa (hay gọi là nạp chồng - overloaded).
− Các destructor không thể triệu gọi. Chúng được triệu gọig ệ gọ g ợ ệ gọ
một cách tự động.
− Một destructor không cho phép có bất kỳ sửa đổi nào
thông qua nó và nó cũng không có các tham số
72
thông qua nó và nó cũng không có các tham số.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Các chú ý sau khi làm việc với destructor :• Các chú ý sau khi làm việc với destructor :
− Không nên sử dụng destructor rỗng, điều này dẫn đến
việc mất hiệu suất thực thi một cách không cần thiếtviệc mất hiệu suất thực thi một cách không cần thiết.
− Sử dụng phương thức Finalize() để giải phóng nguồn
tài nguyên là cách làm không tường minh. Thay vào đó,
ồbạn nên chọn cách giải phóng các nguồn tài nguyên
trong class bằng cách kế thừa từ interface có tên
IDisposable và cài đặt phương thức Dispose().
73
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức Dispose:• Phương thức Dispose:
− Phương thức Dispose nói chung không giải phóng bộ
nhớ được NET quản lý nó được sử dụng chỉ để lấy lạinhớ được .NET quản lý, nó được sử dụng chỉ để lấy lại
các nguồn tài nguyên mà .Net không quản lý
(unmanaged resources) mà một class đang giữ tham
chiếu trước đóchiếu trước đó.
− Phương thức Dispose không loại bỏ vùng nhớ của
chính đối tượng, nó chỉ là giải phóng vùng nhớ mà đối
ế ốtượng tham chiếu tới. Đối tượng sẽ được loại bỏ khi bộ
thu dọn rác thấy thuận lợi.
− Khi cài đặt phương thức Dispose phải nhớ gọi
74
− Khi cài đặt phương thức Dispose phải nhớ gọi
GC.SuppressFinalize(this) để ngăn finalizer khỏi vận
hành.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức Dispose:• Phương thức Dispose:
− Interface có tên IDisposable chỉ bao gồm một phương
thức Dispose không có tham sốthức Dispose không có tham số.
public interface IDisposable
{
void Dispose();
}
− Ví dụ: xét đoạn mã lệnh khai báo lớp Test như sau:
75
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
class Test : IDisposable
{
private bool isDisposed = false;p p ;
~Test()
{
Dispose(false);Dispose(false);
}
protected void Dispose(bool disposing)
{
if (disposing)
{{
// Mã lệnh thu hồi managed resources của class
}
// Mã lệnh thu hồi un-managed resources của class
76
// Mã lệnh thu hồi un-managed resources của class
isDisposed = true;
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
public void Dispose()
{
Dispose(true);p ( );
GC.SuppressFinalize(this);
}
public double tong(Int32 x Int32 y)public double tong(Int32 x, Int32 y)
{
return x + y;
}
}
− Chú ý: phương thức GC.SuppressFinalize(this) phải được gọi sau
khi gọi phương thức Dispose(true) Để bảo đảm rằng lời gọi sau chỉ
được thực hiện nếu và chỉ nếu phương thức Dispose đã hoàn tất
77
được thực hiện nếu và chỉ nếu phương thức Dispose đã hoàn tất
thành công.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Các lưu ý khi cài đặt Dispose:• Các lưu ý khi cài đặt Dispose:
− Implement IDisposable trên mỗi kiểu có một finalizer
− Bảo đảm rằng một đối tượng sẽ không được sử dụng− Bảo đảm rằng một đối tượng sẽ không được sử dụng
sau khi tạo lời gọi tới phương thức Dispose.
− Gọi Dispose trên tất cả các kiểu IDisposable mỗi khi làm
iệ ới húviệc với chúng.
− Ngăn ngừa các lời gọi sau đó tới finalizer từ bên trong
phương thức Dispose với việc sử dụng phương thứcp g p ệ ụ g p g
GC.SuppressFinalize.
− Tránh tạo các dispose kiểu giá trị
78
− Tránh việc throw các exceptions từ bên trong các
phương thức Dispose.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý:• Phương thức tính toán, xử lý:
− Một phương thức là một khối mã lệnh chứa một dãy
các câu lệnh có cùng mục tiêu nào đócác câu lệnh có cùng mục tiêu nào đó
− Các dạng phương thức tính toán, xử lý:
• Phương thức không trả về giá trị, không tham sốPhương thức không trả về giá trị, không tham số
• Phương thức có trả về giá trị, không tham số
• Phương thức trả về giá trị thông qua tham số của phương
thứthức
• Phương thức với tham số sử dụng từ khóa params
• Tái nghĩa phương thức (Method Overloading)
79
Tái nghĩa phương thức (Method Overloading)
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Cú pháp khai báo phương thức:• Cú pháp khai báo phương thức:
class <Tên lớp>
{{
[private | public] Kiểu_dữ_liệu Tên_phươg_thức ()
{
// Lệnh xử lý
return <biểu thức chứa kết quả trả về>;
}
// Tiếp tục cho những khai báo khác
//
80
//…
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ
class NHAN_VIEN
{ // ……
// Khai báo các phương thức
public double Tro_cap()
Ho nhan vien
NHAN_VIEN
{
return (So_con * 100000);
}
Ho_nhan_vien
Ten_nhan_vien
Ngay_sinh
public double Tien_thuong()
{
return (Tham_nien * 500000);
He_so_luong
Ngay_vao_lam
}
// ……
// Tiếp tục cho những khai báo khác
So_con
Tro_cap
Tien thuong
81
// Tiếp tục cho những khai báo khác
// ……
}
Tien_thuong
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý không trả về giá• Phương thức tính toán, xử lý không trả về giá
trị, không tham số :
− Thường được sử dụng trong các trường hợp khởi tạoThường được sử dụng trong các trường hợp khởi tạo
các giá trị mặc định cho các trường dữ liệu của class
hay trong các phương thức xử lý mà không quan tâm
tới kết quả trả vềtới kết quả trả về
− Ví dụ:
82
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý trả về giá trị không tham• Phương thức tính toán, xử lý trả về giá trị, không tham
số :
− Được sử dụng trong trường hợp thông qua phương thức để lấy giá
trị của một trường dữ liệu trong class. Hoặc sử dụng các giá trị của
các trường dữ liệu trong class để xử lý tính toán và trả về kết quả.
− Cú pháp:
<khai báo cấp độ truy xuất> [static] <kiểu trả về> Tên_phương thức()
{
// Các khai báo cục bộ và Các lệnh xử lý nếu có// Các khai báo cục bộ và Các lệnh xử lý nếu có
Return <biểu thức chứa kết quả trả về>;
}
83
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị,
không tham số :
− Ví dụ:Ví dụ:
84
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị
thông tham số của phương thức:
− Sau khi xử lý, phương thức sẽ trả về một hoặc nhiều giáý, p g ộ ặ g
trị.
− Để trả về giá trị thông qua tham số, sử dụng từ khóa ref
khi khao báo tham sốkhi khao báo tham số
− Ví dụ:
public void lay canh(ref double r, ref double c)p y_ ( , )
{
r = rong;
85
c = cao;
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị
thông tham số của phương thức:
− Khi gọi phương thức cũng phải dùng từ khóa ref trướcKhi gọi phương thức cũng phải dùng từ khóa ref trước
các tham số
− Ví dụ:ụ
double cr, cc;
hcn1.lay_canh(ref cr, ref cc);
Console.WriteLine("Chieu rong:{0}, chieu cao:{1}", cr, cc );
86
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị
thông tham số của phương thức:
− C# còn cung cấp một từ khóa khác là out cho công việcg p ộ g ệ
này. Nếu thay thế từ khóa ref bằng từ khóa out mọi
hoạt động là như nhau, ngoại trừ việc đối với từ khóa
out bạn không cần phải khởi tạo biến truyền trước khi
ởigởi.
− Ví dụ:
public void lay canh(out double r out double c)public void lay_canh(out double r, out double c)
{
r = rong;
87
c = cao;
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị
thông tham số của phương thức:
− Khi gọi phương thức cũng phải dùng từ khóa ref trướcKhi gọi phương thức cũng phải dùng từ khóa ref trước
các tham số
− Ví dụ:ụ
double cr, cc;
hcn1.lay_canh(out cr, out cc);
Console.WriteLine("Chieu rong:{0}, chieu cao:{1}", cr, cc );
88
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý với tham số sử dụng từ• Phương thức tính toán, xử lý với tham số sử dụng từ
khóa params :
− Từ khóa params cho phép chỉ định một tham số với số lượngp p p ị ộ ợ g
các tham số có thể thay đổi tùy biến.
− Chỉ có duy nhất một khai báo dạng này trong khai báo tham
số của phương thức và nó phải được đặt tại vị trí khai báosố của phương thức và nó phải được đặt tại vị trí khai báo
sau cùng trong danh sách các tham số khai báo
− Ví dụ:
89
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Phương thức tính toán xử lý với tham số sử dụng từ• Phương thức tính toán, xử lý với tham số sử dụng từ
khóa params :
− Gọi thực hiện:ọ ự ệ
DangSuDungParams_2(1, ‘a’, “test”);
− Kết quả xuất ra màn hình:
90
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Tái nghĩa phương thức (Method Overloading) :• Tái nghĩa phương thức (Method Overloading) :
− C# cho phép cài đặt các phương thức có cùng tên với
nhau nó mang ý nghĩa tái định nghĩa phương thức (haynhau, nó mang ý nghĩa tái định nghĩa phương thức (hay
còn gọi là nạp chồng phương thức)
− Các tham số được tái nghĩa phải thỏa mãn:
• Kiểu của các tham số khác nhau
• Số lượng của tham số khác nhau
91
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Tái nghĩa phương thức (Method Overloading) :• Tái nghĩa phương thức (Method Overloading) :
− Ví dụ:
92
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Truyền tham số trong phương thức :• Truyền tham số trong phương thức :
− Khi gọi thực hiện các phương thức, thông thường phải
truyền vào các giá trị để cho phương thức xử lý thaotruyền vào các giá trị để cho phương thức xử lý, thao
tác này được gọi là truyền tham số
− Có 3 dạng truyền tham số cơ bản:
• Truyền tham trị
• Truyền tham chiếu
93
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Truyền tham số trong phương thức :Truyền tham số trong phương thức :
− Truyền tham trị: chỉ có bản sao của tham số thực được truyền cho
tham số hình thức, mọi thay đổi của tham số hình thức trong
ốphương thức sẽ không ảnh hưởng tới tham số thực
− Ví dụ:
Public int test(int so1)
{
So1 += 1;
}
St ti id M i ( t i [] )Static void Main(string[] args)
{
int a = 5;
test (a);
94
test (a);
Console.WriteLine(a); // 5
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Các phương thức (Method)
• Truyền tham số trong phương thức :Truyền tham số trong phương thức :
− Truyền tham chiếu: mọi thay đổi của tham số hình thức trong
phương thức sẽ ảnh hưởng trực tiếp tới tham số thực. Để khai báo
th ố th d t ề th hiế ử d từ khó f t ớtham số theo dạng truyền tham chiếu, sử dụng từ khóa ref trước
khai báo tham số
− Ví dụ:
P bli i t t t( f i t 1)Public int test( ref int so1)
{
So1 += 1;
}}
Static void Main(string[] args)
{
int a = 5;
test (a);
95
test (a);
Console.WriteLine(ref a); // 6
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng các thành phần trong class
• Biến thành viên (Field)
• Thuộc tính (Property)
• Các phương thức (Method)
• Nạp chồng toán tử (Operator Overloading)
• Delegate trong C#• Delegate trong C#
• Sự kiện (Event)
96
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Nạp chồng toán tử (Operator Overloading)
• Ý nghĩa :• Ý nghĩa :
− Cho phép định nghĩa lại các toán tử cơ bản cho phép
thực hiện các phép tính toán trên nhiều kiểu dữ liệuthực hiện các phép tính toán trên nhiều kiểu dữ liệu
khác nhau.
− Đối với các toán tử so sánh: ==, !=, >=, <, <=, > thì khi
ồđịnh nghĩa lại phải nạp chồng theo từng cặp. Ví dụ nạp
chồng toán tử == thì cũng phải nạp chồng luôn toán tử
so sánh !=.
97
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Nạp chồng toán tử (Operator Overloading)
• Cú pháp :• Cú pháp :
public static <kiểu dữ liệu> operator <toán tử>(tham số 1,
tham số 2)tham số 2)
{
//tập hợp lệnh xử lý//tập hợp lệnh xử lý
return <kết quả trả về>
}}
98
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Nạp chồng toán tử (Operator Overloading)
• Ví dụ: trong lớp phan so định nghĩa lại toán• Ví dụ: trong lớp phan_so, định nghĩa lại toán
tử + để thực hiện cộng 2 phân số:
public static phan so operator +(phan so ps1 phan so ps2)public static phan_so operator +(phan_so ps1, phan_so ps2)
{
phan_so kq = new phan_so(0,1);
kq.tu = ps1.tu * ps2.mau + ps1.mau * ps2.tu;
kq.mau = ps2.mau * ps1.mau;
return kq;
}
99
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng các thành phần trong class
• Biến thành viên (Field)
• Thuộc tính (Property)
• Các phương thức (Method)
• Nạp chồng toán tử (Operator Overloading)
• Delegate trong C#• Delegate trong C#
• Sự kiện (Event)
100
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Delegate trong C#
• Khái niệm:• Khái niệm:
− delegate là một class có thể giữ một tham chiếu tới một
phương thứcphương thức.
− lớp delegate có một dấu hiệu như chữ ký (signature), và
nó chỉ giữ các tham chiếu tới các phương thức mà chữ
ký của nó phù hợp. Theo cách như vậy một delegate
tương đương với một con trỏ hàm hay một callback an
toàn kiểu (type-safe)
− Khai báo một delegate là khả năng định nghĩa một
delegate class. Sự khai báo cung cấp chữ ký của
delegate và bộ vận hành ngôn ngữ chung (common
101
delegate, và bộ vận hành ngôn ngữ chung (common
language runtime) giúp cung cấp sự thực thi.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Delegate trong C#
• Khai báo delegate:• Khai báo delegate:
− Cú pháp:
bli d l t <Kiể > Tê d l t (Th ố)public delegate <Kiểu> Tên_delegate(Tham_số);
− Ý nghĩa:
• Kiểu: delegate sẽ trả về một kiểu dữ liệu (int string ) hoặc• Kiểu: delegate sẽ trả về một kiểu dữ liệu (int, string,…) hoặc
không trả dữ liệu về (void).
public delegate void da_ghi(bool ghi);
102
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Xây dựng các thành phần trong class
• Biến thành viên (Field)
• Thuộc tính (Property)
• Các phương thức (Method)
• Nạp chồng toán tử (Operator Overloading)
• Delegate trong C#• Delegate trong C#
• Sự kiện (Event)
103
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sự kiện (Event)
• Dùng để gởi thông báo của đối tượng ra bên ngoài• Dùng để gởi thông báo của đối tượng ra bên ngoài
• Cú pháp:
public event [Kiểu delegate] Tên sự kiệnpublic event [Kiểu delegate] Tên_sự_kiện
− Ý nghĩa:
• [Kiểu delegate]: có thể sử dụng delegate của hệ thống (EventHandle).
E tH dl th ộ ề S t dù để t hữ kiệEventHandle thuộc về namespace System, dùng để tạo những sự kiện
không cần truyền dữ liệu cho đối tượng sử dụng.
• Ví dụ:
public class HOC_SINH
{
public event System EventHandle Thay doi;
104
public event System.EventHandle Thay_doi;
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sự kiện (Event)
• Cú pháp:• Cú pháp:
− Ngoài ra có thể sử dụng delegate riêng do người dùng
khai báokhai báo
− Ví dụ:
public delegate void da ghi(bool ghi);public delegate void da_ghi(bool ghi);
public class HOC_SINH
{{
public event da_ghi Da_ghi_du_lieu;
}
105
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sự kiện (Event)
• Gọi phát sinh sự kiện:
− Cú pháp:Cú pháp:
<Tên_sự_kiện>(giá trị của tham số);
106
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ
// l HOC SINH// class HOC_SINH
public event System.EventHandle Thay_doi;
public string Ho hoc sinhpublic string Ho_hoc_sinh
{ get{ return mHo_hoc_sinh; }
set
{ mHo_hoc_sinh = value;
if(Thay_doi!=null)
Thay_doi(this, new System.EventArgs());
// phát sinh lời gọi để thực hiện sự kiện
}
107
}
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sự kiện (Event)
• Sử dụng sự kiện trong những xứ lý của class• Sử dụng sự kiện trong những xứ lý của class
khác:
− Ví dụ: lớp MH HOC SINH có đối tượng kiểu− Ví dụ: lớp MH_HOC_SINH có đối tượng kiểu
HOC_SINH như sau:
public class MH_HOC_SINH
{
HOC_SINH hs = new HOC_SINH();
}
108
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sự kiện (Event)
• Sử dụng sự kiện trong những xứ lý của class• Sử dụng sự kiện trong những xứ lý của class
khác:
− Sử dụng sự kiện Thay doi của HOC SINH:− Sử dụng sự kiện Thay_doi của HOC_SINH:
• Tạo một hàm xử lý cho sự kiện với danh sách tham số phải
hoàn toàn giống với delegate của sự kiện.
• Ví dụ: tạo hàm xử lý sự kiện thay đổi của class HOC_SINH:
public class MH_HOC_SINH
{{
private void Xu_ly_thay_doi(object sender, System.EventArgs e)
{ …}
}
109
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Sự kiện (Event)
• Sử dụng sự kiện trong những xử lý của class• Sử dụng sự kiện trong những xử lý của class
khác:
− Sử dụng sự kiện Thay doi của HOC SINH:ụ g ự ệ y_ _
• Gán hàm xử lý sự kiện vừa tạo vào sự kiện của đối tượng thể
hiện.
• Ví dụ: liên kết hàm xử lý với sự kiện của đối tượng:Ví dụ: liên kết hàm xử lý với sự kiện của đối tượng:
public class MH_HOC_SINH
{ …
public MH HOC SINH()public MH_HOC_SINH()
{ …
this.hs.Thay_doi +=new
System.EventHandler(this.Xu_ly_thay_doi);
}
110
}
…
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Tạo lớp Phân số (PHAN SO)• Tạo lớp Phân số (PHAN_SO)
− Một phân số bao gồm các thông tin
• Tử số• Tử số
• Mẫu số
− Cho phép thực hiện các phép tính trên phân sốCho phép thực hiện các phép tính trên phân số
• Cộng, Trừ, Nhân, Chia
• Tối giản phân số
• …
111
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Tạo lớp Phân số (PHAN_SO)
112
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
PHAN_SO
Tu_so
Mau soMau_so
PHAN_SO(pTu_so, pMau_so)
Toi_gian_phan_so()
Kiem_tra_mau_so(pMau_so) Boolean
Cong(pPhan_so) PHAN_SO
Tru(pPhan_so) PHAN_SO
Nhan(pPhan_so) PHAN_SO
Chia(pPhan so) PHAN SO
113
Chia(pPhan_so) PHAN_SO
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Danh sách biến thành viên• Danh sách biến thành viên
public class PHAN_SO
{ //……
#region "Danh sách các biến thành viên"
private int mTu_so;
private int mMau_so;
#endregion
//……
114
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Danh sách các thuộc tínhDanh sách các thuộc tính
public int Tu_so public int Mau_so
{
get { return mTu_so; }
set { mTu so = value; }
{
get { return mMau_so; }
setset { mTu_so = value; }
}
set
{
if (Kiem_tra_mau_so(value))
mMau_so = value;
}
115
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Danh sách hàm khởi tạoDanh sách hàm khởi tạo
public PHAN_SO()
{
Tu so = 1;Tu_so = 1;
Mau_so = 1;
}
public PHAN SO(int pTu so int pMau so)public PHAN_SO(int pTu_so, int pMau_so)
{
if(Kiem_tra_mau_so(pMau_so))
{{
Tu_so = pTu_so;
Mau_so = pMau_so;
}
116
}
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Danh sách phương thức xử lý
private Boolean Kiem_tra_mau_so(int pMau_so)
{
return pMau so != 0;p _ ;
}
117
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Danh sách phương thức xử lý
public void Toi_gian_phan_so()
{
if (Mau_so < 0)
{{
Mau_so = Math.Abs(Mau_so);
Tu_so = -1 * Tu_so;
}
int uoc_so = USCLN(Tu_so, Mau_so);
Tu so /= uoc so;
118
Tu_so /= uoc_so;
Mau_so /= uoc_so;
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Danh sách phương thức xử lý• Danh sách phương thức xử lý
public PHAN_SO Cong(int pTu_so,int pMau_so)
{{
PHAN_SO psTong = new PHAN_SO(pTu_so, pMau_so);
psTong.Tu so = Tu so * psTong.Mau so + psTong.Tu so *psTong.Tu_so Tu_so psTong.Mau_so psTong.Tu_so
Mau_so;
psTong.Mau_so = psTong.Mau_so * Mau_so;
T T i i h ()psTong.Toi_gian_phan_so();
return psTong;
}
119
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Ví dụ: Lớp PHAN_SO
• Danh sách phương thức xử lý• Danh sách phương thức xử lý
public PHAN_SO Cong(PHAN_SO pPhan_so)
{
return Cong(pPhan_so.Tu_so, pPhan_so.Mau_so);
}
120
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài tập
• Yêu cầu• Yêu cầu
−Bài 1: Phân số
• Tạo lớp PHAN SO• Tạo lớp PHAN_SO
• Thực hiện các phép tính trên phân số (+, -, *, /)
121
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 4: Classes, objects và namespaces
• Tổng quan về lập trình hướng đối tượng
• Xây dựng class trong C#
• NamespacesNamespaces
122
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Namespaces
• Namespaces là các thành tố của chương trình• Namespaces là các thành tố của chương trình
C# được thiết kế nhằm giúp tổ chức các
chương trình một cách ngắn gọn, dễ dàng táig ộ g gọ , g
sử dụng một số mã lệnh
• Namespaces không tương ứng với tên tập tinp g g g ập
hay thư mục. Ngay cho dù việc đặt tên của thư
mục hay tập tin tương ứng với namespaces
123
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Namespaces
• Ví dụ khai báo namespace:• Ví dụ khai báo namespace:
using System;
namespace tên namspacenamespace tên_namspace
{
// class bắt đầu chương trình
class tên_class
{{
// Phương thức Main bắt đầu sự thực thi chương trình.
public static void Main()
{{
// Các câu lệnh
}
}
124
}
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Namespaces
• Cách tốt nhất để tổ chức các namespaces là• Cách tốt nhất để tổ chức các namespaces là
theo hướng hệ thống phân cấp. Hệ thống phân
cấp này có thể được trình bày bởi việc lồng cácp y ợ y ệ g
namespaces với nhau.
125
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Namespaces
• Cách khác để viết namespace lồng nhau:• Cách khác để viết namespace lồng nhau:
126
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Namespaces
• Truy xuất các thành phần trong namespace:• Truy xuất các thành phần trong namespace:
− Khi truy xuất đến các thành phần trong namespace phải
truy xuất thông qua tên namespacetruy xuất thông qua tên namespace
− Cú pháp:
<Tên namespace>.<Tên thành phần><Tên_namespace>.<Tên thành phần>
127
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
128

More Related Content

What's hot

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
 
Bai tap giai tich 2
Bai tap giai tich 2Bai tap giai tich 2
Bai tap giai tich 2quyet tran
 
Phần 3: Các kiểu dữ liệu cơ sở
Phần 3: Các kiểu dữ liệu cơ sởPhần 3: Các kiểu dữ liệu cơ sở
Phần 3: Các kiểu dữ liệu cơ sởHuy Rùa
 
Chuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop nguChuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop ngumituan
 
Giáo trình thiết kế web - Thiết kế web với Dreamweaver
Giáo trình thiết kế web - Thiết kế web với DreamweaverGiáo trình thiết kế web - Thiết kế web với Dreamweaver
Giáo trình thiết kế web - Thiết kế web với DreamweaverKhanhPham
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựleemindinh
 
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 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverBài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverMasterCode.vn
 
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theoMasterCode.vn
 
Bài giảng chi tiết giải tích 1 07 2013 bo môn toán
Bài giảng chi tiết giải tích 1  07 2013 bo môn toánBài giảng chi tiết giải tích 1  07 2013 bo môn toán
Bài giảng chi tiết giải tích 1 07 2013 bo môn toánLaurent Koscielny
 
Phần 8: Mảng hai chiều
Phần 8: Mảng hai chiềuPhần 8: Mảng hai chiều
Phần 8: Mảng hai chiềuHuy Rùa
 
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433Muoivy Wm
 
CÁC BÀI TOÁN KHAI PHÁ DỮ LIỆU VÀ ỨNG DỤNG CỦA KHAI PHÁ DỮ LIỆU.pdf
CÁC BÀI TOÁN KHAI PHÁ DỮ LIỆU VÀ ỨNG  DỤNG CỦA KHAI PHÁ DỮ LIỆU.pdfCÁC BÀI TOÁN KHAI PHÁ DỮ LIỆU VÀ ỨNG  DỤNG CỦA KHAI PHÁ DỮ LIỆU.pdf
CÁC BÀI TOÁN KHAI PHÁ DỮ LIỆU VÀ ỨNG DỤNG CỦA KHAI PHÁ DỮ LIỆU.pdfMan_Ebook
 
Quy hoach tuyen tinh C H U O N G2
Quy hoach tuyen tinh C H U O N G2Quy hoach tuyen tinh C H U O N G2
Quy hoach tuyen tinh C H U O N G2Ngo Hung Long
 
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongBài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongHoàng Như Mộc Miên
 
Tìm hiểu về Wordpress - Wordpress presentation
Tìm hiểu về Wordpress - Wordpress presentation Tìm hiểu về Wordpress - Wordpress presentation
Tìm hiểu về Wordpress - Wordpress presentation Khổng Xuân Trung
 
Lập trình Python GUI vs PySide
Lập trình Python GUI vs PySideLập trình Python GUI vs PySide
Lập trình Python GUI vs PySideChien Dang
 

What's hot (20)

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ệ
 
Bai tap giai tich 2
Bai tap giai tich 2Bai tap giai tich 2
Bai tap giai tich 2
 
Phần 3: Các kiểu dữ liệu cơ sở
Phần 3: Các kiểu dữ liệu cơ sởPhần 3: Các kiểu dữ liệu cơ sở
Phần 3: Các kiểu dữ liệu cơ sở
 
Chuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop nguChuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop ngu
 
Tài liệu HTML5-CSS3
Tài liệu HTML5-CSS3Tài liệu HTML5-CSS3
Tài liệu HTML5-CSS3
 
Giáo trình thiết kế web - Thiết kế web với Dreamweaver
Giáo trình thiết kế web - Thiết kế web với DreamweaverGiáo trình thiết kế web - Thiết kế web với Dreamweaver
Giáo trình thiết kế web - Thiết kế web với Dreamweaver
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
 
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 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL serverBài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
Bài 3 : Các ràng buộc toàn vẹn dữ liệu - SQL server
 
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 1: Làm quen với ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
 
Bài giảng chi tiết giải tích 1 07 2013 bo môn toán
Bài giảng chi tiết giải tích 1  07 2013 bo môn toánBài giảng chi tiết giải tích 1  07 2013 bo môn toán
Bài giảng chi tiết giải tích 1 07 2013 bo môn toán
 
Phần 8: Mảng hai chiều
Phần 8: Mảng hai chiềuPhần 8: Mảng hai chiều
Phần 8: Mảng hai chiều
 
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
Tai lieu huong_dan_hoc_matlab_danh_cho_mon_xu_ly_anh_rat_hay_2264_7433
 
CÁC BÀI TOÁN KHAI PHÁ DỮ LIỆU VÀ ỨNG DỤNG CỦA KHAI PHÁ DỮ LIỆU.pdf
CÁC BÀI TOÁN KHAI PHÁ DỮ LIỆU VÀ ỨNG  DỤNG CỦA KHAI PHÁ DỮ LIỆU.pdfCÁC BÀI TOÁN KHAI PHÁ DỮ LIỆU VÀ ỨNG  DỤNG CỦA KHAI PHÁ DỮ LIỆU.pdf
CÁC BÀI TOÁN KHAI PHÁ DỮ LIỆU VÀ ỨNG DỤNG CỦA KHAI PHÁ DỮ LIỆU.pdf
 
Xử lý tín hiệu số
Xử lý tín hiệu sốXử lý tín hiệu số
Xử lý tín hiệu số
 
Quy hoach tuyen tinh C H U O N G2
Quy hoach tuyen tinh C H U O N G2Quy hoach tuyen tinh C H U O N G2
Quy hoach tuyen tinh C H U O N G2
 
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongBài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
 
Tìm hiểu về Wordpress - Wordpress presentation
Tìm hiểu về Wordpress - Wordpress presentation Tìm hiểu về Wordpress - Wordpress presentation
Tìm hiểu về Wordpress - Wordpress presentation
 
Lập trình Python GUI vs PySide
Lập trình Python GUI vs PySideLập trình Python GUI vs PySide
Lập trình Python GUI vs PySide
 
Đề tài: Nhận dạng đối tượng sử dụng thuật toán AdaBoost, HOT
Đề tài: Nhận dạng đối tượng sử dụng thuật toán AdaBoost, HOTĐề tài: Nhận dạng đối tượng sử dụng thuật toán AdaBoost, HOT
Đề tài: Nhận dạng đối tượng sử dụng thuật toán AdaBoost, HOT
 

Viewers also liked

C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...Long Kingnam
 
Ga ly thuyet_nhung_co_btvn
Ga ly thuyet_nhung_co_btvnGa ly thuyet_nhung_co_btvn
Ga ly thuyet_nhung_co_btvnNhung Pham
 
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư việnThe Nguyen Manh
 
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư việnSlide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư việnThe Nguyen Manh
 
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
 

Viewers also liked (8)

C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
C# Báo cáo môn lập trình hướng đối tượng - Xây dựng chương trinh quản lí sinh...
 
Ga ly thuyet_nhung_co_btvn
Ga ly thuyet_nhung_co_btvnGa ly thuyet_nhung_co_btvn
Ga ly thuyet_nhung_co_btvn
 
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
[Báo cáo] Bài tập lớn Ngôn ngữ lập trình: Quản lý thư viện
 
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư việnSlide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
BTL Lập trình C#
BTL Lập trình C#BTL Lập trình C#
BTL Lập trì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#
Bài tập thực hành C#
 
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
 

Similar to Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#

Bai5kethuadahinh 130622091400-phpapp02
Bai5kethuadahinh 130622091400-phpapp02Bai5kethuadahinh 130622091400-phpapp02
Bai5kethuadahinh 130622091400-phpapp02Hoàng Hà
 
Western university concept 10.10.2017 presentation
Western university concept 10.10.2017 presentationWestern university concept 10.10.2017 presentation
Western university concept 10.10.2017 presentationĐàm Minh
 
3_TuanAnh Xay dung va phat trien chuong trinh dao tao theo de xuong CDIO.pptx
3_TuanAnh Xay dung va phat trien chuong trinh dao tao theo de xuong CDIO.pptx3_TuanAnh Xay dung va phat trien chuong trinh dao tao theo de xuong CDIO.pptx
3_TuanAnh Xay dung va phat trien chuong trinh dao tao theo de xuong CDIO.pptxHeRo488812
 
Học qua dự án (Project-based Learning)
Học qua dự án (Project-based Learning)Học qua dự án (Project-based Learning)
Học qua dự án (Project-based Learning)DUONG Trong Tan
 
Western university concept
Western university conceptWestern university concept
Western university conceptĐàm Minh
 
Kịch bản dạy học
Kịch bản dạy họcKịch bản dạy học
Kịch bản dạy họctin_k36
 
Kịch bản dạy học
Kịch bản dạy họcKịch bản dạy học
Kịch bản dạy họctin_k36
 
Oop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngOop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngTráng Hà Viết
 
KBDH - Lớp 11 - Bài 13: Kiểu bản ghi
KBDH - Lớp 11 - Bài 13: Kiểu bản ghiKBDH - Lớp 11 - Bài 13: Kiểu bản ghi
KBDH - Lớp 11 - Bài 13: Kiểu bản ghiTran Juni
 
Kich bandayhoc baitapvathuchanh6 - thieu thi ngoc trieu
Kich bandayhoc baitapvathuchanh6 - thieu thi ngoc trieuKich bandayhoc baitapvathuchanh6 - thieu thi ngoc trieu
Kich bandayhoc baitapvathuchanh6 - thieu thi ngoc trieutin_k36
 
Kich ban day hoc nhan chau
Kich ban day hoc nhan chauKich ban day hoc nhan chau
Kich ban day hoc nhan chautin_k36
 
ĐỀ CƯƠNG CHI TIẾT CTDL&GT TINH.222
ĐỀ CƯƠNG CHI TIẾT CTDL&GT TINH.222ĐỀ CƯƠNG CHI TIẾT CTDL&GT TINH.222
ĐỀ CƯƠNG CHI TIẾT CTDL&GT TINH.222vinhduchanh
 
Quản Lý Hoạt Động Nghiên Cứu Khoa Học Sư Phạm Ứng Dụng Và Sáng Kiến Kinh Nghi...
Quản Lý Hoạt Động Nghiên Cứu Khoa Học Sư Phạm Ứng Dụng Và Sáng Kiến Kinh Nghi...Quản Lý Hoạt Động Nghiên Cứu Khoa Học Sư Phạm Ứng Dụng Và Sáng Kiến Kinh Nghi...
Quản Lý Hoạt Động Nghiên Cứu Khoa Học Sư Phạm Ứng Dụng Và Sáng Kiến Kinh Nghi...nataliej4
 
- LẬP KẾ HOẠCH TRONG DẠY HỌC LỊCH SỬ Ở TRƯỜNG PHỔ THÔNG.docx
- LẬP KẾ HOẠCH TRONG DẠY HỌC LỊCH SỬ Ở TRƯỜNG PHỔ THÔNG.docx- LẬP KẾ HOẠCH TRONG DẠY HỌC LỊCH SỬ Ở TRƯỜNG PHỔ THÔNG.docx
- LẬP KẾ HOẠCH TRONG DẠY HỌC LỊCH SỬ Ở TRƯỜNG PHỔ THÔNG.docxThoTrng47
 

Similar to Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C# (20)

Bai5kethuadahinh 130622091400-phpapp02
Bai5kethuadahinh 130622091400-phpapp02Bai5kethuadahinh 130622091400-phpapp02
Bai5kethuadahinh 130622091400-phpapp02
 
Western university concept 10.10.2017 presentation
Western university concept 10.10.2017 presentationWestern university concept 10.10.2017 presentation
Western university concept 10.10.2017 presentation
 
3_TuanAnh Xay dung va phat trien chuong trinh dao tao theo de xuong CDIO.pptx
3_TuanAnh Xay dung va phat trien chuong trinh dao tao theo de xuong CDIO.pptx3_TuanAnh Xay dung va phat trien chuong trinh dao tao theo de xuong CDIO.pptx
3_TuanAnh Xay dung va phat trien chuong trinh dao tao theo de xuong CDIO.pptx
 
Học qua dự án (Project-based Learning)
Học qua dự án (Project-based Learning)Học qua dự án (Project-based Learning)
Học qua dự án (Project-based Learning)
 
Western university concept
Western university conceptWestern university concept
Western university concept
 
Kịch bản dạy học
Kịch bản dạy họcKịch bản dạy học
Kịch bản dạy học
 
Kịch bản dạy học
Kịch bản dạy họcKịch bản dạy học
Kịch bản dạy học
 
Oop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngOop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượng
 
KBDH - Lớp 11 - Bài 13: Kiểu bản ghi
KBDH - Lớp 11 - Bài 13: Kiểu bản ghiKBDH - Lớp 11 - Bài 13: Kiểu bản ghi
KBDH - Lớp 11 - Bài 13: Kiểu bản ghi
 
Ch4.phan tich(1)
Ch4.phan tich(1)Ch4.phan tich(1)
Ch4.phan tich(1)
 
Kich bandayhoc baitapvathuchanh6 - thieu thi ngoc trieu
Kich bandayhoc baitapvathuchanh6 - thieu thi ngoc trieuKich bandayhoc baitapvathuchanh6 - thieu thi ngoc trieu
Kich bandayhoc baitapvathuchanh6 - thieu thi ngoc trieu
 
Kich ban day hoc nhan chau
Kich ban day hoc nhan chauKich ban day hoc nhan chau
Kich ban day hoc nhan chau
 
Kehoachbaiday
KehoachbaidayKehoachbaiday
Kehoachbaiday
 
ĐỀ CƯƠNG CHI TIẾT CTDL&GT TINH.222
ĐỀ CƯƠNG CHI TIẾT CTDL&GT TINH.222ĐỀ CƯƠNG CHI TIẾT CTDL&GT TINH.222
ĐỀ CƯƠNG CHI TIẾT CTDL&GT TINH.222
 
Trình diễn hồ sơ bài dạy
Trình diễn hồ sơ bài dạyTrình diễn hồ sơ bài dạy
Trình diễn hồ sơ bài dạy
 
Trình diễn hồ sơ bài dạy
Trình diễn hồ sơ bài dạyTrình diễn hồ sơ bài dạy
Trình diễn hồ sơ bài dạy
 
PTN8.pptx
PTN8.pptxPTN8.pptx
PTN8.pptx
 
Ke hoach-bai-day
Ke hoach-bai-dayKe hoach-bai-day
Ke hoach-bai-day
 
Quản Lý Hoạt Động Nghiên Cứu Khoa Học Sư Phạm Ứng Dụng Và Sáng Kiến Kinh Nghi...
Quản Lý Hoạt Động Nghiên Cứu Khoa Học Sư Phạm Ứng Dụng Và Sáng Kiến Kinh Nghi...Quản Lý Hoạt Động Nghiên Cứu Khoa Học Sư Phạm Ứng Dụng Và Sáng Kiến Kinh Nghi...
Quản Lý Hoạt Động Nghiên Cứu Khoa Học Sư Phạm Ứng Dụng Và Sáng Kiến Kinh Nghi...
 
- LẬP KẾ HOẠCH TRONG DẠY HỌC LỊCH SỬ Ở TRƯỜNG PHỔ THÔNG.docx
- LẬP KẾ HOẠCH TRONG DẠY HỌC LỊCH SỬ Ở TRƯỜNG PHỔ THÔNG.docx- LẬP KẾ HOẠCH TRONG DẠY HỌC LỊCH SỬ Ở TRƯỜNG PHỔ THÔNG.docx
- LẬP KẾ HOẠCH TRONG DẠY HỌC LỊCH SỬ Ở TRƯỜNG PHỔ THÔNG.docx
 

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
 
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
 
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
 

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
 
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
 
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
 

Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#

  • 1. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC 1
  • 2. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 4: Classes, objects và namespaces • Tổng quan về lập trình hướng đối tượng • Xây dựng class trong C# • NamespacesNamespaces 2 - 12 tiết -
  • 3. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tổng quan về lập trình hướng đối tượng • Khái niệm • Các đặc trưng cơ bản 3
  • 4. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Khái niệm Lậ t ì h h ớ đối t (OOP) là ột h há− Lập trình hướng đối tượng (OOP) là một phương pháp thiết kế và phát triển phần mềm dựa trên kiến trúc lớp (class) và đối tượng (object). − OOP là cách lập trình nhằm hướng các xử lý đến từng đối tượng, mỗi đối tượng sẽ có các xử lý của riêng nó 4
  • 5. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm ố ể ế• Đối tượng (object) là một thực thể trong thực tế − Con người • Nhân viên Trần Anh Tuấn• Nhân viên Trần Anh Tuấn • Sinh viên Lê Bảo Huy − Đồ vật • Bàn B01 • Phòng học E304 Chứng từ− Chứng từ • Hóa đơn HD200606-S21 • Đơn đặt hàng DH200605-K01 5 − …
  • 6. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Các thông tin về đối tượng: − Ví dụ: Đối tượng Xe Ô tôg • Mã số xe • Hiệu xe • Màu sơn • Hãng sản xuất • Nă ả ất• Năm sản xuất • … 6
  • 7. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Tiếp cận hướng đối tượng − Là kỹ thuật cho phép biểu diễn tự nhiên các đối tượng t th tế ới á đối t bê t h t ì htrong thực tế với các đối tượng bên trong chương trình Đối tượng trong thực tế Đối tượng trong chương 7 trong chương trình
  • 8. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm ế ố• Tiếp cận hướng đối tượng − “Nhân cách hóa” đối tượng Hệ thống thực tế Thực hiện nghiệp vụ f liên quan đối tượng x Hệ thống tin học Đối tượng x với khả năng th hiệ hiệ f 8 thực hiện nghiệp vụ f
  • 9. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Tiếp cận hướng đối tượng• Tiếp cận hướng đối tượng Ví dụ 1: Giải h t ì h bậ h i P− Giải phương trình bậc hai P ax2 + bx + c = 0 Đối tượng P với hàm giải phương trìnhĐối tượng P với hàm giải phương trình − Thông tin về đối tượng P • Các hệ số a, b, c 9 Các hệ số a, b, c • (Biến số x, Tên phương trình P)
  • 10. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Tiếp cận hướng đối tượng• Tiếp cận hướng đối tượng Ví dụ 2: ề− Tính tiền lương của nhân viên Nv • Họ tên, Giới tính, Ngày vào làm, Hệ số lương, Số con Đối tượng Nv với hàm Tính tiền lương − Thông tin về đối tượng Nv 10 Thông tin về đối tượng Nv • Họ tên, Giới tính, Ngày vào làm, Hệ số lương, Số con
  • 11. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Lớp đối tượng (Class)• Lớp đối tượng (Class) − Class là một khái niệm trong Lập trình hướng đối tượng mô tả cho những thực thể có chung tính chất và hànhmô tả cho những thực thể có chung tính chất và hành vi. Class định nghĩa những thuộc tính và hành vi được dùng cho những đối tượng của lớp đó ế Ừ Á− Kết quả của sự TRỪU TƯỢNG HOÁ (Abstraction) các đối tượng: • Cùng loạiCùng loại • Cùng các thông tin mô tả về đối tượng 11 Lớp đối tượng
  • 12. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lớp: XE OTOp _ 12
  • 13. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Cá thà h hầ ủ lớ• Các thành phần của lớp 13
  • 14. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Cá thà h hầ ủ lớ• Các thành phần của lớp − Biến thành viên (Field) ề ố• Lưu trữ các thông tin mô tả về đối tượng. • Ví dụ: Lưu trữ thông tin về nhân viên – Mã nhân viênMã nhân viên – Họ nhân viên – Tên nhân viên N à i h– Ngày sinh – Ngày vào làm – Hệ số lương 14 – Số con – …
  • 15. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Các thành phần của lớp• Các thành phần của lớp − Thuộc tính và Phương thức ù ể ậ ậ í á ấ à ử ý ô• Dùng để cập nhật, tính toán, cung cấp và xử lý thông tin của đối tượng 15
  • 16. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Cá thà h hầ ủ lớ• Các thành phần của lớp − Thuộc tính và Phương thức • Ví dụ: Thuộc tính – He so luong: Cập nhật/cung cấp thông tin về hệ sốHe_so_luong: Cập nhật/cung cấp thông tin về hệ số lương của nhân viên – Tham_nien: Cung cấp thông tin về thâm niên của nhân viênviên Phương thức – Tien_luong: Tính tiền lương cho nhân viên 16 – Tro_cap: Tính trợ cấp cho nhân viên – Tien_thuong: Tính tiền thưởng cho nhân viên
  • 17. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm ầ• Các thành phần của lớp − Sự kiện • Gởi thông báo của đối tượng ra bên ngoài 17
  • 18. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC XE OTO Khái niệm ID Hieu xe XE_OTO Thuộc tính • Ví dụ Lớp XE_OTO _ Hang_san_xuat Mau_son Thuộc tính Nam_san_xuat No_may Vao soVao_so Thang Tat may Phương thức 18 _ y Sap_het_xangSự kiện
  • 19. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC NHAN_VIEN Khái niệm Ma_nhan_vien Ho_nhan_vien T h iThuộc tính • Ví dụ Lớp NHAN_VIEN Ten_nhan_vien Ngay_sinh Ngay vao lam Thuộc tính Ngay_vao_lam He_so_luong So_con Tien_luong Tro_cap Ti th Phương thức 19 Tien_thuong Tang_luongSự kiện
  • 20. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tổng quan về lập trình hướng đối tượng • Khái niệm • Các đặc trưng cơ bản 20
  • 21. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các đặc trưng cơ bản • Tính trừu tượng (Abstraction)• Tính trừu tượng (Abstraction) • Tính đóng gói (Encapsulation) • Tính kế thừa (Inheritance) 21
  • 22. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các đặc trưng cơ bản • Tí h t ừ t (Ab t ti )• Tính trừu tượng (Abstraction) − Lớp (Class) là một khái niệm trừu tượng ế ế• Ví dụ: 1 bản thiết kế (bản vẽ) xe hơi Lớp Xe hơi − Đối tượng (Object) là một thể hiện cụ thể của lớp ế ấ ở ả ẩ ể• Ví dụ: 1 chiếc xe hơi được xuất xưởng là 1 sản phẩm cụ thể được tạo ra từ bản thiết kế gốc Đối tượng Xe hơi Từ những đối tượng giống nhau, ta có thể trừu tượng hoá thành 1 lớlớp 22
  • 23. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các đặc trưng cơ bản • Tí h đó ói (E l ti )• Tính đóng gói (Encapsulation) − Mỗi lớp được xây dựng để thực hiện một nhóm chức năng đặc trưng của riêng lớp đóchức năng đặc trưng của riêng lớp đó • Ví dụ: – Muốc thực hiện các hàm toán học lớp Math – Muốn xử lý chuỗi lớp String 23
  • 24. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các đặc trưng cơ bản • Tí h kế thừ (I h it )• Tính kế thừa (Inheritance) − Tính chất này cho phép xây dựng những lớp mới dựa trên những lớp sẵn có (lớp Con kế thừa lớpdựa trên những lớp sẵn có (lớp Con kế thừa lớp Cha) − Lớp Con có khả năng bổ sung, mở rộng những tínhp g g, ộ g g năng mới dựa trên những phần sẵn có ở lớp Cha • Ví dụ: Các loại xe đời mới ngày càng hiện đại hơn và có– Các loại xe đời mới ngày càng hiện đại hơn và có nhiều chức năng tiện dụng hơn những loại xe đời cũ 24
  • 25. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 4: Classes, objects và namespaces • Tổng quan về lập trình hướng đối tượng • Xây dựng class trong C# • NamespacesNamespaces 25 - 12 tiết -
  • 26. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng class trong C# • Khái niệm • Khai báo class • Tạo đối tượng có kiểu class • Xây dựng các thành phần trong class 26
  • 27. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khái niệm • Một class là kết quả của sự trừu tượng hóa đại diện chung cho dữ liệu và các hành vi của mộtdiện chung cho dữ liệu và các hành vi của một thực thể hay một tập các đối tượng • Các classes còn mang ý nghĩa là một kiểu dữCác classes còn mang ý nghĩa là một kiểu dữ liệu và là các khối xây dựng cơ sở của các trình ứng dụng hướng đối tượng 27
  • 28. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng class trong C# • Khái niệm • Khai báo class • Tạo đối tượng có kiểu class • Xây dựng các thành phần trong class 28
  • 29. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo class trong C# • Cú há• Cú pháp <từ khóa khai báo phạm vi> class <tên_lớp> { // khai báo các sự kiện (Events) ế// khai báo các biến thành viên (Fields) // khai báo các thuộc tính (Properties) // kh i bá á h thứ (M th d )// khai báo các phương thức (Methods) // ... } 29 }
  • 30. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo class trong C# • Ý hĩ• Ý nghĩa: − Từ khóa khai báo phạm vi: xác định phạm vi hoạt động của class Nếu không chỉ ra từ khóa khai báo phạm vicủa class. Nếu không chỉ ra từ khóa khai báo phạm vi thì class sẽ có phạm vi hoạt động là private (cục bộ). − Các từ khóa khai báo phạm vi thường dùng khi khai báop ạ g g class: • Private • Protected • Public • Static 30 Static
  • 31. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo class trong C# • Cách tạo file class − Tạo thư mục chứa các class − Click phải vào thư mục Chọn Add Add Class − Đặt tên cho tập tin (*.cs) 31
  • 32. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo class trong C# • Ví dụ: tạo một class có tên là Nhan_vien 32
  • 33. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng class trong C# • Khái niệm • Khai báo class • Tạo đối tượng có kiểu class • Xây dựng các thành phần trong class 33
  • 34. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo đối tượng có kiểu class • Một class định nghĩa một kiểu của đối tượng. Một đối tượng là một thực thể cụ thể trên cơ sở của một class và nó đôi khi còn được gọisở của một class, và nó đôi khi còn được gọi là một thể hiện (instance) của một class. • Các đối tượng có thể được tạo bằng cách sử• Các đối tượng có thể được tạo bằng cách sử dụng từ khóa new theo sau đó là tên của class mà đối tượng dựa vào đó để khai báo: <Tên class> tên_đối tượng = new <Tên class>(); 34
  • 35. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo đối tượng có kiểu class • Ví dụ: khai báo một đối tượng có tên nv1 có kiểu class Nhan_vien Nhan_vien nv1 = new Nhan_vien(); • Có thể tạo một đối tượng tham chiếu mà không khởi tạo new nó như sau : <Tên class> tên_đối tượng; − Ví dụ: 35 Nhan_vien nv1;
  • 36. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Tạo đối tượng có kiểu class • Khi một instance của một class được tạo, một tham chiếu tới đối tượng sẽ được thiết lập. (Trong ví dụ trên nv1 là một tham chiếu tới(Trong ví dụ trên, nv1 là một tham chiếu tới một đối tượng mới dựa trên class Nhan_vien) • Nếu bạn thực hiện các khai báo sau đây:• Nếu bạn thực hiện các khai báo sau đây: Nhan_vien nv1 = new Nhan_vien() ; Nh i 2Nhan_vien nv2; nv2 = nv1; ế ế ố 36 => nv2 sẽ tham chiếu đến cùng đối tượng trên vùng nhớ heap giống như nv1
  • 37. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng class trong C# • Khái niệm • Khai báo class • Tạo đối tượng có kiểu class • Xây dựng các thành phần trong class 37
  • 38. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng các thành phần trong class • Biến thành viên (Field) • Thuộc tính (Property) • Các phương thức (Method) • Nạp chồng toán tử (Operator Overloading) • Delegate trong C#• Delegate trong C# • Sự kiện (Event) 38
  • 39. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Biến thành viên (Field) • Khái niệm: − Biến thành viên là các trường dữ liệu lưu trữ dữ liệu của ột l ó ũ hí h là á thà h iê dữ liệ ủmột class, nó cũng chính là các thành viên dữ liệu của class. − Các trường dữ liệu của class được khai báo bên trongCác trường dữ liệu của class được khai báo bên trong khối class với việc chỉ định cấp độ truy xuất của trường dữ liệu (public/private) ế− Khi khai báo nếu không chỉ ra phạm vi là private hay public thì mặc định được hiểu là private 39
  • 40. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Biến thành viên (Field) • Khai báo: − Cú pháp: l Tê lớclass <Tên lớp> { // …… // Khai báo biến thành viên// Khai báo biến thành viên [private | public] Kieu_du_lieu Bien_thanh_vien_1; [private | public] Kieu_du_lieu Bien_thanh_vien_2; …… [private | public] Kieu_du_lieu Bien_thanh_vien_N; 40 // Tiếp tục cho những khai báo khác }
  • 41. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Biến thành viên (Field) [private | public] Kiểu_dữ_liệu Biến_thành_viên; • Từ khóa privateTừ khóa private 41
  • 42. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Biến thành viên (Field) [private | public] Kiểu_dữ_liệu Biến_thành_viên; • Từ khóa publicTừ khóa public 42
  • 43. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ class NHAN_VIEN { // …… // Khai báo biến thành viên private string mHo nhan vien;private string mHo_nhan_vien; private string mTen_nhan_vien; private DateTime mNgay_sinh; private bool mGioi_tinh; private double mHe_so_luong; //// …… // Tiếp tục cho những khai báo khác //…… 43 }
  • 44. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Biến thành viên (Field) • Lưu ý: − Đối với các biến thành viên được khai báo public có thể đ t ất bằ á h thê dấ hấ têđược truy xuất bằng cách thêm dấu chấm ngay sau tên của đối tượng, kế tiếp đó là tên của trường dữ liệu. − Ví dụ:Ví dụ: 44
  • 45. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng các thành phần trong class • Biến thành viên (Field) • Thuộc tính (Property) • Các phương thức (Method) • Nạp chồng toán tử (Operator Overloading) • Delegate trong C#• Delegate trong C# • Sự kiện (Event) 45
  • 46. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Thuộc tính (Property) • Khái niệm: − Thuộc tính (Property) là thành phần được sử dụng để t ất đế á biế thà h iê (Fi ld) đ kh i bátruy xuất đến các biến thành viên (Field) được khai báo private bên trong class − Mỗi thuộc tính chỉ truy xuất đến một biến thành viên duyMỗi thuộc tính chỉ truy xuất đến một biến thành viên duy nhất 46
  • 47. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Thuộc tính (Property) • Kh i bá• Khai báo: − Cú pháp: class <Tên lớp>class <Tên lớp> { // Khai báo thuộc tính [private | public] Kieu_du_lieu_X Ten_thuoc_tinh { get { return Tên_biến_thành_viên;} set { Tên biến thành viên = value;}set { Tên_biến_thành_viên = value;} } 47 // Tiếp tục cho những khai báo khác }
  • 48. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ class NHAN_VIEN_ { single mHe_so_luong; Ho_nhan_vien Ten nhan vien // Khai báo các thuộc tính public double He_so_luong NHAN_VIEN Ten_nhan_vien Ngay_sinh He_so_luong { get {return mHe_so_luong;} set {mHe so luong = value;} _ _ g Ngay_vao_lam So_con set {mHe_so_luong value;} } // Tiếp tục cho những khai báo khác 48 //…… }
  • 49. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Thuộc tính (Property) • Kiể t tí h h lệ ủ dữ liệ• Kiểm tra tính hợp lệ của dữ liệu // Khai báo các thuộc tính public double He_so_luong { t { t H l }get { return mHe_so_luong; } set { if (value >=1)if (value 1) mHe_so_luong = value; } 49 }
  • 50. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng các thành phần trong class • Biến thành viên (Field) • Thuộc tính (Property) • Các phương thức (Method) • Nạp chồng toán tử (Operator Overloading) • Delegate trong C#• Delegate trong C# • Sự kiện (Event) 50
  • 51. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo (Constructor): − Constructor là một phương thức đặc biệt có cùng tên ới tê ủ l hứ óvới tên của class chứa nó. − Constructor có vai trò khởi tạo các thành viên dữ liệu của đối tượng mớicủa đối tượng mới. − Ngoài việc cùng tên với class, Constructor còn có điểm đặc biệt nữa so với các phương thức khác là nó được ố ằtriệu gọi ngay sau khi khởi tạo đối tượng bằng lệnh new và tương ứng với mỗi đối tượng, nó chỉ được gọi một lần duy nhất. 51 y
  • 52. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo không có tham số: − Được dùng cho việc khởi tạo các giá trị mặc định cho dữ liệ ủ ldữ liệu của class. − Khi khởi tạo đối tượng không phải truyền tham số lúc triệu gọitriệu gọi − Xét ví dụ lớp nhan_vien với khai báo như sau: 52
  • 53. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo không có tham số: − Ví dụ: 53
  • 54. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo không có tham số: − Và đoạn lệnh khởi tạo đối tượng như sau: 54
  • 55. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo không có tham số: − Kết quả xuất ra màn hình: 55
  • 56. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo có tham số: − Cho phép định nghĩa nhiều constructor trong một class. 56
  • 57. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo có tham số: − Lúc đó đoạn lệnh khởi tạo đối tượng như sau: 57
  • 58. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo không có tham số: − Kết quả xuất ra màn hình: 58
  • 59. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo với khai báo private : − Một private constructor là một thể hiện constructor cụ thể Nó th ờ đ dù t á l hỉ hứthể . Nó thường được dùng trong các class chỉ chứa các thành viên tĩnh (các thành viên có khai báo từ khóa static). − Nếu một class có một hay nhiều private constructor và không khai báo từ khóa public, thì các class khác (ngoại trừ các class được lồng) sẽ không được phép tạo cáctrừ các class được lồng) sẽ không được phép tạo các thể hiện (instances) của class này. 59
  • 60. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo với khai báo private : − Ví dụ: xét class Counter như sau: 60
  • 61. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo với khai báo private : − Lúc đó đoạn lệnh gọi thực hiện như sau: − Dòng lệnh 18: gán giá trị 100 cho thành viên dữ liệu currentCount, Buộc phải truy xuất đến thành viên dữ liệ à thô tê l hứ ó 61 liệu này thông qua tên class chứa nó.
  • 62. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo với khai báo static : − static constructor thường được dùng để khởi tạo dữ liệu t ti bất kỳ h ặ để th hiệ ột hà h độ iêstatic bất kỳ, hoặc để thực hiện một hành động riêng biệt mà hành động này chỉ cần thiết thực thi một lần. − static constructor được gọi một cách tự động trước khistatic constructor được gọi một cách tự động trước khi instance đầu tiên được tạo hoặc bất kỳ thành viên static nào đó được tham chiếu tới. 62
  • 63. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo với khai báo static : − Ví dụ: xét class Buss với constructor static như sau: 63
  • 64. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức khởi tạo với khai báo static : − Xét đoạn lệnh sử dụng class như sau: − Kết quả xuất ra màn hình: 64
  • 65. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Các đặc tính của static constructor: − static constructor không được phép có tham số − static constructor được triệu gọi một cách tự động để khởi tạo một class trước khi instance đầu tiên được tạo hay các thành viên static bất kỳ được tham chiếu tớihay các thành viên static bất kỳ được tham chiếu tới. − static constructor không thể được triệu gọi trực tiếp. − Người dùng không thể can thiệp vào khi static− Người dùng không thể can thiệp vào khi static constructor được thực thi trong chương trình. 65
  • 66. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Tạo một Copy Constructor: − Trong C# không cung cấp một copy constructor. Tuy hiê ó thể â d ột h thứ thí h h đểnhiên có thể xây dựng một phương thức thích hợp để sao chép các giá trị từ một đối tượng đang tồn tại. − Xét lớp nhan vien với khai báo copy constructor nhưXét lớp nhan_vien với khai báo copy constructor như trong ví dụ sau: 66
  • 67. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC 67
  • 68. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Tạo một Copy Constructor: − Dòng lệnh 9 13 : tạo constructor có tham số có kiểu ũ hí h là kiể l hứ ó C t t à ócũng chính là kiểu class chứa nó. Constructor này có nhiệm vụ thực hiện việc sao chép dữ liệu tương ứng từ tham số vào các thành viên dữ liệu của class. − Dòng lệnh 15 19 : tạo constructor thể hiện (instance constructor). Constructor này có hai tham số tương ứng với hai thành viên dữ liệu của class Từ khóa this đượcvới hai thành viên dữ liệu của class. Từ khóa this được sử dụng nhằm ám chỉ đến instance hiện hành của class. 68
  • 69. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức hủy (Destructor): − Destructor thường được dùng để hủy instance của các lclass. − Để khai báo Destructor sử dụng ký hiệu ~ theo cú pháp sau:sau: class Car { ~ Car() // destructor { // Các câu lệnh mang tính dọn dẹp 69 ệ g ọ ẹp } }
  • 70. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức hủy (Destructor):• Phương thức hủy (Destructor): − Destructor ngầm định gọi Finalize trên class cơ sở của đối tượng. Vì vậy, mã lệnh destructor ở trên sẽ ngầmđối tượng. Vì vậy, mã lệnh destructor ở trên sẽ ngầm chuyển đổi tới phương thức Finalize sau đây : protected override void Finalize() {{ try { // Các câu lệnh mang tính dọn dẹp ... } finally { base Finalize(); 70 base.Finalize(); } }
  • 71. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức hủy (Destructor):• Phương thức hủy (Destructor): − Với phương cách này phương thức finalize được gọi đệ qui cho tất cả các instance trong một loạt đối tượng kếqui cho tất cả các instance trong một loạt đối tượng kế thừa. − Ví dụ: class K { K( ) { } class K { K( ) { }K( ) { } ~K( ) { } } void Finalize() { base.Finalize( ); } 71 } }
  • 72. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Các chú ý sau khi làm việc với destructor :• Các chú ý sau khi làm việc với destructor : − Các destructor không thể được định nghĩa trong các struct Chúng chỉ được sử dụng với các classstruct. Chúng chỉ được sử dụng với các class. − Một class chỉ có thể có duy nhất một destructor. − Các destructor không thể được kế thừa hay được táiCác destructor không thể được kế thừa hay được tái định nghĩa (hay gọi là nạp chồng - overloaded). − Các destructor không thể triệu gọi. Chúng được triệu gọig ệ gọ g ợ ệ gọ một cách tự động. − Một destructor không cho phép có bất kỳ sửa đổi nào thông qua nó và nó cũng không có các tham số 72 thông qua nó và nó cũng không có các tham số.
  • 73. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Các chú ý sau khi làm việc với destructor :• Các chú ý sau khi làm việc với destructor : − Không nên sử dụng destructor rỗng, điều này dẫn đến việc mất hiệu suất thực thi một cách không cần thiếtviệc mất hiệu suất thực thi một cách không cần thiết. − Sử dụng phương thức Finalize() để giải phóng nguồn tài nguyên là cách làm không tường minh. Thay vào đó, ồbạn nên chọn cách giải phóng các nguồn tài nguyên trong class bằng cách kế thừa từ interface có tên IDisposable và cài đặt phương thức Dispose(). 73
  • 74. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức Dispose:• Phương thức Dispose: − Phương thức Dispose nói chung không giải phóng bộ nhớ được NET quản lý nó được sử dụng chỉ để lấy lạinhớ được .NET quản lý, nó được sử dụng chỉ để lấy lại các nguồn tài nguyên mà .Net không quản lý (unmanaged resources) mà một class đang giữ tham chiếu trước đóchiếu trước đó. − Phương thức Dispose không loại bỏ vùng nhớ của chính đối tượng, nó chỉ là giải phóng vùng nhớ mà đối ế ốtượng tham chiếu tới. Đối tượng sẽ được loại bỏ khi bộ thu dọn rác thấy thuận lợi. − Khi cài đặt phương thức Dispose phải nhớ gọi 74 − Khi cài đặt phương thức Dispose phải nhớ gọi GC.SuppressFinalize(this) để ngăn finalizer khỏi vận hành.
  • 75. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức Dispose:• Phương thức Dispose: − Interface có tên IDisposable chỉ bao gồm một phương thức Dispose không có tham sốthức Dispose không có tham số. public interface IDisposable { void Dispose(); } − Ví dụ: xét đoạn mã lệnh khai báo lớp Test như sau: 75
  • 76. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC class Test : IDisposable { private bool isDisposed = false;p p ; ~Test() { Dispose(false);Dispose(false); } protected void Dispose(bool disposing) { if (disposing) {{ // Mã lệnh thu hồi managed resources của class } // Mã lệnh thu hồi un-managed resources của class 76 // Mã lệnh thu hồi un-managed resources của class isDisposed = true; }
  • 77. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC public void Dispose() { Dispose(true);p ( ); GC.SuppressFinalize(this); } public double tong(Int32 x Int32 y)public double tong(Int32 x, Int32 y) { return x + y; } } − Chú ý: phương thức GC.SuppressFinalize(this) phải được gọi sau khi gọi phương thức Dispose(true) Để bảo đảm rằng lời gọi sau chỉ được thực hiện nếu và chỉ nếu phương thức Dispose đã hoàn tất 77 được thực hiện nếu và chỉ nếu phương thức Dispose đã hoàn tất thành công.
  • 78. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Các lưu ý khi cài đặt Dispose:• Các lưu ý khi cài đặt Dispose: − Implement IDisposable trên mỗi kiểu có một finalizer − Bảo đảm rằng một đối tượng sẽ không được sử dụng− Bảo đảm rằng một đối tượng sẽ không được sử dụng sau khi tạo lời gọi tới phương thức Dispose. − Gọi Dispose trên tất cả các kiểu IDisposable mỗi khi làm iệ ới húviệc với chúng. − Ngăn ngừa các lời gọi sau đó tới finalizer từ bên trong phương thức Dispose với việc sử dụng phương thứcp g p ệ ụ g p g GC.SuppressFinalize. − Tránh tạo các dispose kiểu giá trị 78 − Tránh việc throw các exceptions từ bên trong các phương thức Dispose.
  • 79. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý:• Phương thức tính toán, xử lý: − Một phương thức là một khối mã lệnh chứa một dãy các câu lệnh có cùng mục tiêu nào đócác câu lệnh có cùng mục tiêu nào đó − Các dạng phương thức tính toán, xử lý: • Phương thức không trả về giá trị, không tham sốPhương thức không trả về giá trị, không tham số • Phương thức có trả về giá trị, không tham số • Phương thức trả về giá trị thông qua tham số của phương thứthức • Phương thức với tham số sử dụng từ khóa params • Tái nghĩa phương thức (Method Overloading) 79 Tái nghĩa phương thức (Method Overloading)
  • 80. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Cú pháp khai báo phương thức:• Cú pháp khai báo phương thức: class <Tên lớp> {{ [private | public] Kiểu_dữ_liệu Tên_phươg_thức () { // Lệnh xử lý return <biểu thức chứa kết quả trả về>; } // Tiếp tục cho những khai báo khác // 80 //… }
  • 81. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ class NHAN_VIEN { // …… // Khai báo các phương thức public double Tro_cap() Ho nhan vien NHAN_VIEN { return (So_con * 100000); } Ho_nhan_vien Ten_nhan_vien Ngay_sinh public double Tien_thuong() { return (Tham_nien * 500000); He_so_luong Ngay_vao_lam } // …… // Tiếp tục cho những khai báo khác So_con Tro_cap Tien thuong 81 // Tiếp tục cho những khai báo khác // …… } Tien_thuong
  • 82. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý không trả về giá• Phương thức tính toán, xử lý không trả về giá trị, không tham số : − Thường được sử dụng trong các trường hợp khởi tạoThường được sử dụng trong các trường hợp khởi tạo các giá trị mặc định cho các trường dữ liệu của class hay trong các phương thức xử lý mà không quan tâm tới kết quả trả vềtới kết quả trả về − Ví dụ: 82
  • 83. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý trả về giá trị không tham• Phương thức tính toán, xử lý trả về giá trị, không tham số : − Được sử dụng trong trường hợp thông qua phương thức để lấy giá trị của một trường dữ liệu trong class. Hoặc sử dụng các giá trị của các trường dữ liệu trong class để xử lý tính toán và trả về kết quả. − Cú pháp: <khai báo cấp độ truy xuất> [static] <kiểu trả về> Tên_phương thức() { // Các khai báo cục bộ và Các lệnh xử lý nếu có// Các khai báo cục bộ và Các lệnh xử lý nếu có Return <biểu thức chứa kết quả trả về>; } 83
  • 84. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị, không tham số : − Ví dụ:Ví dụ: 84
  • 85. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị thông tham số của phương thức: − Sau khi xử lý, phương thức sẽ trả về một hoặc nhiều giáý, p g ộ ặ g trị. − Để trả về giá trị thông qua tham số, sử dụng từ khóa ref khi khao báo tham sốkhi khao báo tham số − Ví dụ: public void lay canh(ref double r, ref double c)p y_ ( , ) { r = rong; 85 c = cao; }
  • 86. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị thông tham số của phương thức: − Khi gọi phương thức cũng phải dùng từ khóa ref trướcKhi gọi phương thức cũng phải dùng từ khóa ref trước các tham số − Ví dụ:ụ double cr, cc; hcn1.lay_canh(ref cr, ref cc); Console.WriteLine("Chieu rong:{0}, chieu cao:{1}", cr, cc ); 86
  • 87. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị thông tham số của phương thức: − C# còn cung cấp một từ khóa khác là out cho công việcg p ộ g ệ này. Nếu thay thế từ khóa ref bằng từ khóa out mọi hoạt động là như nhau, ngoại trừ việc đối với từ khóa out bạn không cần phải khởi tạo biến truyền trước khi ởigởi. − Ví dụ: public void lay canh(out double r out double c)public void lay_canh(out double r, out double c) { r = rong; 87 c = cao; }
  • 88. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý trả về giá trị• Phương thức tính toán, xử lý trả về giá trị thông tham số của phương thức: − Khi gọi phương thức cũng phải dùng từ khóa ref trướcKhi gọi phương thức cũng phải dùng từ khóa ref trước các tham số − Ví dụ:ụ double cr, cc; hcn1.lay_canh(out cr, out cc); Console.WriteLine("Chieu rong:{0}, chieu cao:{1}", cr, cc ); 88
  • 89. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý với tham số sử dụng từ• Phương thức tính toán, xử lý với tham số sử dụng từ khóa params : − Từ khóa params cho phép chỉ định một tham số với số lượngp p p ị ộ ợ g các tham số có thể thay đổi tùy biến. − Chỉ có duy nhất một khai báo dạng này trong khai báo tham số của phương thức và nó phải được đặt tại vị trí khai báosố của phương thức và nó phải được đặt tại vị trí khai báo sau cùng trong danh sách các tham số khai báo − Ví dụ: 89
  • 90. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Phương thức tính toán xử lý với tham số sử dụng từ• Phương thức tính toán, xử lý với tham số sử dụng từ khóa params : − Gọi thực hiện:ọ ự ệ DangSuDungParams_2(1, ‘a’, “test”); − Kết quả xuất ra màn hình: 90
  • 91. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Tái nghĩa phương thức (Method Overloading) :• Tái nghĩa phương thức (Method Overloading) : − C# cho phép cài đặt các phương thức có cùng tên với nhau nó mang ý nghĩa tái định nghĩa phương thức (haynhau, nó mang ý nghĩa tái định nghĩa phương thức (hay còn gọi là nạp chồng phương thức) − Các tham số được tái nghĩa phải thỏa mãn: • Kiểu của các tham số khác nhau • Số lượng của tham số khác nhau 91
  • 92. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Tái nghĩa phương thức (Method Overloading) :• Tái nghĩa phương thức (Method Overloading) : − Ví dụ: 92
  • 93. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Truyền tham số trong phương thức :• Truyền tham số trong phương thức : − Khi gọi thực hiện các phương thức, thông thường phải truyền vào các giá trị để cho phương thức xử lý thaotruyền vào các giá trị để cho phương thức xử lý, thao tác này được gọi là truyền tham số − Có 3 dạng truyền tham số cơ bản: • Truyền tham trị • Truyền tham chiếu 93
  • 94. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Truyền tham số trong phương thức :Truyền tham số trong phương thức : − Truyền tham trị: chỉ có bản sao của tham số thực được truyền cho tham số hình thức, mọi thay đổi của tham số hình thức trong ốphương thức sẽ không ảnh hưởng tới tham số thực − Ví dụ: Public int test(int so1) { So1 += 1; } St ti id M i ( t i [] )Static void Main(string[] args) { int a = 5; test (a); 94 test (a); Console.WriteLine(a); // 5 }
  • 95. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Các phương thức (Method) • Truyền tham số trong phương thức :Truyền tham số trong phương thức : − Truyền tham chiếu: mọi thay đổi của tham số hình thức trong phương thức sẽ ảnh hưởng trực tiếp tới tham số thực. Để khai báo th ố th d t ề th hiế ử d từ khó f t ớtham số theo dạng truyền tham chiếu, sử dụng từ khóa ref trước khai báo tham số − Ví dụ: P bli i t t t( f i t 1)Public int test( ref int so1) { So1 += 1; }} Static void Main(string[] args) { int a = 5; test (a); 95 test (a); Console.WriteLine(ref a); // 6 }
  • 96. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng các thành phần trong class • Biến thành viên (Field) • Thuộc tính (Property) • Các phương thức (Method) • Nạp chồng toán tử (Operator Overloading) • Delegate trong C#• Delegate trong C# • Sự kiện (Event) 96
  • 97. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Nạp chồng toán tử (Operator Overloading) • Ý nghĩa :• Ý nghĩa : − Cho phép định nghĩa lại các toán tử cơ bản cho phép thực hiện các phép tính toán trên nhiều kiểu dữ liệuthực hiện các phép tính toán trên nhiều kiểu dữ liệu khác nhau. − Đối với các toán tử so sánh: ==, !=, >=, <, <=, > thì khi ồđịnh nghĩa lại phải nạp chồng theo từng cặp. Ví dụ nạp chồng toán tử == thì cũng phải nạp chồng luôn toán tử so sánh !=. 97
  • 98. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Nạp chồng toán tử (Operator Overloading) • Cú pháp :• Cú pháp : public static <kiểu dữ liệu> operator <toán tử>(tham số 1, tham số 2)tham số 2) { //tập hợp lệnh xử lý//tập hợp lệnh xử lý return <kết quả trả về> }} 98
  • 99. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Nạp chồng toán tử (Operator Overloading) • Ví dụ: trong lớp phan so định nghĩa lại toán• Ví dụ: trong lớp phan_so, định nghĩa lại toán tử + để thực hiện cộng 2 phân số: public static phan so operator +(phan so ps1 phan so ps2)public static phan_so operator +(phan_so ps1, phan_so ps2) { phan_so kq = new phan_so(0,1); kq.tu = ps1.tu * ps2.mau + ps1.mau * ps2.tu; kq.mau = ps2.mau * ps1.mau; return kq; } 99
  • 100. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng các thành phần trong class • Biến thành viên (Field) • Thuộc tính (Property) • Các phương thức (Method) • Nạp chồng toán tử (Operator Overloading) • Delegate trong C#• Delegate trong C# • Sự kiện (Event) 100
  • 101. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Delegate trong C# • Khái niệm:• Khái niệm: − delegate là một class có thể giữ một tham chiếu tới một phương thứcphương thức. − lớp delegate có một dấu hiệu như chữ ký (signature), và nó chỉ giữ các tham chiếu tới các phương thức mà chữ ký của nó phù hợp. Theo cách như vậy một delegate tương đương với một con trỏ hàm hay một callback an toàn kiểu (type-safe) − Khai báo một delegate là khả năng định nghĩa một delegate class. Sự khai báo cung cấp chữ ký của delegate và bộ vận hành ngôn ngữ chung (common 101 delegate, và bộ vận hành ngôn ngữ chung (common language runtime) giúp cung cấp sự thực thi.
  • 102. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Delegate trong C# • Khai báo delegate:• Khai báo delegate: − Cú pháp: bli d l t <Kiể > Tê d l t (Th ố)public delegate <Kiểu> Tên_delegate(Tham_số); − Ý nghĩa: • Kiểu: delegate sẽ trả về một kiểu dữ liệu (int string ) hoặc• Kiểu: delegate sẽ trả về một kiểu dữ liệu (int, string,…) hoặc không trả dữ liệu về (void). public delegate void da_ghi(bool ghi); 102
  • 103. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Xây dựng các thành phần trong class • Biến thành viên (Field) • Thuộc tính (Property) • Các phương thức (Method) • Nạp chồng toán tử (Operator Overloading) • Delegate trong C#• Delegate trong C# • Sự kiện (Event) 103
  • 104. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sự kiện (Event) • Dùng để gởi thông báo của đối tượng ra bên ngoài• Dùng để gởi thông báo của đối tượng ra bên ngoài • Cú pháp: public event [Kiểu delegate] Tên sự kiệnpublic event [Kiểu delegate] Tên_sự_kiện − Ý nghĩa: • [Kiểu delegate]: có thể sử dụng delegate của hệ thống (EventHandle). E tH dl th ộ ề S t dù để t hữ kiệEventHandle thuộc về namespace System, dùng để tạo những sự kiện không cần truyền dữ liệu cho đối tượng sử dụng. • Ví dụ: public class HOC_SINH { public event System EventHandle Thay doi; 104 public event System.EventHandle Thay_doi; }
  • 105. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sự kiện (Event) • Cú pháp:• Cú pháp: − Ngoài ra có thể sử dụng delegate riêng do người dùng khai báokhai báo − Ví dụ: public delegate void da ghi(bool ghi);public delegate void da_ghi(bool ghi); public class HOC_SINH {{ public event da_ghi Da_ghi_du_lieu; } 105 }
  • 106. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sự kiện (Event) • Gọi phát sinh sự kiện: − Cú pháp:Cú pháp: <Tên_sự_kiện>(giá trị của tham số); 106
  • 107. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ // l HOC SINH// class HOC_SINH public event System.EventHandle Thay_doi; public string Ho hoc sinhpublic string Ho_hoc_sinh { get{ return mHo_hoc_sinh; } set { mHo_hoc_sinh = value; if(Thay_doi!=null) Thay_doi(this, new System.EventArgs()); // phát sinh lời gọi để thực hiện sự kiện } 107 } }
  • 108. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sự kiện (Event) • Sử dụng sự kiện trong những xứ lý của class• Sử dụng sự kiện trong những xứ lý của class khác: − Ví dụ: lớp MH HOC SINH có đối tượng kiểu− Ví dụ: lớp MH_HOC_SINH có đối tượng kiểu HOC_SINH như sau: public class MH_HOC_SINH { HOC_SINH hs = new HOC_SINH(); } 108
  • 109. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sự kiện (Event) • Sử dụng sự kiện trong những xứ lý của class• Sử dụng sự kiện trong những xứ lý của class khác: − Sử dụng sự kiện Thay doi của HOC SINH:− Sử dụng sự kiện Thay_doi của HOC_SINH: • Tạo một hàm xử lý cho sự kiện với danh sách tham số phải hoàn toàn giống với delegate của sự kiện. • Ví dụ: tạo hàm xử lý sự kiện thay đổi của class HOC_SINH: public class MH_HOC_SINH {{ private void Xu_ly_thay_doi(object sender, System.EventArgs e) { …} } 109 }
  • 110. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Sự kiện (Event) • Sử dụng sự kiện trong những xử lý của class• Sử dụng sự kiện trong những xử lý của class khác: − Sử dụng sự kiện Thay doi của HOC SINH:ụ g ự ệ y_ _ • Gán hàm xử lý sự kiện vừa tạo vào sự kiện của đối tượng thể hiện. • Ví dụ: liên kết hàm xử lý với sự kiện của đối tượng:Ví dụ: liên kết hàm xử lý với sự kiện của đối tượng: public class MH_HOC_SINH { … public MH HOC SINH()public MH_HOC_SINH() { … this.hs.Thay_doi +=new System.EventHandler(this.Xu_ly_thay_doi); } 110 } … }
  • 111. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Tạo lớp Phân số (PHAN SO)• Tạo lớp Phân số (PHAN_SO) − Một phân số bao gồm các thông tin • Tử số• Tử số • Mẫu số − Cho phép thực hiện các phép tính trên phân sốCho phép thực hiện các phép tính trên phân số • Cộng, Trừ, Nhân, Chia • Tối giản phân số • … 111
  • 112. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Tạo lớp Phân số (PHAN_SO) 112
  • 113. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO PHAN_SO Tu_so Mau soMau_so PHAN_SO(pTu_so, pMau_so) Toi_gian_phan_so() Kiem_tra_mau_so(pMau_so) Boolean Cong(pPhan_so) PHAN_SO Tru(pPhan_so) PHAN_SO Nhan(pPhan_so) PHAN_SO Chia(pPhan so) PHAN SO 113 Chia(pPhan_so) PHAN_SO
  • 114. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Danh sách biến thành viên• Danh sách biến thành viên public class PHAN_SO { //…… #region "Danh sách các biến thành viên" private int mTu_so; private int mMau_so; #endregion //…… 114 }
  • 115. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Danh sách các thuộc tínhDanh sách các thuộc tính public int Tu_so public int Mau_so { get { return mTu_so; } set { mTu so = value; } { get { return mMau_so; } setset { mTu_so = value; } } set { if (Kiem_tra_mau_so(value)) mMau_so = value; } 115 }
  • 116. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Danh sách hàm khởi tạoDanh sách hàm khởi tạo public PHAN_SO() { Tu so = 1;Tu_so = 1; Mau_so = 1; } public PHAN SO(int pTu so int pMau so)public PHAN_SO(int pTu_so, int pMau_so) { if(Kiem_tra_mau_so(pMau_so)) {{ Tu_so = pTu_so; Mau_so = pMau_so; } 116 } }
  • 117. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Danh sách phương thức xử lý private Boolean Kiem_tra_mau_so(int pMau_so) { return pMau so != 0;p _ ; } 117
  • 118. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Danh sách phương thức xử lý public void Toi_gian_phan_so() { if (Mau_so < 0) {{ Mau_so = Math.Abs(Mau_so); Tu_so = -1 * Tu_so; } int uoc_so = USCLN(Tu_so, Mau_so); Tu so /= uoc so; 118 Tu_so /= uoc_so; Mau_so /= uoc_so; }
  • 119. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Danh sách phương thức xử lý• Danh sách phương thức xử lý public PHAN_SO Cong(int pTu_so,int pMau_so) {{ PHAN_SO psTong = new PHAN_SO(pTu_so, pMau_so); psTong.Tu so = Tu so * psTong.Mau so + psTong.Tu so *psTong.Tu_so Tu_so psTong.Mau_so psTong.Tu_so Mau_so; psTong.Mau_so = psTong.Mau_so * Mau_so; T T i i h ()psTong.Toi_gian_phan_so(); return psTong; } 119 }
  • 120. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Ví dụ: Lớp PHAN_SO • Danh sách phương thức xử lý• Danh sách phương thức xử lý public PHAN_SO Cong(PHAN_SO pPhan_so) { return Cong(pPhan_so.Tu_so, pPhan_so.Mau_so); } 120
  • 121. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài tập • Yêu cầu• Yêu cầu −Bài 1: Phân số • Tạo lớp PHAN SO• Tạo lớp PHAN_SO • Thực hiện các phép tính trên phân số (+, -, *, /) 121
  • 122. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 4: Classes, objects và namespaces • Tổng quan về lập trình hướng đối tượng • Xây dựng class trong C# • NamespacesNamespaces 122
  • 123. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Namespaces • Namespaces là các thành tố của chương trình• Namespaces là các thành tố của chương trình C# được thiết kế nhằm giúp tổ chức các chương trình một cách ngắn gọn, dễ dàng táig ộ g gọ , g sử dụng một số mã lệnh • Namespaces không tương ứng với tên tập tinp g g g ập hay thư mục. Ngay cho dù việc đặt tên của thư mục hay tập tin tương ứng với namespaces 123
  • 124. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Namespaces • Ví dụ khai báo namespace:• Ví dụ khai báo namespace: using System; namespace tên namspacenamespace tên_namspace { // class bắt đầu chương trình class tên_class {{ // Phương thức Main bắt đầu sự thực thi chương trình. public static void Main() {{ // Các câu lệnh } } 124 } }
  • 125. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Namespaces • Cách tốt nhất để tổ chức các namespaces là• Cách tốt nhất để tổ chức các namespaces là theo hướng hệ thống phân cấp. Hệ thống phân cấp này có thể được trình bày bởi việc lồng cácp y ợ y ệ g namespaces với nhau. 125
  • 126. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Namespaces • Cách khác để viết namespace lồng nhau:• Cách khác để viết namespace lồng nhau: 126
  • 127. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Namespaces • Truy xuất các thành phần trong namespace:• Truy xuất các thành phần trong namespace: − Khi truy xuất đến các thành phần trong namespace phải truy xuất thông qua tên namespacetruy xuất thông qua tên namespace − Cú pháp: <Tên namespace>.<Tên thành phần><Tên_namespace>.<Tên thành phần> 127
  • 128. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC 128