You are on page 1of 8

Class & Object (tt)

Thit k v ci t lp & i tng

1 1

OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

8. Tham chiu this

Khi mt i tng ang thc thi mt phng thc (khng phi l phng thc tnh), tham chiu this t ng tr n i tng ny. ny. C 3 trng hp s dng tham chiu this: this: Trnh xung t tn khi tham s ca phng thc trng tn vi tn bin d liu ca Object Dng truyn i tng hin ti lm tham s cho mt phng thc khc (VD gi qui) Dng vi mc ch ch mc (Index)

OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

Vd: this

Xem thm vd trang 25-26 25-

public class Point { private int x,y; x,y; public Point(int ox, int oy) Point(int { this. this.x = ox; ox; // tng ng x = ox; ox; this. this.y = oy; oy; // tng ng y = oy; oy; } } // Gi s trong hm Main ta khai bo nh sau: sau: Point A = new Point(3,4); Point(3 Note: Note:

Trong trng hp ny tham s truyn cho this chnh i tng A. Do : this.x chnh l A.x this.x Tm li: Tham s truyn cho i this chnh l i tng i km vi phng thc trong li gi phng thc.
3 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

9. ng gi d liu vi thuc tnh Thuc tnh l khi nim cho php truy cp trng thi ca lp thay v thng qua truy cp trc tip cc bin thnh vin, n s c thay th bng vic truy cp thng qua phng thc ca lp. lp. Ni cch khc Thuc tnh l cc phng thc ly gi tr (get) v gn gi tr (set): get) set) Ch c (read-only): ch c phng thc get read-only): Ch ghi (write-only): ch c phng thc set write-only): Va c va ghi (read/write): c c hai phng read/write): thc get v set
4 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

Khai bo Phng thc cho thuc tnh public <Return_Type> <Property_name> { // phng thc ly gi tr ca thuc tnh get { // tr v mt gi tr cng kiu vi bin thnh vin return BiuThcTrV; } // phng thc gn gi tr cho thuc tnh set { BinThnhVin = value ; } }
5 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

VD minh ha
Public class Time { int _Hour, _Minute, _Second ; public int { set { get { } public int { set { get { } public int { set { get { } }
6 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

Hour _Hour = value ; } return _Hour; } Minute _Minute = value ; } return _Minute ; } Second _Second = value ; } return _Second ; }

VD minh ha

Xem thm vd trang 28-29 28-

Public class CSinhVien { string _MaSV, _Ten; int _NamSinh ; string _TenNguoiYeu; // No Access-Modifier public string MaSV { // m sinh vin read-only get { return _MaSV; } } public string Ten { set { _Ten = value ; } get { return _Ten ; } } public int NamSinh { set { _NamSinh = value ; } get { return _NamSinh ; } }
7

OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

10. Ton t (operator) Trong C# ton t l mt phng thc tnh (static method) dng qu ti (overload) mt php ton no trn cc i tng. tng. Mc ch ca ton t l vit m chng trnh gn gng, d hiu hn, thay v phi gi phng thc . Vd: Vd: gi s ta c lp Phn S c p. thc Cong PhanSo ps1 = new PhanSo(2,4) ; ps1 PhanSo(2 PhanSo ps2 = new PhanSo(1,3) ; ps2 PhanSo(1 thay v vit: ps3 = ps1.Cong(ps2) vit: ps3 ps1 Cong(ps2 ta vit: PhanSo ps3 = ps1 + ps2; nu ta dng vit: ps3 ps1 ps2 operator overloaded
8 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

10. Ton t (operator) tt Ta c th qu ti cc ton t sau: Ton hc: + , - , * , / , % Cng tr mt ngi: ++ , -- , Quan h so snh: == , != , > , < , >= , <= p kiu: () C php khai bo nguyn mu ca mt ton t T: public static KiuTrV operator T (CcThamS) { //cc cu lnh trong thn ton t }
9 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

10. Ch qu ti ton t (operator overloaded) Tham s ca ton t phi l tham tr (khng dng cc t kha ref, out). Khng c qu ti ton t = (gn), && , || (and, or logic), ?: (iu kin), checked, unchecked, checked, unchecked, new, typeof, as, is. new, typeof, as, is. [ ] khng c xem l mt ton t Khi qu ti cc ton t dng: +, -, *, / , % th cc ton t +=, -=, *=, /= , %= c qu ti t ng +=, *=, Khi qu ti ton t th nn qu ti theo cp i ngu. Chng hn, khi qu ti ton t == th qu ti thm ton t !=
10 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

10. Ch qu ti ton t (operator overloaded) Khi qu ti ton t ==, != th nn pht trin thm cc phng thc Equals(), GetHashCode() Equals(), m bo lut hai i tng bng nhau theo ton t == hoc phng thc Equals s c cng m bm Khi nh ngha ton t p kiu ta phi ch ra y l ton t p kiu ngm nh (implicit) hay tng minh (explicit) C php nh ngha ton t p kiu:
public static [ implicit | explicit ] operator KiuTrVT (Type V)

Trong Type V l bin cn p sang kiu KiuTrVT


11 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

VD minh ha
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 thm vd trang 31-33 3112 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

11. Ch mc (Index)

Vic nh ngha ch mc cho php to cc i tng ca lp hot ng ging nh mt mng o Tc l cc i tng c th s dng ton t [ ] truy cp n mt thnh phn d liu no . . Vic nh ngha ch mc tng t nh vic nh ngha mt thuc tnh. tnh.

13

OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

11. C php to Ch mc (Index) public KiuTrV this [DanhSchThamS] { //Hm c get { // thn hm c } // Hm ghi set { // thn hm ghi } }
vd trang 34-35 3414 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

11. Ghi ch v ch mc (Index) Mt ch mc phi c t nht mt tham s, v tham s c th c kiu bt k. k. Ch mc c th ch c phng thc get. get. Mc d ch mc l mt c im th v ca C# nhng cn phi s dng ng mc ch (s dng i tng c th hat ng nh mng, mng nhiu chiu). chiu). Mt lp c th c nhiu ch mc nhng chng phi c cc du hiu phn bit vi nhau (tng t nh qu ti phng thc). thc).
15 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

Q&A

Bi tp: 1. c li bi ging 2. Lm cc bi VD & bi tp trong GT 3. c bi: K tha 4. Bui ti tho lun & kim tra bi c
16 16 OOP in C# - GV: Phm nh Sc dinhsac@gmail.com

You might also like