02 class object 2

Upload: sharkmt2

Post on 15-Oct-2015

14 views

Category:

Documents


0 download

TRANSCRIPT

  • 1OOP in C# - GV: Phm nh Sc [email protected]

    Class & Object (tt)Class & Object (tt)

    1

    Thit k v ci tThit k v ci tlp & i tnglp & i tng

    Thit k v ci tThit k v ci tlp & i tnglp & i tng

    OOP in C# - GV: Phm nh Sc [email protected]

    8.8. Tham chiu thisTham chiu this

    KhiKhi mtmt ii tngtng angang thcthc thithi mtmt phngphngthcthc (khng(khng phiphi ll phngphng thcthc tnh),tnh), thamthamchiuchiu thisthis tt ngng trtr nn ii tngtng nyny..

    CC 33 trngtrng hphp ss dngdng thamtham chiuchiu thisthis::TrnhTrnh xungxung tt tntn khikhi thamtham ss caca phngphng

    thcthc trngtrng tntn vivi tntn binbin dd liuliu caca ObjectObjectDngDng truyntruyn ii tngtng hinhin titi lmlm thamtham ss

    chocho mtmt phngphng thcthc khckhc (VD(VD gigi qui)qui)DngDng vivi mcmc chch chch mcmc (Index)(Index)

  • 2OOP in C# - GV: Phm nh Sc [email protected]

    Vd: thisVd: this Xem thm vd trang 25Xem thm vd trang 25--2626publicpublic classclass PointPoint{{ privateprivate intint x,yx,y;;

    publicpublic Point(Point(intint ox,ox, intint oy)oy){{

    thisthis..xx == oxox;; //// tngtng ngng xx == oxox;;thisthis..yy == oyoy;; //// tngtng ngng yy == oyoy;;

    }}}}//// GiGi ss trongtrong hmhm MainMain tata khaikhai bobo nhnh sausau::

    PointPoint AA == newnew Point(Point(33,,44));;NoteNote::Trong trng hp ny tham s truyn choTrong trng hp ny tham s truyn cho thisthis

    chnh i tng A. Do :chnh i tng A. Do : thisthis.x chnh l A.x.x chnh l A.xTm li:Tm li: Tham s truyn cho iTham s truyn cho i thisthis chnh lchnh l

    i tng i km vi phng thc trong li gii tng i km vi phng thc trong li giphng thc.phng thc.

    OOP in C# - GV: Phm nh Sc [email protected]

    9. ng gi d liu vi thuc tnh9. ng gi d liu vi thuc tnh

    ThucThuc tnhtnh ll khikhi nimnim chocho phpphp truytruy cpcp trngtrngthithi caca lplp thaythay vv thngthng quaqua truytruy cpcp trctrc tiptipcccc binbin thnhthnh vin,vin, nn ss cc thaythay thth bngbngvicvic truytruy cpcp thngthng quaqua phngphng thcthc caca lplp..

    NiNi cchcch khckhc ThucThuc tnhtnh ll cccc phngphng thcthc lylygigi trtr ((getget)) vv gngn gigi trtr ((setset))::Ch cCh c ((readread--onlyonly):): ch c phng thcch c phng thc getgetCh ghiCh ghi ((writewrite--onlyonly):): ch c phng thcch c phng thc setsetVa c va ghiVa c va ghi ((read/writeread/write):): c c hai phngc c hai phng

    thcthc getget vv setset

  • 3OOP in C# - GV: Phm nh Sc [email protected]

    Khai bo Phng thc cho thuc tnhKhai bo Phng thc cho thuc tnhpublicpublic {{

    //// phng thc ly gi tr ca thuc tnhphng thc ly gi tr ca thuc tnhgetget{{ // tr v mt gi tr cng kiu vi bin thnh vin// tr v mt gi tr cng kiu vi bin thnh vin

    returnreturn BiuThcTrV;BiuThcTrV;}}//// phng thc gn gi tr cho thuc tnhphng thc gn gi tr cho thuc tnhsetset{{

    BinThnhVin =BinThnhVin = valuevalue ;;}}

    }}

    OOP in C# - GV: Phm nh Sc [email protected]

    VD minh haVD minh haPublic 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 ; }}

    }

  • 4OOP in C# - GV: Phm nh Sc [email protected]

    VD minh haVD minh ha Xem thm vd trang 28Xem thm vd trang 28--2929Public class CSinhVien{ string _MaSV, _Ten;

    int _NamSinh ;string _TenNguoiYeu; // No Access-Modifierpublic 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 ; }}

    }

    OOP in C# - GV: Phm nh Sc [email protected]

    10. Ton t (operator)10. Ton t (operator)

    TrongTrong C#C# tonton tt ll mtmt phngphng thcthc tnhtnh (static(staticmethod)method) dngdng ququ titi (overload)(overload) mtmt phpphptonton nono trntrn cccc ii tngtng..McMc chch caca tonton tt ll vitvit mm chngchng trnhtrnh

    gngn gng,gng, dd hiuhiu hn,hn, thaythay vv phiphi gigi phngphngthcthc ..VdVd:: gigi ss tata cc lplp PhnPhn SS cc pp.. thcthc CongCong

    PhanSoPhanSo psps11 == newnew PhanSo(PhanSo(22,,44)) ;;PhanSoPhanSo psps22 == newnew PhanSo(PhanSo(11,,33)) ;;thaythay vv vitvit:: psps33 == psps11..Cong(psCong(ps22))tata vitvit:: PhanSoPhanSo psps33 == psps11 ++ psps22;; nunu tata dngdng

    operatoroperator overloadedoverloaded

  • 5OOP in C# - GV: Phm nh Sc [email protected]

    10. Ton t (operator) tt10. Ton t (operator) tt

    Ta c th qu ti cc ton t sau:Ta c th qu ti cc ton t sau:Ton hc: + ,Ton hc: + , -- , * , / , %, * , / , %Cng tr mt ngi: ++ ,Cng tr mt ngi: ++ , ---- ,, --Quan h so snh: == , != , > , < , >= , , < , >= ,

  • 6OOP in C# - GV: Phm nh Sc [email protected]

    10. Ch qu ti ton t (operator overloaded)10. Ch qu ti ton t (operator overloaded)

    KhiKhi ququ titi tonton tt ==,==, !=!= thth nnnn phtpht trintrin thmthmcccc phngphng thcthc Equals()Equals(),, GetHashCode()GetHashCode() mm bobo lutlut haihai ii tngtng bngbng nhaunhau theotheo tontontt ==== hochoc phngphng thcthc EqualsEquals ss cc cngcng mmbmbm

    KhiKhi nhnh nghangha tonton tt pp kiukiu tata phiphi chch rara yyll tonton tt pp kiukiu ngmngm nhnh (implicit)(implicit) hayhay tngtngminhminh (explicit)(explicit)C php nh ngha ton t p kiu:C php nh ngha ton t p kiu:

    publicpublic staticstatic [[ implicitimplicit || explicitexplicit ]] operatoroperator KiuTrVTKiuTrVT (Type V)(Type V)

    Trong Trong Type VType V l bin cn p sang kiul bin cn p sang kiu KiuTrVTKiuTrVT

    OOP in C# - GV: Phm nh Sc [email protected]

    VD minh haVD 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 31Xem thm vd trang 31--3333

  • 7OOP in C# - GV: Phm nh Sc [email protected]

    11. Ch mc (Index)11. Ch mc (Index)

    VicVic nhnh nghangha chch mcmc chocho phpphp totocccc ii tngtng caca lplp hothot ngng ginggingnhnh mtmt mngmng oo

    TcTc ll cccc ii tngtng cc thth ss dngdngtonton tt [[ ]] truytruy cpcp nn mtmt thnhthnhphnphn dd liuliu nono ..

    VicVic nhnh nghangha chch mcmc tngtng tt nhnhvicvic nhnh nghangha mtmt thucthuc tnhtnh..

    OOP in C# - GV: Phm nh Sc [email protected]

    11. C php to Ch mc (Index)11. C php to Ch mc (Index)

    publicpublic KiuTrVKiuTrV thisthis [DanhSchThamS][DanhSchThamS]{{ //Hm c//Hm c

    getget{{

    // thn hm c// thn hm c}}// Hm ghi// Hm ghi

    setset{{

    // thn hm ghi// thn hm ghi}}

    }}vd trang 34vd trang 34--3535

  • 8OOP in C# - GV: Phm nh Sc [email protected]

    11. Ghi ch v ch mc (Index)11. Ghi ch v ch mc (Index)

    MtMt chch mcmc phiphi cc tt nhtnht mtmt thamtham s,s, vvthamtham ss cc thth cc kiukiu btbt kk..

    ChCh mcmc cc thth chch cc phngphng thcthc getget..McMc dd chch mcmc ll mtmt cc imim thth vv caca

    C#C# nhngnhng cncn phiphi ss dngdng ngng mcmc chch(s(s dngdng ii tngtng cc thth hathat ngng nhnhmng,mng, mngmng nhiunhiu chiu)chiu)..

    MtMt lplp cc thth cc nhiunhiu chch mcmc nhngnhngchngchng phiphi cc cccc dudu hiuhiu phnphn bitbit vivinhaunhau (tng(tng tt nhnh ququ titi phngphng thc)thc)..

    OOP in C# - GV: Phm nh Sc [email protected]

    Q&AQ&A

    Bi tp:Bi tp:1. c li bi ging1. c li bi ging2. Lm cc bi VD & bi tp trong GT2. Lm cc bi VD & bi tp trong GT3. c bi:3. c bi: K thaK tha4. Bui ti tho lun & kim tra bi c4. Bui ti tho lun & kim tra bi c

    16