Professional Documents
Culture Documents
DANH MC BI HC: Phn 1: Tm hiu ngn ng C# Bi 1: Gii thiu v ngn ng C#- Hello C# Bi 2: Cc kiu d liu trong C#. Bin, hng v cch s dng Bi 3: Kiu Enumerator Bi 4: Kiu mng v kiu chui k t Bi 5: Cc cu trc lnh trong C# Bi 6: Ton t Bi 7: X l ngoi l: Cc lnh throw ,try- catch, finally.
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Phn 2: Hng i tng trong C# Bi 8: Lp v i tng Bi 9: Methods v cc vn lin quan Bi 10: Overloading methods Bi 11: Constructor v Destructor Bi 12: Iheritance Bi 13: Overriding Method Bi 14: Polymophism Bi 15: InterFace Bi 16: Struct Bi 17: NameSpace
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
Cc bn g tn ca ng dng vo text Name. Chn ni lu tr ng dng bng cch Browse n th mc bn mun lu.
Sau khi nhn chn OK v ca s son tho ng dng xut hin, bn son tho chng trnh nh sau:
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
Nhn F5 hoc s dng thc n (menu) Debug > Start Debugging thc thi chng trnh:
Kt qu c hin th nh sau:
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Bn thc hin hon tt mt ng dng c xy dng trn nn tng cng ngh .NET vi ngn ng C#. Chng ta cng tm hiu v ni dung ca chng trnh. Khai bo cc lp th vin c s using System; using System.Collections.Generic; using System.Text; y l phn khai bo cc lp th vin c s ca .Net cho chng trnh. Cc lp th vin c s c cha cc hm m cc bn c th s dng c ngay. khai bo cc th vin ny cc bn phi s dng t kha using. Namespace v Class Mi i tng ca mt chng trnh C# u phi t trong mt class (hay lp ) v cc class ny s c t trong mt Namespace (dch ra ting vit l khng gian tn). Cc Namespace phi c tn khc nhau, cc class trong cc namespace khc nhau th c th trng tn. Khi tn cc class s c phn bit bi namespace cha n. Mt v d m phng v Namespace v Lp l: H Ni v Tp.HCM u c ng mang tn Trn Hng o, nhng r rng l con ng Trn Hng o hai ni hon ton khc nhau mc d vn c chung tn Trn Hng o. Vy ta ni H Ni v Tp.HCM l hai namespace cha hai lp c cng tn "Trn Hng o". Cc bn s c tm hiu k v 2 khi nim ny cc bi hc sau ca chng ti trong phn Lp trnh hng i tng (OOP). Ton t . Nh vy gi mt bn Hoa bn phi gn vo lp hc ca bn y Hoa lp tin 1 chng hn. C# cung cp cho bn mt ton t dng gi ra cc lp ca mt namespace l ton t .. Nu mun gi ra mt lp trong mt namespace bn s dng c php sau:
Namespace.Class
V d HANOI.TranHungDao, vit nh th ny ch n con ng Trn Hng o ti H Ni, hon ton khc vi con ng TranHungDao o TPHCM c vit vi dng TPHCM.TranHungDao.
S dng lp System.Console nhp/ xut d liu. Lp System.Console y l lp thng ng s dng trong cc chng trnh Console c v ghi ra mn hnh cc gi tr text. 5 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
chng trnh, chng ta s dng: Console.WriteLine("Chao mung ban den voi The gioi C#"); //ghi d liu ra mn hnh Console.ReadLine(); //c d liu Mt s hm thng dng
Console.Read(): c d liu t bn phm Console.ReadLine(): c d liu t bn phm v a con tr xung dng di. Console.Write(): Ghi d liu ra mn hnh Console.WriteLine(): Ghi d liu ra mn hnh v xung dng. Cu lnh v khi lnh T chng trnh u tin trn, cc bn phn no hnh dung c v ngn ng C#. Cc bn hy hnh dung cu lnh trong lp trnh ging vi mt cu vn trong vn bn. N cng cn tun theo nhng quy tc nht nh. Nu ngn ng trong i sng bn phi din t cho mi ngi xung quanh hiu th trong ngn ng lp trnh mt cu lnh c vit vi mc ch lm cho trnh bin dch hiu. Chng ta tun th mt s quy tc sau khi lp trnh vi ngn ng C#: Cu lnh trong C# lun c kt thc bng du ; Bn c th c mt on vn gm nhiu cu vn din t mt ni dung no . Bn cng c th gom nhiu cu lnh thnh mt khi lnh lm mt cng vic. Bn c th gom li thnh mt khi nh sau: { Cu lnh 1; Cu lnh 2; Cu lnh 3; } Khi lnh s c t trong cp du mc n {}
Luyn tp: To mt ng dng c tn l Hello World lu trong th mc l tn ca bn trong cng. Trong in ra 2 dng: Hello World! 6 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Welcome to C# World! Bi 2: Cc kiu d liu trong C#. Bin, hng v cch s dng 1. Cc kiu d liu trong C# C# chia thnh hai tp hp kiu d liu chnh: Kiu xy dngsn (built- in) m ngn ng cung cp cho ngi lp trnh v kiu c ngi dng nh ngha(user-defined) do ngi lp trnh to ra. C# phn tp hp kiu d liu ny thnh hai loi: Kiu d liu gi tr (value) v kiu d liu tham chiu (reference). Bn c th chuyn i t kiu d liu ny sang kiu d liu khc qua vic boxing v unboxing(Ti s gii thiu vi bn phn sau ca bi hc ny) Bng cc kiu d liu xy dng sn
M t kiu d liu c bn ca tt c cc kiu khc c s dng lu tr nhng gi tr kiu ch cho bin S dng lu tr gi tr kiu s nguyn s dng lu tr gi byte S dng lu tr gi tr s thc Cho php mt bin lu tr gi tr ng hoc sai Cho php mt bin lu tr mt k t
string
int
char
Ghi ch: Tt c cc kiu d liu xy dng sn l kiu d liu gi tr ngoi tr cc i tng v chui. V tt c cc kiu do ngi dng nh ngha ngoi tr kiu struct u l kiu d liu tham chiu. trong bi hc ny chng ta s tm hiu cc kiu xy dng sn.
2. Bin v Hng a. Bin Mt bin l mt vng lu tr vi mt kiu d liu. to mt bin chng ta phi khai bo kiu ca bin v gn cho bin mt tn duy nht. Bin c th c khi to gi tr ngay khi c khai bo, hay n cng c th c gn mt gi tr mi vo bt c lc no trong chng trnh. 7 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
AccessModifier DataType
Trong :
VariableName;
AccessModifier: xc nh u tin truy xut ti bin Datatype: nh ngha kiu lu tr d liu ca bin VariableName: l tn bin
Cp truy xut ti bin c m t nh bng di y
M t Truy cp ti bt k ni u Cho php truy xut bn trong mt lp ni bin ny c nh ngha, hoc t cc lp con ca lp . Ch truy xut bn trong lp ni m bin c nh ngha.
private
V d bn khai bo mt bin kiu int int bien1; Bn c th khi gn ngay cho bin trong lc khai bo int bien1 = 9; hoc c th gn gi tr sau khi khai bo nh sau: int bien1; bien1 = 9; Cch khai bo bin tng ng vi cc kiu d liu: C# Data Type object string int byte 8 V d object obj = null; string str = "Welcome"; int ival = 12; byte val = 12; http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ float bool float val = 1.23F; bool val1 = false; bool val2 = true; char char cval = 'a';
V d sau s minh ha cch s dng bin: using System; using System.Collections.Generic; using System.Text; namespace SuDungBien { class MinhHoa { static void Main() { int bien1 = 9; // khai bo v khi to gi tr cho mt bin System.Console.WriteLine("Sau khi khoi tao: bien1 ={0}", bien1); bien1 = 15; // gn gi tr cho bin System.Console.WriteLine("Sau khi gan: bien1 ={0}", bien1); Console.ReadLine(); } } } Cc bn hy ch n mu sc ca on code trn. Cc ch c mu xanh dng l t kha, phn vn bn mu xanh lc sau du s cho // l cc ch thch, phn text nm trong du c mu l cc k t. Lnh Write v WriteLine c phn bit vic in ra mn hnh bin v k t. Sau y ti s ln lt gii thch cc khi nim trn. T kha Trong cuc sng, mi ngn ng u cha nhng t kha v nhng t ny hiu c bi ngi ni ra n. iu cng ng vi C#. T kha trong C# l nhng t c bit v mang ngha c bit ch dnh ring cho ngn ng ny. Trong VS.net nhng t kha ca C# s c mu xanh ra tri. trong v d trn cc t kha l using, namespace, int Tn v quy tc t tn trong C# Mi s vt hin tng trong cuc sng u c tn gi phn bit vi nhau v iu cng ng i vi mt chng trnh my tnh. Mi i tng ca chng trnh C# u c tn. Bn c th t tn cho bin, cho hm, cho lp v cho cc namespace. Ch rng C# l ngn ng phn bit ch hoa ch thng. V d bn khai bo 2 bin kiu int 9 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
Th 2 bin ny l 2 i tng khc nhau. Khi bn t tn cn ch n cc nguyn tc sau: (/) Cch vit ch thch Ch thch trong chng trnh C# l nhng phn text lm r hn cho phn code ca lp trnh vin. Ch thch khng c c bi trnh bin dch, n khng lin quan g n chng trnh ca bn C 2 cch vit ch thch trong C#: Nu ch thch trn mt dng bn t phn ch thch sau 2 du s cho // ch thch Nu ch thch trn nhiu dng bn t p hn ch thch trong cp /* */ c th /* ch thch*/ Cch in ra mn hnh Khi in cc k t ra mn hnh bn phi t chng trong cp du . Vy in ra bin th sao? Bn s lm theo mu sau V d bn c 3 bin :bien1, bien2, bien3 v bn mun in chng ra mn hnh. Bn s dng cu lnh: Console.WriteLine("{0} {1} {2}",bien1, bien2, bien3); K t tip theo c th ly bt k. Tn khng c trng vi t kha. K t u tin phi l mt ch ci (c th l ch hoa hoc thng) hoc l du gch di
b. Hng Hng cng l mt bin nhng gi tr ca hng khng thay i. Bin l cng c rt mnh, tuy nhin khi lm vic vi mt gi tr c nh ngha l khng thay i, ta phi m bo gi tr ca n khng c thay i trong sut chng trnh. V d, khi lp mt chng trnh th nghim ha hc lin quan n nhit si, hay nhit ng ca nc, chng trnh cn khai bo hai bin l DoSoi v DoDong, nhng khng cho php gi tr ca hai bin ny b thay i hay b gn. ngn nga vic gn gi tr khc, ta phi s dng bin kiu hng. Hng c phn thnh ba loi: gi tr hng 10 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ (literal), biu tng hng (symbolic constants), kiu liu k (enumerations). Chng ta s tm hiu v kiu lit k bi hc sau.
Gi tr hng Ta c mt cu lnh gn nh sau: x = 100; Gi tr 100 l gi tr hng. Gi tr ca 100 lun l 100. Ta khng th gn gi tr khc cho 100 c. Biu tng hng gn mt tn cho mt gi tr hng, to mt biu tng hng dng t kha const v c php sau: <const> <type> <tn hng> = <gi tr>; Mt biu tng hng phi c khi to khi khai bo, v ch khi to duy nht mt ln trong sut chng trnh v khng c thay i. V d: const int DoSoi = 100; Trong khai bo trn, 32 l mt hng s v DoSoi l mt biu tng hng c kiu nguyn. V d sau s minh ha cch s dng biu tng hng class MinhHoaC3 { static void Main() { const int DoSoi = 100; // C const int DoDong = 0; // C System.Console.WriteLine( Do dong cua nuoc {0}, DoDong ); System.Console.WriteLine( Do soi cua nuoc {0}, DoSoi ); } } Kt qu: Do dong cua nuoc 0 Do soi cua nuoc 100 Cc bn hiu c s khc nhau gia bin v hng- cch s dng chng trong C# . Ngoi ra bn cn bit th no l t kha, quy tc t tn trong C#, cch vit ch thch v cch ghi ra mn hnh k t, bin
Luyn tp 11 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
Cu hi:
1) Nhng t theo sau t no l t kha trong C#: field, cast, as, object, throw, football, do, get, set, basketball. 2) C bao nhiu cch khai bo comment trong ngn ng C#, cho bit chi tit? 3) C# chia lm my kiu d liu chnh? Nu ta to mt lp tn myClass th lp ny c xp vo kiu d liu no? Bi tp: Bi 1: Tm li ca chng trnh sau. Sa li v bin dch li chng trnh. class Bai1 { public static void Main() { double myDouble; decimal myDecimal; myDouble = 3.14; myDecimal = 3.14; Console.WriteLine(My Double: {0}, myDouble); Console.WriteLine(My Decimal: {0}, myDecimal); } } Bi 2(Tip): Boxing v Unboxing
1. Boxing Bn c th d dng hnh dung qu trnh ny thng qua tn gi ca n, ngha l mt gi tr c a vo bn trong mt i tng. Ni cch khc, boxing l nhng x l cho php kiu d liu gi tr nh (int, unint, long) c i x nh kiu tham chiu ( cc i tng). V qu trnh boxing c thc hin ngm nh. Bn hy xem hnh di minh ha v qu trnh boxing mt s nguyn:
12
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
y l chng trnh minh ha qu trnh trn. using System; class Boxing { public static void Main() { int i = 123; object o = i;
2.Unboxing
Unboxing l qu trnh ngc li vi boxing, tc l a t mt i tng ra mt gi tr . Qu trnh ny s c thc hin mt cch tng minh. V thc hin c iu ny bn cn chc chn rng i tng c boxing ng kiu gi tr a ra v sao chp gi tr t th hin hay i tng vo 13 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ bin kiu gi tr. Hnh di y m t qu trnh unboxing. Nh bn thy n ngc li vi qu trnh boxing trn
using System; public class Unboxing { public static void Main() { int i = 123; // Boxing object o = i; // Unboxing phi c thc hin tng minh tng minh int k = (int) o; 14 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
Console.WriteLine("k: {0}", k); } } Nu mt i tng c Unboxing l null hay l tham chiu n mt i tng c kiu d liu khc, mt lidCastException (Ngoi l) s c pht sinh. Cc bn s c hc v cch x l ngoi l bi 7 ca kha hc. Bi 3: Kiu lit k (Enumerator)
1 .nh ngha Kiu lit k n gin l tp hp cc tn hng c gi tr khng thay i (thng c gi l danh sch lit k). 2. Cch khai bo v s dng Cc bn hy xem li v d bi hc s 2 v cch s dng biu tng hng, chng ta c hai biu tng hng c quan h vi nhau: const int DoDong = 0; const int DoSoi = 100; Do mc ch m rng ta mong mun thm mt s hng s khc vo danh sch trn, nh cc hng sau:
const int DoNong = 60; const int DoAm = 40; const int DoNguoi = 20; Cc biu tng hng trn iu c ngha quan h vi nhau, cng ni v nhit ca nc, khi khai bo tng hng trn c v cng knh v khng c lin kt cht ch cho lm. Thay vo C# cung cp kiu lit k gii quyt vn trn: enum NhietDoNuoc { DoDong = 0, DoNguoi = 20, DoAm = 40, DoNong = 60, 15 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ DoSoi = 100, } Mi kiu lit k c mt kiu d liu c s, kiu d liu c th l bt c kiu d liu nguyn no nh int, short, long... tuy nhin kiu d lu ca lit k khng chp nhn kiu k t. khai bo mt kiu lit k ta thc hin theo c php sau: [thuc tnh] [b sung] enum <tn lit k> [:kiu c s] { danh sch cc thnh phn lit k } Thnh phn thuc tnh v b sung l t chn c th c hoc khng. Mt kiu lit k bt u vi t kha enum, tip sau l mt nh danh cho kiu lit k: enum NhietDoNuoc Thnh phn kiu c s chnh l kiu khai bo cho cc mc trong kiu lit k. Nu b qua thnh phn ny th trnh bin dch s gn gi tr mc nh l kiu nguyn int, tuy nhin chng ta c th s dng bt c kiu nguyn no nh ushort hay long,..ngoi tr kiu k t. on v d sau khai bo mt kiu lit k s dng kiu c s l s nguyn khng du uint:
enum KichThuoc :uint { Nho = 1, Vua = 2, Lon = 3, } Lu l khai bo mt kiu lit k phi kt thc bng mt danh sch lit k, danh sch lit k ny phi c cc hng c gn, v mi thnh phn phi phn cch nhau du phy. V d sau minh ha v cch s dng kiu lit k using System; using System.Collections.Generic; using System.Text; namespace Bien { class KieuEnum { enum NhietDoNuoc: int { 16
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ DoDong = 0, DoNguoi = 20, DoAm = 40, DoNong = 60, DoSoi = 100, } static void Main() { System.Console.WriteLine( "Nhiet do dong: {0}",(int)NhietDoNuoc.DoDong); System.Console.WriteLine("Nhiet do nguoi: {0}", (int)NhietDoNuoc.DoNguoi); System.Console.WriteLine("Nhiet do am: {0}", (int)NhietDoNuoc.DoAm); System.Console.WriteLine("Nhiet do nong: {0}", (int)NhietDoNuoc.DoNong); System.Console.WriteLine("Nhiet do soi: {0}", (int)NhietDoNuoc.DoSoi); Console.ReadLine(); } } } Kt qu: Nhiet Nhiet Nhiet Nhiet Nhiet do do do do do dong: 0 nguoi: 20 am: 40 nong: 60 soi: 100
Ch : Mi thnh phn trong kiu lit k tng ng vi mt gi tr s, trong trng hp ny l mt s nguyn. Nu chng ta khng khi to cho cc thnh phn ny th chng s nhn cc gi tr tip theo vi thnh phn u tin l 0. Ta xem th khai bo sau: enum Thutu { ThuNhat, ThuHai, ThuBa = 10, ThuTu } Khi gi tr ca ThuNhat l 0, gi tr ca ThuHai l 1, gi tr ca ThuBa l 10 v gi tr ca ThuTu l 11. Ch : Kiu lit k l mt kiu hnh thc do bt buc phi thc hin php chuyn i tng minh vi cc kiu gi tr nguyn: 17 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ int x = (int) ThuTu.ThuNhat; bi sau bn s c hc v kiu string v kiu mng.
1. D liu kiu mng a. nh ngha : Mng l mt nhm nhng bin c cng mt kiu d liu. Nhng bin ny c lu tr trong b nhng vng b nh k tip do mng cho php truy xut v thc thi n tng phn t trong mng. b. Cng thc khai bo mt mng
number of elements: l s phn t ca mng Datatype: kiu d liu m mng lu tr variableName: l tn mng.
V d: // mng kiu int int[] iarray = new int[5]; // mng kiu string string[] sarray = new string[6]; V d: cch khai bo khc string[] sarray2 = { "Welcome", "to", "C# Array" }; Khi lp trnh, ty theo iu kin chng trnh m bn c th chn la mt trong hai cch trn. c. Cch truy xut n cc phn t trong mng. 18 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ truy xut n mt phn t trong mt mng chng ta s dng ch s ca phn t trong mng, v d vi mng iarray trn, chng ta s ly c gi tr ca ca phn t th 3 trong mng nh sau: // Truy xut n phn t th 3 trong mng int iValue = iarray[2]; // Gp li nu truy xut n phn t khng nm trong mng int iValue = iarray[5]; truy xut n phn t th 3, chng ta dng ch s 2, nh th, ch s nh du cc phn t trong mng xut pht t 0. Chng ta cng d dng nhn thy khi thc thi, chng trnh bo li dng int iValue = iarray[5], do phn t th 6 khng tn ti trong mng. 2. D liu kiu chui a. nh ngha kiu d liu chui lu gi mt mng nhng k t. b. Khai bo v s dng Kiu d liu chui kh thn thin vi ngi lp trnh trong bt c ngn ng lp trnh no, kiu d liu chui lu gi mt mng nhng k t (charater). khai bo mt chui chng ta s dng t kho string tng t nh cch to mt th hin ca bt c i tng no: string chuoi; chuoi = "Learning C#"; chng ta cng c th gn gi tr cho chui ngay khi khi to nh sau: string chuoi = "Learning C#"; Bn c th tham kho thm v kiu string cc bi vit ny: http://www.itgatevn.com.vn/index.aspx?u=iex&su=d&cid=44&id=20788 http://www.itgatevn.com.vn/index.aspx?u=iex&su=d&cid=44&id=20757 http://www.itgatevn.com.vn/index.aspx?u=iex&su=d&cid=44&id=20784
19
http://www.itgatevn.com.vn
C# cung cp hai cu trc iu khin thc hin vic la chn iu kin thc thi chng trnh l cu trc if v switch...case
Cu trc if Cu trc if trong C# c m t nh sau: if (biu thc iu kin) { // cu lnh thc thi nu biu thc iu kin ng } [else { // cu lnh thc thi nu biu thc iu kin sai }]
V d:
if (20 % 4 > 0) { Console.WriteLine("S 20 khng chia ht cho 4"); } else { Console.WriteLine("S 20 chia ht cho s 4"); }
20
http://www.itgatevn.com.vn
Cu trc swtich.case c cu trc nh sau: // switch ... case switch (Bin iu kin) { case gi tr 1: Cu lnh thc thi break; case gi tr 2: Cu lnh thc thi break; case gi tr 3: Cu lnh thc thi break; default: Cu lnh thc thi break; }
V d:
21
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
int x = 20 % 4; switch (x) { case 1: Console.WriteLine("20 chia cho 4 c s d l 1"); break; case 0: Console.WriteLine("20 chia ht cho 4"); break; default: Console.WriteLine("Khng thuc tt c cc trng hp trn"); break; }
Sau y, ti xin gii thiu cng thc v v d s dng cc vn lp trn Vng lp While 22 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Cu trc vng lp while while { // cu lnh } Thc thi cu lnh hoc mt lot nhng cu lnh n khi iu kin khng c tha mn. V d: (biu thc iu kin)
using System; public class TestDoWhile { public static void Main () { int x; int y = 0;
do { x = y++; Console.WriteLine(x); }
Vng lp for Cu trc vng lp for for ([ phn khi to] ; [biu thc iu kin]; [bc lp]) 24 http://www.itgatevn.com.vn
using System; public class ForLoopTest { public static void Main() { for (int i = 1; i <= 5; i++) Console.WriteLine(i); } }
Vng lp foreach Cu lnh lp foreach kh mi vi nhng ngi hc ngn ng C, t kha ny c s dng trong ngn ng Visual Basic. Cu lnh foreach cho php chng ta lp qua tt c cc mc trong mt mng hay trong mt tp hp. C php s dng lnh lp foreach nh sau:
foreach (<kiu d liu thnh phn> <tn truy cp> in <mng/tp hp> ) { // thc hin thng qua <tn truy cp> tng ng vi // tng mc trong mng hay tp hp }
25
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ D liu kiu tp hp cha c cp ti trong cc bi hc trc nn bn ch cn quan tm n vng lp foreach s dng vi mng. Bn hy xem v d sau hiu cch s dng ca vng lp foreach truy cp n tng phn t ca mng. using System;
public class UsingForeach { public static int Main() { int[] intArray = {1,2,3,4,5,6,7,8,9,10}; foreach( int item in intArray) { Console.Write("{0} ", item); } Console.ReadLine(); return 0; } }
Kt qu:
0 1 2 3 4 5 6 7 8 9 10
26
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Lnh nhy goto l mt lnh nhy n gin, cho php chng trnh nhy v iu kin ti mt v tr trong chng trnh thng qua tn nhn. Goto gip chng trnh ca bn c linh hot hn nhng trong nhiu trng hp n s lm mt i cu trc thut ton v gy ri chng trnh.
Nhn l mt nh danh theo sau bi du hai chm (:). Thng thng mt lnh goto gn vi mt iu kin no .
V d:
public class UsingGoto { public static void Main() { int i = 0; lap: // nhn Console.WriteLine("i:{0}",i); i++; if ( i < 10 ) goto lap; // nhy v nhn lap Console.ReadLine(); } }
Khi ang thc hin cc lnh trong vng lp, c yu cu nh sau: khng thc hin cc lnh cn li na m thot khi vng lp, hay khng thc hin cc cng vic cn li ca vng lp hin ti m nhy qua vng lp tip theo. p ng yu cu trn C# cung cp hai lnh nhy l break v continue thot khi vng lp.
Break khi c s dng s a chng trnh thot khi vng lp v tip tc thc hin cc lnh tip ngay sau vng lp. Continue ngng thc hin cc cng vic cn li ca vng lp hin thi v quay v u vng lp thc hin bc lp tip theo.
V d:
public class UsingBreak_Continue { public static void Main() { for (int i = 0; i < 10; i++) { if (i % 2 == 0) continue; Console.WriteLine("i:{0}", i); if (i==7) break; } Console.ReadLine(); } }
28
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Nu khng c lnh break v continue vng lp s ln lt in ra cc s t 0 n 9 nhng khi gp I chn (i%2==0) th n s continue tc l khng thc hin cc lnh tip theo m quay tr li u vng lp vi gi tr ca I c tng ln 1. Lnh break c thc hin khi (i==7) n s thot khi vng lp ngay lp tc v cng kt thc chng trnh v kt qu l chng trnh trn ch in ra cc s l t 1 n 7 Bi 6: Ton t 1.nh ngha ton t Ton t c k hiu bng mt biu tng dng thc hin mt hnh ng. Cc kiu liu c bn ca C# nh kiu nguyn h tr rt nhiu cc ton t nh ton t gn, ton t ton hc, logic... 2. Cc loi ton t a. Ton t gn n lc ny ton t gn kh quen thuc vi chng ta, hu ht cc chng trnh minh ha t u u s dng php gn. Ton t gn hay php gn lm cho ton hng bn tri thay i gi tr bng vi gi tr ca ton hng bn phi. Ton t gn l ton t hai ngi. y l ton t n gin nht thng dng nht v cng d s dng nht. v d a = b b. Ton t ton hc Ngn ng C# cung cp nm ton t ton hc, bao gm bn ton t u cc php ton c bn. Ton t cui cng l ton t chia nguyn ly phn d. Cc php ton s hc c bn (+,-,*,/) Cc php ton ny khng th thiu trong bt c ngn ng lp trnh no, C# cng khng ngoi l, cc php ton s hc n gin nhng rt cn thit bao gm: php cng (+), php tr (-), php nhn (*), php chia (/) nguyn v khng nguyn %. Khi chia hai s nguyn, th C# s b phn phn s, hay b phn d, tc l nu ta chia 8/3 th s c kt qu l 2 v s b phn d l 2. Tuy nhin, khi chia cho s thc c kiu nh float, double, hay decimal th kt qu chia c tr v l mt s thc. Php ton chia ly d tm phn d ca php chia nguyn, chng ta s dng ton t chia ly d (%). V d, cu lnh sau 8%3 th kt qu tr v l 2 (y l phn d cn li ca php chia nguyn). Tht s php ton chia ly d rt hu dng cho ngi lp trnh . Khi chng ta thc hin mt php chia d n cho mt s khc, nu s ny l bi s ca n th kt qu ca php chia d l 0. 29 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ V d 20 % 5 = 0 v 20 l mt bi s ca 5. iu ny cho php chng ta ng dng trong vng lp, khi mun thc hin mt cng vic no cch khong n ln, ta ch cn kim tra php chia d n, nu kt qu bng 0 th thc hin cng vic. Cch s dng ny p dng trong v d minh ha s dng vng lp for bn trn. V d: Php chia v php chia ly d. using System; class Tester { public static void Main() { int i1, i2; float f1, f2; double d1, d2; decimal dec1, dec2; i1 = 17; i2 = 4; f1 = 17f; f2 = 4f; d1 = 17; d2 = 4; dec1 = 17; dec2 = 4; Console.WriteLine("Integer: \t{0}", i1/i2); Console.WriteLine("Float: \t{0}", f1/f2); Console.WriteLine("Double: \t{0}", d1/d2); Console.WriteLine("Decimal: \t{0}", dec1/dec2); Console.WriteLine("\nModulus: : \t{0}", i1%i2); Console.ReadLine(); } } Kt qu: Integer: 4 float: 4.25 double: 4.25 decimal: 4.25 Modulus: 1 c.Ton t tng v gim Khi s dng cc bin s ta thng c thao tc l cng mt gi tr vo bin, tr i mt gi tr t bin , hay thc hin cc tnh ton thay i gi tr ca bin sau gn gi tr mi va tnh ton cho 30 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ chnh bin . d. Tnh ton v gn tr li Gi s chng ta c mt bin tn Luong lu gi tr lng ca mt ngi, bin Luong ny c gi tr hin thi l 1.500.000, sau tng thm 200.000 ta c th vit nh sau: Luong= Luong +200.000; Trong cu lnh trn php cng c thc hin trc, khi kt qu ca v phi l 1.700.000 v kt qu ny s c gn li cho bin Luong, cui cng Luong c gi tr l 1.700.000. Chng ta c th thc hin vic thay i gi tr ri gn li cho bin vi bt k php ton s hc no: Luong = Luong * 2; Luong = Luong 100.000; Do vic tng hay gim gi tr ca mt bin rt thng xy ra trong khi tnh ton nn C# cung cp cc php ton t gn (self- assignment). Bng sau lit k cc php ton t gn.
Ton t +=
ngha Cng thm gi tr ton hng bn phi vo gi tr ton hng bn tri Ton hng bn tri c tr bt i mt
-=
*=
/=
31
http://www.itgatevn.com.vn
Gi s mun kt hp cc php ton nh gia tng gi tr ca mt bin v gn gi tr ca bin cho bin th hai, ta vit nh sau: var1 = var2++; Cu hi c t ra l gn gi tr trc khi cng hay gn gi tr sau khi cng. Hay ni cch khc gi tr ban u ca bin var2 l 10, sau khi thc hin ta mun gi tr ca var1 l 10, var2 l 11, hay var1 l 11, var2 cng 11? gii quyt yu cu trn C# cung cp th t thc hin php ton tng/gim vi php ton gn, th t ny c gi l tin t (prefix) hay hu t (postfix). Do ta c th v it: var1 = var2++; // Hu t 32 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Khi lnh ny c thc hin th php gn s c thc hin trc tin, sau mi n php ton tng. Kt qu l var1 = 10 v var2 = 11. Cn i vi trng hp tin t: var1 = ++var2; Khi php tng s c thc hin trc tc l gi tr ca bin var2 s l 11 v cui cng php gn c thc hin. Kt qu c hai bin var1 v var2 iu c gi tr l 11. Minh ho s dng ton t tng trc v tng sau khi gn. using System; class Tester { static int Main() { int valueOne = 10; int valueTwo; valueTwo = valueOne++; Console.WriteLine("Thuc hien tang sau: {0}, {1}", valueOne, valueTwo); valueOne = 20; valueTwo = ++valueOne; Console.WriteLine("Thuc hien tang truoc: {0}, {1}", valueOne, valueTwo); Console.ReadLine(); return 0; } } Kt qu: Thuc hien tang sau: 11, 10 Thuc hien tang truoc: 21, 21 f. Ton t quan h Nhng ton t quan h c dng so snh gia hai gi tr, v sau tr v kt qu l mt gi tr logic kiu bool (true hay false). V d ton t so snh ln hn (>) tr v gi tr l true nu gi tr bn tri ca ton t ln hn gi tr bn phi ca ton t. Do vy 5 > 2 tr v mt gi tr l true, trong khi 2 > 5 tr v gi tr false. Cc ton t quan h trong ngn ng C# c trnh by bng 3.4 bn di. Cc ton t trong bng c minh ha vi hai bin l value1 v value2, trong value1 c gi tr l 100 v value2 c gi tr l 50.
K hiu ==
33
Su tm v edit bi Oki@kimur@ Khng bng != Value2 !=100 Value2 !=50 Ln hn > Value1> value2 Value2> value1 Ln hn hoc bng Nh hn >= Value2 >= 50 False True True False True
<
Value1<value2 Value2<value1
Nh hn hoc bng
<=
Value1<=value2
(x==3)&&(y==7) False
Or
||
(x==3)||(y==7)
True
Not 34
! (x==3)
True
h.Ton t ba ngi Hu ht cc ton t i hi c mt ton hng nh ton t (++, --) hay hai ton hng nh (+,,*,/,...). Tuy nhin, C# cn cung cp thm mt ton t c ba ton hng (?:). Ton t ny c c php s dng nh sau: <Biu thc iu kin > ? <Biu thc th 1> : <Biu thc th 2> Ton t ny s xc nh gi tr ca mt biu thc iu kin, v biu thc iu kin ny phi tr v mt gi tr kiu bool. Khi iu kin ng th <biu thc th 1> s c thc hin, cn ngc li iu kin sai th <biu thc th 2> s c thc hin. C th din gii theo ngn ng t nhin th ton t ny c ngha : Nu iu kin ng th lm cng vic th nht, cn ngc li iu kin sai th lm cng vic th hai. Cch s dng ton t ba ngi ny c minh ha trong v d sau. S dng ton t bao ngi. using System; class Tester { public static int Main() { int value1; int value2; int maxValue; value1 = 10; value2 = 20; maxValue = value1 > value2 ? value1 : value2; Console.WriteLine("Gia tri thu nhat {0}, gia tri thu hai {1}, gia tri lon nhat {2}",value1, value2, maxValue); Console.ReadLine(); return 0; } } Trong v d minh ha trn ton t ba ngi c s dng kim tra xem gi tr ca value1 c ln hn gi tr ca value2, nu ng th tr v gi tr ca value1, tc l gn gi tr value1 cho bin maxValue, cn ngc li th gn gi tr value2 cho bin maxValue.
35
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
Ngoi l: L mt i tng ng gi nhng thng tin v s c ca mt chng trnh khng bnh thng.
Mt trnh x l ngoi l: L mt khi lnh chng trnh c thit k x l cc ngoi l m chng trnh pht sinh. X l ngoi l c thc thi trong trong cu lnh catch. Mt cch l tng th nu mt ngoi l c bt v c x l, th chng trnh c th sa cha c vn v tip tc thc hin hot ng. Thm ch nu chng trnh khng tip tc, bng vic bt gi ngoi l chng ta c c hi in ra nhng thng ip c ngha v kt thc chng trnh mt cch r rng. Nu on chng trnh ca chng ta thc hin m khng quan tm n bt c ngoi l no m chng ta c th gp (nh khi gii phng ti nguyn m chng trnh c cp pht), chng ta c th t on m ny trong khi finally, khi n s chc chn s c thc hin thm ch ngay c khi c mt ngoi l xut hin.
Trong ngn ng C#, chng ta ch c th pht sinh (throw) nhng i tng cc kiu d liu l System.Exception, hay nhng i tng c dn xut t kiu d liu ny. Namespace System ca CLR cha mt s cc kiu d liu x l ngoi l m chng ta c th s dng trong chng trnh. Nhng kiu d liu ngoi l ny bao gm ArgumentNullException, InValidCastException, v OverflowException, cng nh nhiu lp khc na.
2.
Lnh Throw
C php: throw new System.Exception(); Khi pht sinh ngoi l th ngay tc khc s lm ngng vic thc thi trong khi CLR s tm 36 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ kim mt trnh x l ngoi l. Nu mt trnh x l ngoi l khng c tm thy trong phng thc hin thi, th CLR tip tc tm trong phng thc gi cho n khi no tm thy. Nu CLR tr v lp Main() m khng tm thy bt c trnh x l ngoi l no, th n s kt thc chng trnh.
V d:
using System; using System.Collections.Generic; using System.Text; namespace Programming_CSharp { public class Test { public static void Main() { Console.WriteLine("hm Main...."); Test t = new Test(); t.Func1(); Console.WriteLine("Kt thc hm Main..."); } public void Func1() { Console.WriteLine("Bt u hm Func1..."); Func2(); Console.WriteLine("Kt thc hm Func1..."); } public void Func2() { Console.WriteLine("Bt u hm Func2..."); throw new System.Exception(); Console.WriteLine("Kt thc hm Func2..."); } } }
Gii thch v d trn nh sau: Hm Main() gi hm Func1(). Hm Func1() thc hin lnh in ra mn hnh dng bt u hm Func1 sau n gi ti hm Func2(). Hm Func2() li in ra dng bt u hm Func2 sau n s pht sinh ra mt ngoi l dng cu lnh throw new 37 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ System.Exception(). Ti y chng trnh b ngng thc thi, CLR s tm kim trnh x l ngoi l cho ngoi l hm Func2() pht sinh. CLR s ln lt tm kim trong stack , hm Func1() nhng khng c trnh x l ngoi l no, n s tip tc tm n hm main nhng hm ny cng khng c nn CLR s gi trnh x l ngoi l mc nh, n s xut ra mt thng ip li nh cc bn thy khi thc thi chng trnh.
3.
Trong C#, mt trnh x l ngoi l hay mt on chng trnh x l cc ngoi l c gi l mt khi catch v c to ra vi t kha catch.
Chng ta s vit li v d trn nhng t throw vo trong khi try v mt khi catch s dng x l ngoi l do lnh throw pht sinh. Khi catch s a ra thng bo l c mt li c x l.
using System; using System.Collections.Generic; using System.Text; namespace Programming_CSharp { public class Test { public static void Main() { Console.WriteLine("hm Main...."); Test t = new Test(); t.Func1(); Console.WriteLine("Kt thc hm Main..."); Console.ReadLine(); } public void Func1() { Console.WriteLine("Bt u hm Func1..."); Func2(); Console.WriteLine("Kt thc hm Func1..."); } public void Func2() { 38 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Console.WriteLine("Bt u hm Func2..."); try { Console.WriteLine("Bt u Khi try"); throw new System.Exception(); Console.WriteLine("Kt thc khi try"); } catch { Console.WriteLine("Ngoi l c x l"); } Console.WriteLine("Kt thc hm Func2..."); } } } Tng t nh v d ti va trnh by, cho n khi chng trnh thc hin hm Func2() khi lnh throw pht sinh ra ngoi l, chng trnh s b ngng thc hin v CLR s tm phn x l ngoi l trong stack, u tin n s gi n hm Func1() ti y hm Func2() c gi v n s tm thy phn x l ngoi l trong khi catch , n s in ra dng Ngoi l c x l. cng l l do m chng trnh s khng bao gi in ra dng Kt thc khi try. 4. Lnh Finally
Trong mt s tnh hung chng ta cn phi thc hin bt c khi no mt ngoi l c pht sinh ra, v d nh vic ng mt tp tin. lm vic ny chng ta c th t cu lnh trong c hai khi try v catch. Tuy nhin c mt cch gii quyt tt hn, l s dng cu lnh Finnally. Cc hnh ng t trong khi finnally s lun c thc hin m khng cn quan tm ti vic c hay khng mt ngoi l pht sinh trong chng trnh.
using System; namespace Programming_CSharp { public class Test { public static void Main() { Test t = new Test(); 39 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ t.TestFunc(); Console.ReadLine(); } // chia hai s v x l ngoi l nu c public void TestFunc() { try { Console.WriteLine("m file"); double a = 5; double b = 0; Console.WriteLine("{0} /{1} = {2}", a, b, DoDivide(a,b)); Console.WriteLine("dng ny c th xut hin hoc khng"); } catch (System.DivideByZeroException) { Console.WriteLine("li chia cho 0!"); } catch { Console.WriteLine("khng c ngoi l"); } finally { Console.WriteLine("ng tp."); } } // thc hin chia nu hp l public double DoDivide(double a, double b) { if ( b == 0) { throw new System.DivideByZeroException(); } if ( a == 0) { throw new System.ArithmeticException(); } return a/b; } } } u tin hy gn a= 5 v b=0 chy chng trnh Bn s thy lnh Console.WriteLine("dng ny c th xut hin hoc khng"); 40 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ S khng c thc hin do xut hin mt ngoi l l li chia cho 0 v chng trnh s tm ti phn x l ngoi l ny m b qua phn lnh tip theo.
Sau bn thay i gi tr b=12 v chy chng trnh th lnh Console.WriteLine("dng ny c th xut hin hoc khng"); c thc hin. Tuy nhin c 2 trng hp bn thy thc hin lnh l v lnh ny c t trong khi Finally. Console.WriteLine("ng tp.");
Nm c cch x l ngoi l qua vic s dng cc cu lnh throw, catch v finally s gip bn lp trnh c hiu qu hn.
Bi 8:Lp v i tng
1. Lp v i tng
a. Lp (class) Mt lp l mt khi nim m t cho nhng thc th c chung tnh cht v hnh vi. Lp nh ngha nhng thuc tnh v hnh vi c dng cho nhng i tng ca lp . Do c th ni lp l mt khun mu cho cc i tng. Cng thc to mt class AccessModifier class className { // thn class } V d ti nh ngha mt class l color, class ny c truy cp public public class Color { // Ni dung class } b. 41 i tng http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ i tng l mt i din, hay c th ni l mt sn phm ca mt class. Tt c cc i tng u c chung nhng thuc tnh v hnh vi m class nh ngha. Cch to i tng ging nh cch to mt bin c kiu d liu l Class. V d ti mun khai bo mt i tng c l th hin ca class color ni trn. Ti lm nh sau: Color c = new Color(); Sau t i tng c ny ti s truy cp n cc thnh phn ca class thng qua ton t . (M ti gii thiu bi hc s 2). Tuy nhin vic truy cp cc thnh phn ca class cn ty thuc vo thnh phn l instance hay static. Bn s c tm hiu khi nim ny phn tip theo ca bi hc. c. u im khi s dng lp v i tng trong lp trnh
C mt s nhng u im ca vic s dng Class v i tng trong pht trin phn mm. Nhng u im ni bt nht c lit k nh sau: Duy tr code bng vic m hnh ha ng gi nhng s phc tp trong m lnh t ngi dng Kh nng s dng li Cung cp n k tha thc thi nhiu phng thc. Cc bn s hiu hn v iu ny cc bi hc sau ca chng ti v inheritance (s tha k) hay polymorphism ( Tnh a hnh ). 2. Khi nim thnh vin th hin (instance) v thnh vin tnh(static) Trong mt lp , cc thnh vin c th l instance (thnh vin th hin) hoc static (thnh vin tnh). Mt thnh vin instance c ngha l thnh vin lin quan n th hin ca mt kiu d liu. Thnh vin static c xem nh mt phn ca lp. Chng ta truy cp n thnh vin tnh ca mt lp thng qua tn lp c khai bo. Cn cc thnh vin instance th phi thng qua th hin ca lp. Gi s chng ta c mt lp l class A v c 2 th hin l t1, t2 v mt phng thc tnh l a(). truy cp phng thc ny ta vit A.a(). Ch khng th vit t1. a() hoc t2.a() v trong C# khng cho php truy cp n phng thc cng nh cc bin thnh vin tnh thng qua mt th hin. Mt s ngn ng th c s phn chia gia phng thc ca lp v cc phng thc khc (ton cc) tn ti bn ngoi khng ph thuc bt c mt lp no. Tuy nhin, iu ny khng cho php trong C#, ngn ng C# khng cho php to cc phng thc bn ngoi ca lp, nhng ta c th to c cc phng thc ging nh vy bng cch to cc phng thc tnh bn trong mt lp. Phng thc tnh t nhiu ging phng thc ton cc bi ta c th truy cp n n khng phi thng qua bt c mt th hin no ca lp cha n. Tuy nhin phng thc tnh s hot ng tt hn phng 42 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ thc ton cc v n lun c t trong phm vi mt lp do chng ta s trnh c tnh trng ln xn do b trng tn gia cc phng thc t trong namespace.
3.
Field l mt phn t dng th hin cc bin trong lp cc bin hoc cc th hin ca mt lp d: class Color { internal ushort redPart; internal ushort bluePart; internal ushort greenPart; public Color(ushort red, ushort blue, ushort green) { redPart = red; bluePart = blue; greenPart = green; } } Lp color cha cc instance fields nh l redPart, bluePart, v greenPart. Fields c th l static nh v d di y:
Class Color { public static public static public static public static ... }
Red = new Color(0xFF, 0, 0); Blue = new Color(0, 0xFF, 0); Green = new Color(0, 0, 0xFF); White = new Color(0xFF, 0xFF, 0xFF);
Property (thuc tnh, c tnh) l mt phn t dng truy cp n c im ca mt i tng hoc mt class (lp). V d nh l di mt chui, kch c ca font ch, rng ca mt ca s, tn ca mt customer Property l phn m rng ca fields. C 2 u c gi tn vi cc kiu kt hp, v cch truy cp n fields v properties l nh nhau. Tuy nhin khc vi fields, 43 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ properties khng ch r ni lu tr n. Thay vo , properties c cch truy nhp l dng cu lnh thi hnh vic c v ghi gi tr. Property c nh ngha bng 2 phn. Phn th nht ging nh cch nh ngha Fields. Phn th 2 cha phn t truy cp get v set. Cc bn hy xem v d di y :
public class Button { private string caption; public string Caption { get { return caption; } set { caption = value; Repaint(); } } } c. Methods Bn s c hc v methods bi sau
1. Khi nim v method Method (Ting vit gi l hm hoc phng thc) l mt thnh phn ca class dng thc thi mt cng vic no ca mt i tng hoc mt class. Mt method s cha mt danh sch cc i s(hoc c th khng c i s), mt gi tr tr v (tr void method). Method c th l static (tnh) hoc non- static (hay l instance method- phng thc th hin). y l v d v method:
public class Stack { public static Stack Clone(Stack s) {...} public static Stack Flip(Stack s) {...} public object Pop() {...} public void Push(object o) {...} public override string ToString() {...} ... 44 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ } class Test { static void Main() { Stack s = new Stack(); for (int i = 1; i < 10; i++) s.Push(i); Stack flipped = Stack.Flip(s); Stack cloned = Stack.Clone(s); Console.WriteLine("Original stack: " + s.ToString()); Console.WriteLine("Flipped stack: " + flipped.ToString()); Console.WriteLine("Cloned stack: " + cloned.ToString()); } } Class Stack c 2 phng thc tnh (static method) l Clone v Flip v cc phng thc th hin l Push, Push, Pop, and ToString. Mt ln na bn thy cc phng thc tnh c gi trc tip t tn ca lp cn phng thc th hin phi c gi qua th hin ca lp. Phng thc c th c overloaded . C ngha l nhiu methods c tn ging nhau. Bn s c hc v overloading methods trong bi ti. 2. Truyn tham s cho method Vic truyn tham s vo cho phng thc ch c thc hin i vi cc kiu d liu gi tr. Vy cch thc truyn tham s s c thc hin nh th no? Trong C# cc tham s c truyn vo hm thng qua 2 cch l truyn theo gi tr (truyn tham tr) v truyn theo a ch (truyn tham chiu). Chng ta s ln lt tm hiu hai cc truyn ny. a. Truyn tham tr Khi mt i tng c kiu gi tr c truyn gi tr vo cho mt phng thc th c mt bn sao chp i tng c to ra bn trong phng thc. Khi phng thc thc hin xong th i tng sao chp ny s c hy. Di y l v d v cch truyn tham tr:
using System; public class Time { public void DisplayCurrentTime() { Console.WriteLine("{0}/{1}/{2}/ {3}:{4}:{5}", Date, Month, Year, Hour, Minute, Second); } public int GetHour() 45 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ { return Hour; } public void GetTime(int h, int m, int s) { h = Hour; m = Minute; s = Second; } public Time( System.DateTime dt) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second; } private int Year; private int Month; private int Date; private int Hour; private int Minute; private int Second; } public class Tester { static void Main() { System.DateTime currentTime = System.DateTime.Now; Time t = new Time( currentTime); t.DisplayCurrentTime(); int theHour = 0; int theMinute = 0; int theSecond = 0; t.GetTime( theHour, theMinute, theSecond); System.Console.WriteLine("Current time: {0}:{1}:{2}", theHour, theMinute, theSecond); } }
Su tm v edit bi Oki@kimur@
Nh cc bn thy kt qu in ra Current time: 0:0:0 tc l cc bin theHour, theMinute, theSecond vn gi nguyn gi tr ca n sau hm GetTime. b. Truyn tham chiu
Nh ti ni trn, mi phng thc s c mt gi tr duy nht c tr v, mc d gi tr ny c th l mt tp hp cc gi tr. i khi chng ta mun phng thc tr v nhiu hn mt gi tr. Cch thc hin l to ra cch tham s di hnh thc tham chiu. Khi bn truyn tham chiu, trong phng thc bn s x l v gn cc gi tr mi cho cc tham chiu ny v kt qu l sau khi phng thc thc hin xong ta dng cc tham s truyn vo nh l cc kt qu tr v. lm vic ny bn phi thm t kha ref (vit tt ca reference) vo trc cc tham s trong phn khai bo phng v li gi phng thc. V d cc bin theHour, theMinute, theSecond trong v d trn sau khi c x l trong GetTime s c gi tr nh chng va c gn, chng ta s phi lm nh sau: u tin thm khai bo ref vo trc cc tham s trong phng thc GetTime(): public void GetTime(ref int h, ref int m, ref int s) { h = Hour; m = Minute; s = Second; } Tip theo l s gi phng thc GetTime di dng truyn tham chiu nh sau:
Tm li c ch truyn tham s dng tham chiu s thc hin trn chnh i tng c a vo. Cn c ch truyn tham s gi tr th s to ra cc bn sao cc i tng c truyn vo, do mi thay i bn trong phng thc khng lm nh hng n cc i tng c truyn vo di dng gi tr.
Su tm v edit bi Oki@kimur@
Function Overloading da trn kiu gi tr tham s truyn vo. Function Overloading da trn s lng tham s truyn vo.
V d
class Library { // Function Overloading public void insertbooks(int id) { // } public void insertbooks(int id, int type) { // } public void insertbooks(string id, int type) { // } }
Ba hm insertbooks trn l mt v d v function overloading trong lp trnh C#. Trong khi hm th nht v th 2 l overloading theo s lng tham s, v hm th 3 vi hm th 2 l overloading theo kiu tham s truyn vo. Bi 11:constructor & Destructor Ni dung bi hc
Su tm v edit bi Oki@kimur@ { private int ibooktypes; //Constructor public Library() { ibooktypes = 7; } public Library(int value) { ibooktypes = value; } }
b.
Destructor
Destructor (tm dch l phng thc hy) l mt hm dng hy i mt th hin ca mt class. Destructor khng c i s, khng c t ch thuc tnh truy nhp, v khng c gi tng minh. Destructor ca mt th hin s c gi t ng khi mt th hin kt thc vng i ca n thng qua b thu dn rc t ng (Garbage Collection). Destructor cng c tn trng vi tn class. khai bo mt destructor chng ta t du ~ vo trc destructor V d class Library { private int ibooktypes; //Constructor public Library() { ibooktypes = 7; } public Library(int value) { ibooktypes = value; } //Destructor ~ Library() { //thc thi cu lnh } } ~Library() l destructor ca lp Library 49 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
2. Instance constructor v Static constructor Nh bi hc trc ti gii thiu, Cc thnh phn trong class c th l instance v static. Constructors cng l mt thnh phn ca class, vy Instance constructors v Static constructors c g khc nhau? Chng ta s cng tm hiu. a. Instance constructor Mt instance constructor( tm dch l mt b khi dng th hin) s khi to mt s gi tr khi mt th hin ca mt lp c to ra.
V d: class Point { public double x, y; public Point() { this.x = 0; this.y = 0; } public Point(double x, double y) { this.x = x; this.y = y; } public static double Distance(Point a, Point b) { double xdiff = a.x b.x; double ydiff = a.y b.y; return Math.Sqrt(xdiff * xdiff + ydiff * ydiff); } public override string ToString() { return string.Format("({0}, {1})", x, y); } } class Test { static void Main() { Point a = new Point(); Point b = new Point(3, 4); double d = Point.Distance(a, b); 50 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Console.WriteLine("Distance from {0} to {1} is {2}", a, b, d); } } Trong lp Point c 2 instance constructors. Mt khng c i s truyn vo v 2 constructor cn li c 2 tham s kiu double. Nu class khng c instance constructor no th constructor khng c i s s c gi t ng. b. Static constructor
Nu mt lp khai bo mt phng thc khi to tnh (static constructor), th c m bo rng phng thc ny s c thc hin trc bt c th hin no ca lp c to ra. Static Constructor hu dng khi chng ta cn ci t mt s cng vic m khng th thc hin c thng qua chc nng khi dng v cng vic ci t ny ch c thc duy nht mt ln. Static constructor khng c thuc tnh truy cp, khng c i s v khng c gi tng minh m s c gi t ng. V d: sing System; using Personnel.Data; class Employee { private static DataSet ds; static Employee() { ds = new DataSet(...); } public string Name; public decimal Salary; ... } Khi i tng ds s c to ra khi trc khi ta to mt th hin Bi 12: Inheritance - S k tha C 2 kiu k tha trong lp trnh hng i tng l n k tha (k tha t nhiu lp) v a k tha (k tha t nhiu lp). C# ch cung cp m hnh n k tha. V d v k tha trong C#.
lp emplyee.
/* V d v tha k trong l trnh C# */ using System; using System.Collections.Generic; using System.Text; namespace __OOP_Inheritance 51 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ { class Program { static void Main(string[] args) { Dog objDog = new Dog(4); objDog.displayProperties(); Chicken objChicken = new Chicken(2); objChicken.displayProperties(); Console.Read(); } } class Animal { protected int ifoots; protected string sName; protected void setFoot(int ival) { ifoots = ival; } protected void setName(string sVal) { sName = sVal; } public void displayProperties() { Console.WriteLine(sName + " have " + ifoots.ToString()+ " foots"); } } class Dog : Animal { public Dog(int ival) { setName("Dog"); ifoots = ival; } } class Chicken : Animal { public Chicken(int ival) { setName("Chicken"); setFoot(ival); } } 52 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ }
v d trn, Dog v Chicken l hai lp k tha t lp Animal, do cc thuc tnh nh s chn, ifoots v tn sName ng nhin xut hin trong hai lp ny v cho php s dng. Tng t, cc hm nh setName(), setFoot(), displayProperties() ti lp Animal cng c k tha xung hai lp Dog v Chicken. Do ta c th gi nhng hm ny, v kt qu hin th khi gi hm displayProperties() theo i tng objDog v objChicken khc nhau nh hnh trn. Mt lu trong tha k y l Overriding method. Nu mt hm c nh ngha trong lp con c cng tn, kiu vi hm trong lp cha, khi y hm trong lp con s overrides (lm n) hm trong lp cha. c gi l overriding. V d v Overriding:
/* V d v tha k,overrding trong lp trnh C# */ using System; using System.Collections.Generic; using System.Text; namespace __OOP_Inheritance { class Program { static void Main(string[] args) { Dog objDog = new Dog(4); objDog.displayProperties(); Chicken objChicken = new Chicken(2); objChicken.displayProperties(); Tiger objTiger = new Tiger(4); objTiger.displayProperties(); Console.Read(); } } class Animal { 53
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ protected int ifoots; protected string sName; protected void setFoot(int ival) { ifoots = ival; } protected void setName(string sVal) { sName = sVal; } public virtual void displayProperties() // ch hm ny { Console.WriteLine(sName + " has " + ifoots.ToString()+ " foots"); } } class Dog : Animal { public Dog(int ival) { setName("Dog"); ifoots = ival; } } class Chicken : Animal { public Chicken(int ival) { setName("Chicken"); setFoot(ival); } public void displayProperties() { base.displayProperties(); Console.WriteLine(sName + " have " + ifoots.ToString() + " foots (from Chicken class)"); } } class Tiger : Animal { public Tiger(int ival) { setFoot(ival); } public override void displayProperties() // ch hm ny 54 http://www.itgatevn.com.vn
Bi 13: Polymorphism
V d v polymorphism:
using System; using System.Collections.Generic; using System.Text; namespace __OOP_polymorphism { class Program { static void Main(string[] args) { Child objchild = new Child(); Console.WriteLine("Result is " + objchild.methodA().ToString()); Console.Read(); } } class Parent { public int methodA() { return methodB() * methodC(); } public virtual int methodB() 55 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ { return 1; } public int methodC() { return 2; } } class Child : Parent { public override int methodB() { return 3; } } }
Nh bnh thng ca m hnh k tha, kt qu tr v khi gi hm methodA() t i tng ca lp Child phi l Result is 2. Nhng trong kt qu trn, kt qu l Result is 6. Kt qu ny do hm methodB() ti lp Child override hm methodB() ti lp Parent. Vy ta c th khi qut Polymorphism nh sau:
Polymorphism khng ch n gin l overriding, m n l overrding thng minh. Khc bit gi Overriding v Polymorphism l trong Polymorphism, s quyt nh gi hm c thc hin khi chng trnh chy.
56
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ abstract class Shape { public abstract float calculateArea(); public void displaySomething() { Console.WriteLine("Something is displayed"); } } class Circle:Shape { float radius; public override float calculateArea() { return radius * 22 / 7; } } Khi thc thi chng trnh, bn khng th to i tng cho lp Shape, v n l abstract class.
Bi 15: Interface
1. nh ngha interface (giao din)
Giao din l rng buc, giao c m bo cho cc lp hay cc cu trc s thc hin mt iu g . Khi mt lp thc thi mt giao din, th lp ny bo cho cc thnh phn client bit rng lp ny c h tr cc phng thc, thuc tnh, s kin v cc ch mc khai bo trong giao din. Mt giao din th ging nh mt lp ch cha cc phng thc tru tng. Mt lp tru tng c dng lm lp c s cho mt h cc lp dn xut t n. Trong khi giao din l s trn ln vi cc cy k tha khc.
[thuc tnh] [phm vi truy cp] interface <tn giao din> [: danh sch c s] 57 http://www.itgatevn.com.vn
Phn thuc tnh chng ta cha cp ti cc bn hy lu n phn phm vi truy cp bao gm public, private, protected, internal, v protected internal c ni n. Theo sau t kha interface l tn ca giao din. Thng thng tn ca giao din c bt u vi t I hoa (iu ny khng bt buc nhng vic t tn nh vy rt r rng v d hiu, trnh nhm ln vi cc thnh phn khc). Danh sch c s l danh sch cc giao din m giao din ny m rng, phn ny s c trnh by trong phn thc thi nhiu giao din. Phn thn ca giao din chnh l phn thc thi giao din.
2.
Gi s chng ta mun to mt giao din nhm m t nhng phng thc v thuc tnh ca mt lp cn thit lu tr v truy cp t mt c s d liu hay cc thnh phn lu tr d liu khc nh l mt tp tin. Chng ta quyt nh gi giao din ny l IStorage. Trong giao din ny chng ta xc nhn hai phng thc: Read() v Write(), khai bo ny s c xut hin trong phn thn ca giao din nh sau:
Mc ch ca mt giao din l nh ngha nhng kh nng m chng ta mun c trong mt lp. V d, chng ta c th to mt lp tn l Document, lp ny lu tr cc d liu trong c s d liu, do chng ta quyt nh lp ny ny thc thi giao din IStorable. lm c iu 58 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ ny, chng ta s dng c php ging nh vic to mt lp mi Document c tha k t IStorable bng dng du hai chm (:) v theo sau l tn giao din:
public class Document : IStorable { public void Read() { //... } public void Write() { //... } }
using System; // khai bo giao din interface IStorable { // giao din khng khai bo b sung truy cp // phng thc l public v khng thc thi void Read(); void Write(object obj); int Status { get; set; } 59 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ } // to mt lp thc thi giao din IStorable public class Document : IStorable { public Document( string s) { Console.WriteLine("Creating document with: {0}", s); } // thc thi phng thc Read() public void Read() { Console.WriteLine("Implement the Read Method for IStorable"); } // thc thi phng thc Write public void Write( object o) { Console.WriteLine("Impleting the Write Method for IStorable"); } // thc thi thuc tnh public int Status { get { return status; } set { status = value; } } // lu tr gi tr thuc tnh 60 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ private int status = 0; } public class Tester { static void Main() { // truy cp phng thc trong i tng Document Document doc = new Document("Test Document"); doc.Status = -1; doc.Read(); Console.WriteLine("Document Status: {0}", doc.Status); // gn cho mt giao din v s dng giao din IStorable isDoc = (IStorable) doc; isDoc.Status = 0; isDoc.Read(); Console.WriteLine("IStorable Status: {0}", isDoc.Status); Console.ReadLine();
} }
3.
Trong ngn ng C# cho php chng ta thc thi nhiu hn mt giao din. V d, nu lp Document c th c lu tr v d liu cng c nn. Chng ta c th chn thc thi c hai giao din IStorable v ICompressible. Nh vy chng ta phi thay i phn khai bo trong danh sch c s ch ra rng c hai giao din iu c thc thi, s dng du phy (,) phn cch gia hai giao din:
61
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ Khi lp Document phi thc hin y cc method c xc nhn trong ICompressible.
4.
C# cung cp chc nng cho chng ta m rng mt giao din c bng cch thm cc phng thc v cc thnh vin hay b sung cch lm vic cho cc thnh vin. V d, chng ta c th m rng giao din ICompressible vi mt giao din mi l ILoggedCompressible. Giao din mi ny m rng giao din c bng cch thm phng thc ghi log cc d liu lu:
5. Kt hp giao din
Mt cch tng t, chng ta c th to giao din mi bng cch kt hp cc giao din c v ta c th thm cc phng thc hay cc thuc tnh cho giao din mi. V d, chng ta quyt nh to mt giao din IStorableCompressible. Giao din mi ny s kt hp nhng phng thc ca c hai giao din v cng thm vo mt phng thc mi lu tr kch thc nguyn thu ca cc d liu trc khi nn:
Cc bn c lm quen vi mt khi nim na trong C# l giao din (interface). Cch nh ngha v thc thi mt interface, cc thc thi nhiu interface, m rng v kt hp cc interface.
62
http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
Trong bi ny chng ta s tm hiu cch nh ngha v lm vic vi kiu cu trc v cch s dng Constructror khi to nhng gi tr ca cu trc.
nh ngha mt struct
[thuc tnh] [b sung truy cp] struct <tn cu trc> [: danh sch giao din] { [thnh vin ca cu trc] }
V d sau minh ha cch to mt cu trc. using System; public struct Location { public Location( int xCoordinate, int yCoordinate) 63 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ { xVal = xCoordinate; yVal = yCoordinate; } public int x { Get { return xVal; } set { xVal = value; } } public int y { get { return yVal; } set { yVal = value; } } public override string ToString() { return (String.Format({0}, {1}, xVal, yVal)); } // thuc tnh private lu to x, y 64 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ private int xVal; private int yVal; } public class Tester { public void myFunc( Location loc) { loc.x = 50; loc.y = 100; Console.WriteLine(Loc1 location: {0}, loc); } static void Main() { Location loc1 = new Location( 200, 300); Console.WriteLine(Loc1 location: {0}, loc1); Tester t = new Tester(); t.myFunc( loc1 ); Console.WriteLine(Loc1 location: {0}, loc1); } }
Struct khng h tr tha k. Struct c tha k t lp object nhng khng th tha k t cc lp khc hay cc struct khc. Struct lun c ngm nh l sealed, ngha l khng c lp hay struct no c th k tha n. Tuy nhin struct c th thc thi nhiu giao din nh class. Struct khng c constructor v destructor mc nh. Khng cho php khi to cc trng th hin ( instance fields) trong struct v th on m sau s khng hp l: private int xVal = 20; private int yVal = 50; 65 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@
To struct:
Chng ta to mt th hin ca struct bng cch s dng t kha new trong cu lnh gn, nh khi chng ta to mt i tng ca lp. Nh trong v d, lp Tester to mt th hin ca Location nh sau:
Location loc1 = new Location( 200, 300); y mt th hin mi tn l loc1 v n c truyn hai gi tr l 200 v 300.
Struct l mt kiu gi tr v c lu tr trn stack. Chng ta cng c th truyn struct vo hm nh cc tham s khc.
Trnh c s trng lp tn gia cc class. Cho php t chc m ngun mt cch c khoa hc v hp l.
Khai bo mt Namespace namespace NamespaceName { // ni cha ng tt c cc class } Trong , Namespace: l t kha khai bo mt NameSpace NamespaceName: l tn ca mt Namespace V d
Bi 18: Luyn tp (Phn ngn ng C#) Hy nh li bi hc u tin, bn c hc cch m mt ng dng console trong Visual Studio.net v g nhng dng code u tin Hello C#. Gi y bn hon ton lm ch c ngn ng ny ri. Chng ta hy cng im li nhng kin thc trng tm ca ton kha hc qua bi n tp ny. I. Nhc li nhng c im ca ngn ng C# C# l mt sn phm ca microsoft, l mt ngn ng hng i tng kh thn thin v mm do m bn c th s dng xy dng cc ng dng destop hay web. C# c sn cc th vin vi cc hm h tr mnh cho vic lp trnh. Bn cn phi nh mt s nguyn tc sau:
C# l ngn ng phn bit hoa thng Quy tc t tn trong C# Quy tc vit ch thch. Cch khai bo cc th vin dng trong chng trnh
II. Cc kiu d liu trong c# C# c 2 loi d liu l d liu kiu value v d liu ki reference. Kiu value hu ht l nhng kiu c sn cn kiu reference hu ht l nhng kiu do ngi dng nh ngha. Bng di y tng hp cc kiu d liu c xy dng sn: Kiu object string sbyte short int long byte 67 Khai bo object o = null; string s = "hello"; sbyte val = 12; short val = 12; int val = 12; long val1 = 12; long val2 = 34L; byte val1 = 12; http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ ushort uint ushort val1 = 12; uint val1 = 12; uint val2 = 34U; ulong val1 = 12; ulong val2 = 34U; ulong val3 = 56L; ulong val4 = 78UL; float val = 1.23F; double val1 = 1.23; double val2 = 4.56D; bool val1 = true; bool val2 = false; char val = 'h'; decimal val = 1.23M;
ulong
Bng sau s tng hp li ton b cc loi lnh ca C# Cu lnh Cu lnh n v khi lnh V d minh ha static void Main() { F(); G(); { H(); I(); } } static void Main(string[] args) { if (args.Length == 0) goto done; Console.WriteLine(args.Length); done: Console.WriteLine("Done"); } static void Main() { const float pi = 3.14f; const int r = 123; Console.WriteLine(pi * r * r); } static void Main() { int a; int b = 2, c = 3; a = 1; http://www.itgatevn.com.vn
68
Su tm v edit bi Oki@kimur@ Console.WriteLine(a + b + c); Cc biu thc lnh (Expression Statement) } static int F(int a, int b) { return a + b; } static void Main() { F(1, 2); // Expression statement } static void Main(string[] args) { if (args.Length == 0) Console.WriteLine("No args"); else Console.WriteLine("Args"); } static void Main(string[] args) { switch (args.Length) { case 0: Console.WriteLine("No args"); break; case 1: Console.WriteLine("One arg "); break; default: int n = args.Length; Console.WriteLine("{0} args", n); break; } } static void Main(string[] args) { int i = 0; while (i < args.Length) { Console.WriteLine(args[i]); i++; } } static void Main() { string s; do { s = Console.ReadLine(); } while (s != "Exit"); } static void Main(string[] args) { for (int i = 0; i < args.length; i++) Console.WriteLine(args[i]); } static void Main(string[] args) { foreach (string s in args) http://www.itgatevn.com.vn
Lnh If
Lnh Switch
Lnh While
Lnh DoWhile
Lnh For
Lnh foreach 69
Su tm v edit bi Oki@kimur@ Console.WriteLine(s); Lnh break } static void Main(string[] args) { int i = 0; while (true) { if (i == args.Length) break; Console.WriteLine(args[i++]); } } static void Main(string[] args) { int i = 0; while (true) { Console.WriteLine(args[i++]); if (i < args.Length) continue; break; } } static int F(int a, int b) { return a + b; } static void Main() { Console.WriteLine(F(1, 2)); return; } static int F(int a, int b) { if (b == 0) throw new Exception("Divide by zero"); return a / b; } static void Main() { try { Console.WriteLine(F(5, 0)); } catch(Exception e) { Console.WriteLine("Error"); } }
Lnh continue
Lnh return
70
http://www.itgatevn.com.vn
Khi nim v lp v i tng Lp l mt khi nim m t cho nhng thc th c chung tnh cht v hnh vi c th ni lp l mt khun mu cho cc i tng. Cn i tng l nhng i din cho lp, mi i tng u c chung tnh cht v hnh vi m lp nh ngha. Cc thnh phn ca lp Cc thnh phn ca lp gm: Fields, properties v Methods v cc thnh phn ny c phn lm 2 loi l static v instance.
Trong : Fields l cc phn t dng th hin cc bin trong lp. Properties l phn t dng truy cp n c im ca mt i tng hoc mt class. Properties
c nh ngha bng 2 phn, phn th nht ging nh nh ngha Fields, phn th 2 c thm 2 phn t get v set.
Methods hay phng thc chnh l cc hnh vi c nh ngha trong class. N dng thc
hin mt cng vic no ca mt i tng hay mt class. Khi hc v method bn cn c bit lu n cc vn v Methods overloading, Constructor, Destructor v cch truyn tham s cho method. Lp Abstract class v Sealed class L 2 lp c bit ca C# trong :
Abstract class l lp cha phng thc Abstract hay phng thc o- tc l cc phng thc ch
c khai bo ch khng thc thi hnh ng no. Abstract class ch c dng lm lp cha cho cc lp k tha.
Khi nim v Struct Struct l mt kiu d liu n gin do ngi dng nh ngha, c kch thc nh v c th c dng thay cho lp. Struct cng cha nhng thnh phn tng t nh lp. Cch khai bo v s dng 71 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ [thuc tnh] [b sung truy cp] struct <tn cu trc> [: danh sch giao din] { [thnh vin ca cu trc] } Phn bit Struct vi Class Struct l kiu d liu gi tr cn class l kiu tham chiu. Struct lun c mc nh l sealed khng h tr inheritance, constructor v destructor. Nhng struct cng c th thc thi nhiu giao din nh class. 3. Inheritance
Khi nim v Inheritance Inheritance l vic mt class c th k tha (s dng li) cc thuc tnh v cc phng thc c nh ngha t mt class khc. Khi class k tha c gi l lp dn xut hay lp con cn lp c k tha l lp c s hay lp cha. Khai bo v s dng Inhertance. Khai bo lp B k tha lp A: class A {} class B: A {} 4. Overriding method v Polimorphysm
Phn bit gia Overriding method v Polimorphysm Overrding methed l mt hm cng tn cng kiu c khai bo trong lp con v s override hm trong lp cha. Polimorphysm khng ch override hm trong lp cha m n cn override thng minh. S khc bit quan trng gia Overriding method v Polimorphysm l trong Polimorphysm vic quyt nh gi hm c thc hin khi chng trnh chy. 5. Interface
Giao din l rng buc, giao c m bo cho cc lp hay cc cu trc s thc hin mt iu g . Khi mt lp thc thi mt giao din, th lp ny bo cho cc thnh phn client bit rng lp ny c h tr cc phng thc, thuc tnh, s kin v cc ch mc khai bo trong giao din. Khai bo mt giao din: 72 http://www.itgatevn.com.vn
Su tm v edit bi Oki@kimur@ [thuc tnh] [phm vi truy cp] interface <tn giao din> [: danh sch c s] { <phn thn giao din> } 6. Namespace
Ta c th hiu Namespace l mt gi nhng thc th c thuc tnh v hnh vi c lp vi bn ngoi. Khai bo mt Namespace namespace NamespaceName { // ni cha ng tt c cc class } Trong , Namespace: l t kha khai bo mt NameSpace. NamespaceName: l tn ca mt Namespace.
Ht Chc cc bn hc tt ^^!
73
http://www.itgatevn.com.vn