1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Class & Object (tt)Thiết kế và cài đặt lớp & đối tượng1 1OOP in C# - GV: docx

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 0,97 MB

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

Nội dung

Tham chiếu this Khi Khi một một đối đối tượng tượng đang đang thực thực thi thi một một phương phương thức không không phải phải là là phương phương thức thức tĩnh, tĩnh, tham chiếuthis

Trang 1

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 1

Class & Object (tt)

1

Thiết kế và cài đặt lớp & đối tượng

Thiết kế và cài đặt lớp & đối tượng

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 2

8. Tham chiếu this

Khi Khi một một đối đối tượng tượng đang đang thực thực thi thi một một phương phương

thức (không (không phải phải là là phương phương thức thức tĩnh), tĩnh), tham

chiếuthis tự tự động động trỏ trỏ đến đến đối đối tượng tượng này này

Có Có 3 3 trường trường hợp hợp sử sử dụng dụng tham tham chiếu chiếu this::

Tránh Tránh xung xung đột đột tên tên khi khi tham tham số số của của phương phương

thức

thức trùng trùng tên tên với với tên tên biến biến dữ dữ liệu liệu của của Object Object

Dùng Dùng truyền truyền đối đối tượng tượng hiện hiện tại tại làm làm tham tham số số

cho

cho một một phương phương thức thức khác khác (VD (VD gọi gọi đệ đệ qui) qui)

Dùng Dùng với với mục mục đích đích chỉ chỉ mục mục (Index) (Index)

Trang 2

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 3

Vd: this Xem thêm vd trang 25 Xem thêm vd trang 25 26 26

public

public class class Point

{{ private private int int x,y x,y;;

public Point(int ox, int oy)

{{

this

this x x = = ox ox;; // // tương tương đương đương x x = = ox ox;;

this

this y y = = oy oy;; // // tương tương đương đương y y = = oy oy;;

}}

}}

//

// Giả Giả sử sử trong trong hàm hàm Main Main ta ta khai khai báo báo như như sau sau::

Point Point A A = = new Point( Point(3 3,,4 4));;

Note

Note::

Trong trường hợp này tham số truyền cho this

chính đối tượng A Do đó: this.x chính là A.x

Tóm lại:Tham số truyền cho đối this chính là

đối tượng đi kèm với phương thức trong lời gọi

phương thức.

9 Đóng gói dữ liệu với thuộc tính

Thuộc Thuộc tính tính là là khái khái niệm niệm cho cho phép phép truy truy cập cập trạng trạng

thái

thái của của lớp lớp thay thay vì vì thông thông qua qua truy truy cập cập trực trực tiếp tiếp

các

các biến biến thành thành viên, viên, nó nó sẽ sẽ đựơc đựơc thay thay thế thế bằng bằng

việc

việc truy truy cập cập thông thông qua qua phương phương thức thức của của lớp lớp

Nói Nói cách cách khác khác Thuộc Thuộc tính tính là là các các phương phương thức thức lấy lấy

giá

giá trị trị ((get và và gán gán giá giá trị trị ((set ::

Chỉ đọc((read read only only):): chỉ có phương thức get

Chỉ ghi ((write write only only):): chỉ có phương thức set

Vừa đọc vừa ghi ((read/write read/write):): có cả hai phương

thứcget set

Trang 3

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 5

Khai báo Phương thức cho thuộc tính

public

public <Return_Type> <Return_Type> <Property_name>

{{

//

// phương thức lấy giá trị của thuộc tínhphương thức lấy giá trị của thuộc tính

get

{{ // trả về một giá trị cùng kiểu với biến thành viên

return BiểuThứcTrảVề;

}}

//

// phương thức gán giá trị cho thuộc tínhphương thức gán giá trị cho thuộc tính

set

{{

BiếnThànhViên = value ;;

}}

}}

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 6

VD minh họa

Public class Time

{ int _Hour, _Minute, _Second ;

public int Hour

{ set { _Hour = value ; }

get { return _Hour; } }

public int Minute

{ set { _Minute = value ; }

get { return _Minute ; } }

public int Second

{ set { _Second = value ; }

get { return _Second ; } }

}

Trang 4

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 7

VD minh họa Xem thêm vd trang 28 Xem thêm vd trang 28 29 29

Public class CSinhVien

{ string _MaSV, _Ten;

int _NamSinh ;

string _TenNguoiYeu; // No Access-Modifier

public string MaSV

{ // mã sinh viên read-only

get { return _MaSV; } }

public string Ten

{ set { _Ten = value ; }

get { return _Ten ; } }

public int NamSinh

{ set { _NamSinh = value ; }

get { return _NamSinh ; } }

}

10 Toán tử (operator)

Trong Trong C# C# toán toán tử tử làlà một một phương phương thức thức tĩnh tĩnh (static

method) dùng dùng để để quá quá tải tải (overload) một một phép phép

toán

toán nào nào đó đó trên trên các các đối đối tượng tượng

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

gọn

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

thức

thức

Vd Vd:: giả giả sử sử ta ta có có lớp lớp Phân Phân Số Số có có p p thức thức Cong Cong

PhanSo

PhanSo ps ps1 1 = = new PhanSo( PhanSo(2 2,,4 4)) ;;

PhanSo

PhanSo ps ps2 2 = = new PhanSo( PhanSo(1 1,,3 3)) ;;

thay

thay vì vì viết viết:: ps ps3 3 = = ps ps1 1 Cong(ps Cong(ps2 2))

ta

ta viết viết:: PhanSo PhanSo ps ps3 3 = = ps ps1 1 + + ps ps2 2;; nếu nếu ta ta dùng dùng

operator

operator overloaded overloaded

Trang 5

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 9

10 Toán tử (operator) tt

Ta có thể quá tải các toán tử sau:

Toán học: + , Toán học: + , , * , / , % , * , / , %

Cộng trừ một ngôi: ++ , Cộng trừ một ngôi: ++ , ,,

Quan hệ so sánh: == , != , > , < , >= , <=

Ép kiểu: ()

Cú pháp khai báo nguyên mẫu của một toán tử T:

public static KiểuTrảVề operator T (CácThamSố)

{{

//các câu lệnh trong thân toán tử

}}

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 10

10 Chú ý quá tải toán tử (operator overloaded)

Tham số của toán tử phải là tham trị (không

dùng các từ khóa ref, out).

Không được quá tải toán tử = (gán), && ,, || (and,

or logic), ?: (điều kiện), checked,, unchecked,,

new,, typeof,, as,, is

[ ] không được xem là một toán tử

Khi quá tải các toán tử dạng: +,, ,, **,, // ,, % thì các

toán tử +=,, = =,, *=,, /= ,, %= được quá tải tự động

Khi quá tải toán tử thì nên quá tải theo cặp đối

ngẫu Chẳng hạn, khi quá tải toán tử == thì quá

tải thêm toán tử != …

Trang 6

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 11

10 Chú ý quá tải toán tử (operator overloaded)

Khi Khi quá quá tải tải toán toán tử tử ==, ==, != != thì thì nên nên phát phát triển triển thêm thêm

các

các phương phương thức thức Equals(),, GetHashCode() để

đảm

đảm bảo bảo luậtluật “hai “hai đối đối tượng tượng bằng bằng nhau nhau theo theo toán toán

tử

tử == == hoặc hoặc phương phương thức thức Equals sẽ sẽ có có cùng cùng mã mã

băm”

Khi Khi định định nghĩa nghĩa toán toán tử tử ép ép kiểu kiểu ta ta phải phải chỉ chỉ ra ra đây đây

là toán toán tử tử ép ép kiểu kiểu ngầm ngầm định định (implicit) hay hay tường tường

minh (explicit)

Cú pháp định nghĩa toán tử ép kiểu:

public

public static static [[ implicit || explicit ]] operator KiểuTrảVềT (Type V)

Trong đó Type Vlà biến cần ép sang kiểulà biến cần ép sang kiểu KiểuTrảVềT KiểuTrảVềT

VD minh họa

Public class PhanSo

{

int Tu, Mau;

public PhanSo (int TuSo , int MauSo )

{

Tu = TuSo ;

Mau = MauSo ;

}

public static PhanSo operator + ( PhanSo ps1, PhanSo ps2)

{

int MauMoi = ps1.Mau * ps2.Mau ;

int TuMoi = ps2.Mau * ps1.Tu + ps1.Mau * ps2.Tu;

return new PhanSo(TuMoi, MauMoi);

}

}

Xem thêm vd trang 31

Xem thêm vd trang 31 33 33

Trang 7

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 13

11 Chỉ mục (Index)

Việc Việc định định nghĩa nghĩa chỉ chỉ mục mục cho cho phép phép tạo tạo

các

các đối đối tượng tượng của của lớp lớp hoạt hoạt động động giống giống

như

như một một mảng mảng ảo ảo

Tức Tức là là các các đối đối tượng tượng có có thể thể sử sử dụng dụng

toán

toán tử tử [[ ]] để để truy truy cập cập đến đến một một thành thành

phần

phần dữ dữ liệu liệu nào nào đó đó

Việc Việc định định nghĩa nghĩa chỉ chỉ mục mục tương tương tự tự như như

việc

việc định định nghĩa nghĩa một một thuộc thuộc tính tính

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 14

11 Cú pháp tạo Chỉ mục (Index)

public KiểuTrảVề this [DanhSáchThamSố]

{{ //Hàm đọc

get

{{

// thân hàm đọc

}}

// Hàm ghi

set

{{

// thân hàm ghi

}}

}}

vd trang 34

vd trang 34 35 35

Trang 8

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 15

11 Ghi chú về chỉ mục (Index)

MộtMột chỉ chỉ mục mục phảiphải có có ít ít nhất nhất một một tham tham số, số, và và

tham

tham số số có có thể thể có có kiểu kiểu bất bất kỳ kỳ

Chỉ Chỉ mục mục cócó thể thể chỉ chỉ có có phương phương thứcthức get get

Mặc Mặc dùdù chỉ chỉ mục mục làlà một một đặc đặc điểm điểm thú thú vị vị của của

C#

C# nhưng nhưng cần cần phải phải sử sử dụng dụng đúng đúng mục mục đích đích

(sử

(sử dụng dụng để để đối đối tượng tượng có có thể thể họat họat động động như như

mảng,

mảng, mảng mảng nhiều nhiều chiều) chiều)

Một Một lớp lớp có có thể thể có có nhiềunhiều chỉ chỉ mục mục nhưngnhưng

chúng

chúng phải phải có có các các dấu dấu hiệu hiệu phân phân biệt biệt với với

nhau

nhau (tương (tương tự tự như như quá quá tải tải phương phương thức) thức)

Q&A

Bài tập:

1 Đọc lại bài giảng

2 Làm các bài VD & bài tập trong GT

3 Đọc bài: Kế thừa

4 Buổi tới thảo luận & kiểm tra bài cũ

Ngày đăng: 29/06/2014, 02:20

TỪ KHÓA LIÊN QUAN

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

w