bài 4 - classes, objects và namespaces - nền tảng lập trình ứng dụng với c#

128
TRƯỜNG ĐẠI HC KHOA HC TNHIÊN TP.HCM TRUNG TÂM TIN HC 1

Upload: hoc-lap-trinh-web

Post on 04-Jul-2015

4.222 views

Category:

Documents


3 download

DESCRIPTION

Tổng quan vềlập trình hướng đối tượng Xây dựng class trong C# Namespaces

TRANSCRIPT

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

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

1

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

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 -

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

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

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

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ệmLậ 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

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

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

− …

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

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

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

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

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

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

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

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)

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

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

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

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

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

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Lớp: XE OTOp _

12

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

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

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

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

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

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

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

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

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

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

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

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

IDHieu xe

XE_OTO

Thuộc tính

• Ví dụ Lớp XE_OTO

_Hang_san_xuatMau_son

Thuộc tính

Nam_san_xuatNo_mayVao soVao_soThangTat may

Phương thức

18

_ ySap_het_xangSự kiện

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

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

NHAN_VIENKhái niệm

Ma_nhan_vienHo_nhan_vienT h iThuộc tính

• Ví dụ Lớp NHAN_VIEN

Ten_nhan_vienNgay_sinhNgay vao lam

Thuộc tính

Ngay_vao_lamHe_so_luongSo_conTien_luongTro_capTi th

Phương thức

19

Tien_thuongTang_luongSự kiện

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

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

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

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

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

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

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

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

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

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ính p g g, ộ g gnă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

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

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 -

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

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

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

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

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

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

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

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

}

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

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áo p ạ g gclass:• Private• Protected• Public• Static

30

Static

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

Page 39: Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với 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)• 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

Page 40: Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với 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)• 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}

Page 41: Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với 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

Page 42: Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với 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 publicTừ khóa public

42

Page 43: Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với 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{ // ……

// Khai báo biến thành viênprivate 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

}

Page 44: Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với 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)• 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

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

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

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

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

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

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}

Page 48: Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với 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_vienTen nhan vien

// Khai báo các thuộc tính

public double He_so_luong

NHAN_VIEN

Ten_nhan_vienNgay_sinhHe_so_luong

{get {return mHe_so_luong;}set {mHe so luong = value;} _ _ g

Ngay_vao_lamSo_con

set {mHe_so_luong value;}}// Tiếp tục cho những khai báo khác

48

//……

}

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

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

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

67

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

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

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

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}

}

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

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(); }

}

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

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

}}

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

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ọi g ệ 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ố.

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

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

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

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.

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

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

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

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 classisDisposed = true;

}

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

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.

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

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ức p g p ệ ụ g p gGC.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.

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

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)

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

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

//…

}

Page 81: Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với 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{ // ……

// Khai báo các phương thứcpublic double Tro_cap() Ho nhan vien

NHAN_VIEN

{return (So_con * 100000);

}

Ho_nhan_vienTen_nhan_vienNgay_sinh

public double Tien_thuong(){

return (Tham_nien * 500000);

He_so_luongNgay_vao_lam

}// ……

// Tiếp tục cho những khai báo khác

So_conTro_capTien thuong

81

// Tiếp tục cho những khai báo khác// ……

}

Tien_thuong

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

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

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

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

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

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

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

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

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

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

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

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ệc g 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;}

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

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

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

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ượng p 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

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

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

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

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

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

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

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

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

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

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

}

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

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

}

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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;

}

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

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

}

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

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

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

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

}}

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

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

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

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

}

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

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

}…}

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

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

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

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

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

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Ví dụ: Lớp PHAN_SOPHAN_SO

Tu_soMau soMau_soPHAN_SO(pTu_so, pMau_so)Toi_gian_phan_so()Kiem_tra_mau_so(pMau_so) BooleanCong(pPhan_so) PHAN_SOTru(pPhan_so) PHAN_SONhan(pPhan_so) PHAN_SOChia(pPhan so) PHAN SO

113

Chia(pPhan_so) PHAN_SO

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

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

}

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

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

}

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

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

}}

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

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

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

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;

}

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

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

}

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

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

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

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

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

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

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

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ái g ộ g gọ , gsử dụng một số mã lệnh

• Namespaces không tương ứng với tên tập tin p g g g ậphay 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

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

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

}}

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

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ác p y ợ y ệ gnamespaces với nhau.

125

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

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

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

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

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

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

128