1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu tham khảo về lập trình hướng đối tượng với .NET & C#.Chương 3 Lớp và đối tượng ppt

42 425 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 153,39 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nội dung Định nghĩa lớp Khai báo đối tượng và sử dụng Phương thức thiết lập, sao chép Phương thức hủy Nạp chồng phương thức Thành phần tĩnh Nạp chồng toán tử... • Biến đối tượng kh

Trang 1

CHƯƠNG 3

Trang 2

Mục tiêu

 Khai báo được lớp, đối tượng và sử dụng.

 Biết cách vận dụng các từ khoá truy cập.

 Xây dựng các phương thiết lập, sao chép.

 Hàm hủy bỏ,cơ chế thu gom rác

 Sử dụng các thành viên tĩnh.

 Nạp chồng phương thức.

Trang 3

Nội dung

 Định nghĩa lớp

 Khai báo đối tượng và sử dụng

 Phương thức thiết lập, sao chép

 Phương thức hủy

 Nạp chồng phương thức

 Thành phần tĩnh

 Nạp chồng toán tử

Trang 4

3.1 Định nghĩa lớp

[phạm vi truy nhập:]: Là khả năng truy nhập thành

phần dữ liệu (public, private, internal, protected, internal protected)

Trang 5

Có thể được truy xuất bởi các phương thức của lớp đó, lớp dẫn xuất từ lớp đó và các lớp trong

Trang 6

Ví dụ định nghĩa lớp

Trang 7

// khai báo thuộc tính class2// khai báo các phương thức class2}

}

Trang 8

3.2 Khai báo đối tượng và sử dụng

 Đối tượng là biến kiểu tham chiếu, không phải tham

trị

• Biến đối tượng không chứa giá trị của đối tượng

• Biến chứa địa chỉ của đối tượng được tạo trong

bộ nhớ Heap

<tên lớp> <tên đối tượng> = new <tên lớp> ([các giá trị khởi tạo nếu có])

 Sử dụng từ khóa “new”

Trang 9

Ví dụ

Trang 10

Truy nhập phương thức

<tên đối tượng> <tên phương thức> ([danh

sách các đối số nếu có])

Trang 11

3.3 Phương thức thiết lập, sao chép

 Khởi tạo một đối tượng -> gọi phương thức thiết lập

(constructor)

• Phương thức thiết lập mặc định: sẽ được CLR cung

cấp nếu người lập trình không định nghĩa

• Phương thức thiết lập do người lập trình định nghĩa

 Phương thức thiết lập có chức năng:

• Tạo một đối tượng của lớp và chuyển nó sang trạng

thái xác định (valid state)

• Phương thức thiết lập thường được dùng để khởi gán

các thuộc tính của đối tượng

Trang 12

‘\0’ (null) char

false bool

0 Numeric (int, long,…)

Giá trị mặc định Kiểu dữ liệu

Trang 13

Xây dựng phương thức thiết lập

 Phương thức thiết lập có tên trùng với tên đối

tượng, không có kiểu dữ liệu trả về và phạm vi truynhập thường là public

 Có thể có nhiều phương thức thiết lập trong cùng

lớp

 Phương thức thiết lập có thể có tham số hoặc

không

public Class_name()public Class_name( argument list )

Trang 14

Ví dụ

Trang 15

Phương thức thiết lập sao chép

 Phương thức thiết lập sao chép khởi gán giá trị cho

đối tượng mới bằng cách sao chép dữ liệu của đốitượng đã tồn tại (cùng kiểu)

 Xây dựng phương thức thiết lập sao chép

• Dùng interface ICloneable của NET

• Tự xây dựng phương thức thiết lập sao chép

(hand-copying copy constructor)

Trang 16

Dùng interface ICloneable của NET

 Class hỗ trợ hàm tạo sao chép phải

implement interface ICloneable

public Object Clone()

{

return MemberwiseClone(); // shallow copy}

Trang 17

Ví dụ

Trang 18

Tạo phương thức thiết lập sao chép (1)

 Tên hàm trùng với tên lớp

<Tên_lớp> <đối tượng2> = new

<Tên_lớp> (đối tượng1);

Trang 19

Ví dụ

Trang 20

Tạo phương thức thiết lập sao chép (2)

 Tên hàm trùng với tên lớp

• Khai báo

public void saochep (<tên lớp> <đối tượng1>)

{this.gt1 = <đối tượng1>.gt1;

this.gt2 = <đối tượng1>).gt2;

}

• Sử dụng

<đối tượng2>.saochep (đối tượng1);

Trang 21

Ví dụ

Trang 22

Từ khóa This (1)

 Từ khóa this trỏ đến thể hiện hiện tại (current

instance) của đối tượng

 Từ khóa this rất hữu ích trong một số trường hợp

• Chỉ rõ thành phần (thuộc tính) của đối tượng,

tránh nhầm lẫn với tên biến, tránh sự nhậpnhằng về tên

public void SomeMethod (int hour)

{

this.hour = hour;

}

Trang 23

Từ khóa This (2)

• Dùng làm tham số truyền vào cho một phương

thức của đối tượng khác, cho phép phương thức

đó có thể tác động đến các thành phần của đốitượng hiện tại

class myClass {

public void Foo(OtherClass otherObject)

{

otherObject.Bar(this);

} }

Trang 24

Từ khóa This (3)

• Sử dụng cùng với indexer (Tìm hiểu thêm)

• Gọi một hàm tạo từ hàm tạo khác của lớp

class myClass {

public myClass(int i) { // } public myClass( ) : this(42) { // } }

Trang 25

}

Trang 26

… base.Finalize();

}

~ Classname()

{

… }

Trang 27

Hủy đối tượng

 C# hỗ trợ cơ chế tự động thu gom rác (garbage

collector) -> người lập trình không phải hủy đốitượng một cách tường minh

 Nếu đối tượng có sử dụng các tài nguyên khác

(files…) -> người lập trình phải tự xây dựng phươngthức hủy (Destructor)

 Bộ thu gom rác tự động gọi hàm hủy, các phương

thức không gọi một cách tường minh.j

Trang 28

Truyền tham số cho phương thức

 Mặc định, tham số truyền cho phương thức là kiểu

tham trị

• Một bản sao của tham số đó được tạo ra

• Bản sao đó sẽ bị hủy khi kết thúc phương thức

• Giá trị của tham số được truyền không thay đổi

sau khi kết thúc phương thức

public int AddValue(int value1, int value2)

{

return value1+value2;

}

Trang 29

Truyền tham chiếu

 C# hỗ trợ truyền tham chiếu sử dụng các từ khóa

• ref: truyền tham chiếu, biến được tham chiếu

phải được khởi gán trước khi truyền

• out: truyền tham chiếu, biến được tham chiếu

không cần khởi gán trước khi truyền

Trang 30

Ví dụ (ref)

Trang 31

Ví dụ (out)

Trang 32

Đóng gói dữ liệu thành các thuộc tính (1)

 Lợi ích của đóng gói dữ liệu:

• Vẫn đảm bảo một giao diện đơn giản cho các đối

tượng khác giao tiếp

• Dễ dàng thay đổi mã mà không ảnh hưởng tới

giao diện với các đối tượng khác

• Tăng tính an toàn dữ liệu, kiểm tra được dữ liệu

khi gán

Trang 33

Đóng gói dữ liệu thành các thuộc tính (2)

 Đóng gói dữ liệu thành thuộc tính thực chất là một

quá trình lấy giá trị của biến thành phần / thiết

lập giá trị cho biến thành phần thông qua phương thức của lớp mà không qua đối tượng

 Trong C# cung cấp khả năng khai báo hàm chung

gọi là thuộc tính cho hàm get và set

Trang 34

Ví dụ

class time {

private int hour ; public int Hour () {

get { return hour ; }

set {

hour = value;

} }

Lấy giá trị của

thuộc tính

Thiết lập giá trị

cho thuộc tính

Trang 35

Ví dụ

class Program {

static void Main(string[] args) {

time t=new time() ;

t.Hour =10; // set t.Xuat();

int a = t.Hour; //set Console.WriteLine(a);

Console.ReadKey();

} }

Thiết lập giá trị

cho thuộc tính

hour của class

time

Trang 36

3.5 Nạp chồng phương thức

 Khi muốn có nhiều phương thức (hàm) cùng tên

hay nhiều hàm với tham số đầu vào khác nhau →

sử dụng kỹ thuật chồng hàm (Overloading)

 Để phân biệt được hai hàm với nhau, phải căn cứ

vào một trong hai yếu tố

• Khác tên

• Khác số tham số hoặc kiểu dữ liệu của tham số

void myMethod(int p1);

void myMethod(int p1, int p2);

void myMethod(int p1, string s1);

Trang 37

Ví dụ

Trang 38

• C# không cho phép truy xuất các thành phần tĩnh

thông qua đối tượng (thể hiện của lớp)

• Các thành phần tĩnh có thể được truy nhập, triệu gọi

trước khi các đối tượng của lớp đó được tạo ra

• Các phương thức tĩnh không thể truy xuất trực tiếp

các thuộc tính, phương thức không tĩnh (nonstatic)

Trang 39

Ví dụ

Trang 40

3.7 Nạp chồng toán tử (1)

 Mục đích của nạp chồng toán tử (OverloadingOperator)

• Cho phép các lớp do người dùng định nghĩa có thể có

các chức năng như các kiểu do ngôn ngữ định nghĩa.

• Mục đích của toán tử là để viết mã chương trình gọn

gàng, dễ hiểu hơn, thay vì phải gọi phương thức.

• VD: 1 lớp phân số, có thể có đầy đủ các phép toán

 Cộng

 Trừ

 Nhân

 Chia…

Trang 41

Nạp chồng toán tử (2)

• KDL: kiểu_dữ_liệu

• T: Phép_toán

Ví dụ: nạp chồng toán tử (+) cho class PhanSo

public static KDL operator T (KDL lhs, KDL rhs)

public static PhanSo operator +(PhanSo lhs, PhanSo rhs)

Trang 42

Bài tập chương 3

Ngày đăng: 10/08/2014, 13:21

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w