Professional Documents
Culture Documents
Sesion 03
Sesion 03
Bi 3
Yu cu
nh ngha lp v to c cc th hin ca lp (i tng). Khai bo v s dng cc phng thc trong lp, cch np chng phng thc. Truyn tham s, cc t kha ref, out v params. C ch y quyn v s kin (delegate - event).
nh ngha lp
nh ngha mt kiu d liu mi hay mt lp u tin phi khai bo ri sau mi nh ngha cc thuc tnh v phng thc ca kiu d liu . [b sung truy cp] class <nh danh lp>[:Lp c s] { <phn thn ca lp bao gm nh ngha cc thuc tnh v phng thc hnh ng> }
B sung truy cp
B sung truy cp public private protected internal protected internal Gii hn truy cp Khng hn ch. Ch c truy cp bi cc phng thc trong cng mt lp. Truy cp bi cc phng thc trong lp A v nhng lp dn xut t A Truy cp bi nhng phng thc ca bt c lp no trong khi hp ng ca A Truy cp bi cc phng thc ca lp A, dn xut t A v cc lp nm cng trong khi hp ng vi A.
nh danh lp
nh danh lp l tn ca lp do ngi xy dng chng trnh to ra c vit theo ng quy c chun. Lp c s l lp m i tng s k tha. Tt c cc thnh vin ca lp c nh ngha trong thn ca lp, c bao bc bi hai du ({})
V d minh ha
To mt lp thi gian, hin th thi gian trong ngy. using System; public class ThoiGian { private int Nam; private int Thang; private int Ngay; private int Gio; private int Phut; private int Giay;
V d minh ha
public void ThoiGianHienHanh() { Console.WriteLine(Hien thi thoi gian hien hanh); } } public class Tester { static void Main() { ThoiGian t = new ThoiGian(); t.ThoiGianHienHanh(); } }
To i tng
S dng t kha new to mt i tng ThoiGian t= new ThoiGian(); Cc i tng l kiu d liu tham chiu v c to ra trn heap >< kiu d liu gi tr c to ra trn stack
B khi dng
Mt phng thc khi dng (constructor) s c gi thc hin khi ta to mt i tng. Chc nng ca n l to cc i tng c xc nh bi mt lp v t trng thi ny hp l. Nu khng to b khi dng th CLR s t ng to b khi dng mc nh, cc thnh vin c khi to gi tr tm thng (int, long, byte 0) Khai bo b khi dng l khai bo mt phng thc c tn trng vi tn lp.
B khi dng
public ThoiGian( System.DateTime dt ) { Nam = dt.Year; Thang = dt.Month; Ngay = dt.Day; Gio = dt.Hour; Phut = dt.Minute; Giay = dt.Second; }
B khi dng
public class Tester { static void Main() { System.DateTime currentTime = System.DateTime.Now; ThoiGian t = new ThoiGian( currentTime ); t.ThoiGianHienHanh(); } }
T kha this
T kha this dng tham chiu n th hin hin hnh ca mt i tng, c xem con tr n ca tt c cc phng thc khng c thuc tnh tnh trong mt lp. Tham chiu this c s dng:
Khi cc bin thnh vin bi che lp bi cc tham s a vo public void SetYear(int Nam) { this.Nam=Nam; }
T kha this
S dng tham chiu this truyn i tng hin hnh vo mt tham s ca phng thc i tng khc S dng tham chiu this l mng, ch mc (indexer) public string this [ int index ] { get { } set {} }
Truyn tham s
Tham s c kiu d liu l gi tr th s c truyn gi tr vo cho phng thc. Tuy nhin, C# cn cung cp kh nng cho php ta truyn cc i tng c kiu gi tr di hnh thc l tham chiu.
ref cho php truyn cc i tng gi tr vo trong phng thc theo kiu tham chiu. out trong trng hp mun truyn di dng tham chiu m khng cn phi khi to gi tr ban u cho tham s truyn. params cho php phng thc chp nhn s lng nhiu cc tham s.
delegate
y quyn (delegate) l kiu d liu tham chiu c dng ng gi mt phng thc vi tham s v kiu tr v xc nh. Chng ta c th ng gi bt c phng thc thch hp no vo trong mt i tng y quyn. N khng cn bit n nhng lp i tng m n tham chiu ti. iu cn quan tm n nhng i tng l cc i mc ca phng thc v kiu tr v phi ph hp vi i tng y quyn khai bo. public delegate int WhichIsFirst(object obj1, object obj2);
delegate
namespace NewExample { public delegate void ExampleDelagate(); class Example { public void Method1() {Console.WriteLine("Method 1"); } public void Method2() {Console.WriteLine("Method 2"); } }
delegate
class Program { public static void Main() { Example a=new Example(); ExampleDelegate deg; deg=new ExampleDeleage(a.Method1); deg(); deg=new ExampleDeleage(a.Method2); deg(); } }
Multicast delegate
C ch multicasting cho php gi hai phng thc thc thi thng qua mt y quyn n. iu ny tr nn quan trng trong vic x l cc s kin. Bt c y quyn no tr v gi tr void u l y quyn multicast. Hai y quyn multicast c th c kt hp vi nhau bng ton t cng (+) v c xa i bng ton t tr (-). Kt qu l mt y quyn multicast mi gi n tt c cc phng thc thc thi nguyn thy ca c hai bn.
Multicast delegate
V d: Cn tnh gi tr ca cc biu thc x+3, x^2+5x+6, sin(x) theo c ch multicast delegate
public delegate void MulticastDelegate(double x); public class A { static void Func1(double x) { Console.WriteLine(Func1={0},x+3) ; } }
delegate
static void Func2(double x) {
Console.WriteLine(Func2={0},x*x+5*x+6);
} }
delegate
class Program { static void Main() { //Nhap gia tri cho x MulticastDelegate mulDel; mulDel=new MulticastDelegate(A.Func1); mulDel+=new MulticastDelegate(A.Func2); mulDel+=new MulticastDelegate(A.Func3); mulDel(x); }
event
Trong mi trng giao din ha (Graphical User Interfaces: GUIs), Windows hay trong trnh duyt web i hi cc chng trnh phi p ng cc s kin (event). Mt s kin c th l mt nt lnh c nhn, mt mc trong menu c chn, hnh ng sao chp tp tin hon thnh,...Mt hnh ng no xy ra, v ta phi p ng li s kin . Chng ta khng th on trc c khi no th cc s kin s xut hin. H thng s ch cho n khi nhn c s kin, v s chuyn vo cho trnh x l s kin thc hin.