Cong Nghe NET

Embed Size (px)

Citation preview

Mn hc

Cng ngh .NETGV: Phm Vn Thun B mn K thut My tnh Khoa CNTT- H BKHN email: [email protected]

1

Mc tiu mn hc Sau khi kt thc mn hc ny, sinh vin c th Trnh by c c trng c bn ca cng ngh .NET Trnh by c k thut lp trnh hng i tng s dng ngn ng C#.NET Lp trnh c mt ng dng Windows Form s dng ngn ng C#.NET, kt ni vi c s d liu SQL Server, lp bo co s dng cng c Crystal Report. Lp trnh ng dng Web s dng ASP.NET Tm hiu mt s cng ngh mi trn nn tng .NET2

Lp trnh C#.NET

Ti liu tham kho chnh: Programming C#, 4th Edition, Jesse Liberty Pro .NET 2.0 Windows Forms and Custom Controls in C#, Matthew MacDonald Professional C#, 2nd Edition, Wrox Press Ltd (Bn dch ting Vit)

3

Lp trnh C#.NET

Ni dung mn hcChng 1: Gii thiu C# v .NET Framework Chng 2: Gii thiu mi trng pht trin ng dng Visual Studio .NET 2005 Chng 3: C# cn bn Chng 4: Hng i tng trong C# Chng 5: Lp trnh Windows Form vi C# Chng 6: ASP.NET

4

Lp trnh C#.NET

Ni dung mn hcChng 1: Gii thiu C# v .NET Framework Chng 2: Gii thiu mi trng pht trin ng dng Visual Studio .NET 2005 Chng 3: C# cn bn Chng 4: Hng i tng trong C# Chng 5: Lp trnh Windows Form vi C# Chng 6: ASP.NET

5

Lp trnh C#.NET

Ni dung chng 11.1. Nn tng .NET (.NET Flatform) 1.2. Kin trc .NET (.NET Framework) 1.3. Bin dch trong .NET 1.4. Ngn ng lp trnh C#

6

Lp trnh C#.NET

1.1. Nn tng .NET (.NET Flatform).NET Platform l nn tng pht trin: - Cung cp giao din lp trnh (API) cho cc dch v (services) v cc hm API truyn thng ca h iu hnh Windows - Cung cp mt nn tng pht trin chung cho nhiu ngn ng lp trnh khc nhau ca Microsoft: C#, Visual J#, Visual Basic

7

Lp trnh C#.NET

Nn tng .NET (.NET Flatform).NET Platform bao gm cc nhm sn phm Tp hp cc ngn ng (C#, VB), mt tp hp cc cng c pht trin bao gm Visual Studio .NET, th vin pht trin cc ng dng web (web and web services), cc ng dng Windows cng nh mi trng thc thi chung (Common Language Runtime (CLR)) Nn tng .NET 2.0 khng ch h tr cc ng dng trn my tnh c nhn, my ch m cn h tr cc thit b nhng (Cell phones, game boxes)8

Lp trnh C#.NET

1.2. Kin trc .NET (.NET Framework) Microsoft .NET h tr nhiu ngn ng khc nhau nh h thng - Common Type System (CTS) Quy nh nhng yu cu ti thiu mt ngn ng lp trnh c th tch hp vo .NET Common Language Specification (CLS) Kin trc .NET l tng ngay trn h iu hnh, bao gm: 5 ngn ng lp trnh chnh thc: C#, VB, VC++, Visual J# v Jscript.NET CLR (Common Language Runtime) Cc th vin lp trnh9

Lp trnh C#.NET

.NET Framework

10

Lp trnh C#.NET

1.3. Bin dch trong .NET .NET khng bin dch trc tip cc chng trnh thnh file thc thi. .NET bin dch cc chng trnh thnh cc assembly, cha cc m chng trnh trung gian ca Microsoft (Microsoft Intermediate Language MSIL) CLR s dch mt ln na, s dng chng trnh bin dch Just In Time (JIT) chuyn cc m MSIL sang m my v thc thi11

Lp trnh C#.NET

Bin dch trong .NET

12

Lp trnh C#.NET

1.4. Ngn ng lp trnh C# C# c pht trin bi nhm tc gi iu hnh bi Anders Hejlsberg v Scott Wiltamuth, tc gi ca Turbo Pascal v Borland Delphi. C# l ngn ng lp trnh hng i tng (Object Oriented Language) H tr nh ngha v lm vic vi lp (class) H tr y ba c ch c trng ca lp trnh hng i tng: ng gi (encapsulation), k tha (inheritance) v a hnh (polymorphism)13

Lp trnh C#.NET

Ni dung mn hcChng 1: Gii thiu C# v .NET Framework Chng 2: Gii thiu mi trng pht trin ng dng Visual Studio .NET 2005 Chng 3: C# cn bn Chng 4: Hng i tng trong C# Chng 5: Lp trnh Windows Form vi C# Chng 6: ASP.NET

14

Lp trnh C#.NET

Ni dung chng 22.1. Mi trng pht trin ng dng .NET 2.2. Chng trnh Hello World 2.3. Mi trng pht trin ng dng Visual Studio .NET

15

Lp trnh C#.NET

2.1. Mi trng pht trin ng dng .NET

Mi trng thc thi ng dng .NET: Microsoft .NET Framework http://www.microsoft.com/downloads/

Trnh son tho v bin dch- Visual Studio .NET IDE - Trnh son tho vn bn (Notepad, UltraEdit) & Trnh bin dch bng dng lnh (Command-line compiler)

16

Lp trnh C#.NET

2.2. Chng trnh Hello World1) M chng trnh Visual Studio .NET 2005 2) To mt d n mi vi kiu ng dng console(HelloWorld)

17

Lp trnh C#.NET

Chng trnh Hello WorldChng trnh s t to mt khung d n Thm dng code n gin hin th thng bo helloworld ra mn hnh Bm F6 bin dch, F5 chy18

Lp trnh C#.NET

Chng trnh Hello World

Kt qu khi chy chng trnh Hello World19

Lp trnh C#.NET

Mt s khi nim c bn trong C# Ch thch Ch thch trn mt dng dng // Ch thch trn nhiu dng dng /* */ Trnh bin dch b qua ch thch Ch dng cho ngi c Nhm cc tnh nng c lin quan ca C# vo mt loi Cho php d dng ti s dng m Trong th vin .NET framework c nhiu khng gian tn Phi tham chiu ti s dng20

Namespaces (Khng gian tn)

Lp trnh C#.NET

Mt s khi nim c bn trong C# K t cch trng (White Space) Cha cc khong trng, k t xung dng v tabs T kho (Keywords) Cc t khng c dng lm tn bin,tn lp hay bt k th g khc C cc chc nng c bit khng th thay i trong ngn ng V d : class Tt c cc t kho u c vit thngLp trnh C#.NET21

Mt s khi nim c bn trong C# Lp (class): nh ngha mt kiu d liu, m t mt nhm cc i tng vi cc phng thc v thuc tnh Phng thc (Method) Thuc tnh (Property)

22

Lp trnh C#.NET

Chng trnh Hello WorldUsing statementusing System; using System.Collections.Generic; using System.Text; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World"); } } }23

Namespace

Class

Static function

Code statement

Lp trnh C#.NET

2.3. Visual Studio .NET IDE 2005

Giao din lm vic chnhLp trnh C#.NET

24

G li s dng VS.NET 2005Set breakpoint -Nhn F9 hoc -Click chut tri vo bn l tri ca hng cn t breakpoint

25

Lp trnh C#.NET

G li s dng VS.NET 2005Bt u qu trnh debug: nhn F5 (Debug -> Start Debugging

26

Lp trnh C#.NET

G li s dng VS.NET 2005Xem gi tr ca cc bin, i tng

Xem gi tr cc bin, i tng ti ca s local

27

Lp trnh C#.NET

Ni dung mn hcChng 1: Gii thiu C# v .NET Framework Chng 2: Gii thiu mi trng pht trin ng dng Visual Studio .NET 2005 Chng 3: C# cn bn Chng 4: Hng i tng trong C# Chng 5: Lp trnh Windows Form vi C# Chng 6: ASP.NET

28

Lp trnh C#.NET

Ni dung chng 33.1. Kiu d liu (Types) 3.2. Bin v hng s (Variables and Constants) 3.3. Cc cu lnh v cu trc iu khin (Statements) 3.4. Cc ton t (Operators)

29

Lp trnh C#.NET

3.1. Kiu d liu (Types) C# l ngn ng nh kiu mnh: Phi nh ngha kiu d liu ca mi i tng (V d: integers, floats, strings, buttons) Trnh bin dch s kim tra v m bo ngn chn cc li do cc php gn sai kiu d liu

Phn loi d liu Phn theo phng thc nh ngha: build-in (c sn) v user-defined (ngi dng t nh ngha) Phn theo cch thc lu tr: value (tham tr) v reference (tham chiu)30

Lp trnh C#.NET

Kiu d liu (Types) Kiu tham tr (value type) Lu tr trong vng nh ngn xp (stack)

Kiu tham chiu (reference type) a ch lu tr trong ngn xp (stack) D liu thc c lu tr trong vng nh Heap

Cho php lu tr i tng c kch thc ln

31

Lp trnh C#.NET

Kiu d liu c sn (build-in type) C# h tr mt s kiu d liu c sn, mi kiu d liu ny tng ng vi mt kiu d liu h tr bi .NET CLS (Common Language System). C# c th s dng i tng do cc ngn ng khc trong b .NET to ra v ngc li (V d: VB.NET) Mi kiu d liu c kch thc xc nh

32

Lp trnh C#.NET

Kiu d liu c sn (build-in type)

33

Lp trnh C#.NET

Kiu d liu c sn (build-in type)

34

Lp trnh C#.NET

Escape Character

35

Lp trnh C#.NET

Chuyn i kiu d liu C hai cch chuyn i kiu d liu c sn Chuyn i ngm (implicity): qu trnh chuyn i din ra t ng v m bo khng b mt mt d liuV d: short x=5;int y=x;

Chuyn i tng minh (explicity) s dng ton t chuyn i (cast operator)V d: (char)65 -> chuyn i t s sang k t

36

Lp trnh C#.NET

3.2. Bin v hng s (Variables and Constants)

Bin (variable): Mt vng nh c nh kiu C th gn v thay i c gi tr Cc bin phi c khi gn trc khi s dng, nu khng, trnh bin dch s bo liint myInt; System.Console.WriteLine ("Uninitialized, myInt: {0}", myInt);

37

Lp trnh C#.NET

Hng s Hng s (Constant) L bin s nhng khng th thay i gi tr sau khi khi gn. const int myConst=32; myConst = 30;

38

Lp trnh C#.NET

Kiu lit k Kiu lit k cha mt tp hp cc hng s (enumerator list). Li ch ca enumerator Cho php nhm mt tp hp cc hng s c lin quan vi nhau -> trnh phi khai bo nhiu hng s v tng mi quan h logic gia cc hng s Lm n gin ha m chng trnhenum GoodWeather : uint { temperature=28, moisture=80, wind=5 }Lp trnh C#.NET

39

Chui (string) v cch t tn trong C# Chui l mt mng cc k t Khai bo v khi gn gi tr cho chui string myString=Test String;

Trong C#, chng ta nn t tn cc bin, cc phng thc, cc lptheo khuyn co ca Microsoft Tn bin: bt u bng ch thng (VD: someName) Tn phng thc v cc thnh phn khc: bt u bng ch hoa (VD: SomeOtherMethod)40

Lp trnh C#.NET

3.3. Cc cu lnh (statements) Mt chng trnh C# l mt dy cc cu lnh (statements) Mi cu lnh kt thc bi du ; Cc cu lnh c x l tun t theo chiu t trn xung di (tr cc cu lnh iu khin: lnh nhy, lnh lp)int x; // a statement x = 23; // another statement int y = x; // yet another statement41

Lp trnh C#.NET

Lnh nhy khng iu kin C hai trng hp pht sinh lnh nhy khng iu kin: C li gi mt phng thc: dng phng thc hin ti v chuyn sang (nhy khng iu kin) thc hin phng thc va triu gi, sau khi thc hin xong, tr v phng thc trc . S dng mt trong s cc lnh nhy khng iu kin: goto, break, continue, return hoc throw

42

Lp trnh C#.NET

Lnh nhy c iu kin Cu lnh: ifelse Cu lnh iu kin lng (Nested if) Cu lnh chn: switchcase

43

Lp trnh C#.NET

Cu lnh iu kin ifelseif (Biu thc iu kin) Cng vic 1 [else Cng vic 2]int valueOne = 10; int valueTwo = 15; if(valueOne>=valueTwo) { Console.WriteLine("Max= {0}",valueOne); } else { Console.WriteLine("Max= {0}",valueTwo); }44

Lp trnh C#.NET

Cu lnh iu kin lng (Nested if) C th c s dng trong nhng cu lnh iu kin phc tp, iu kin lng nhau.char charTest = 'z'; if (charTest < 'A') { Console.WriteLine("Khong phai chu cai hoa"); } else { if (charTest > 'Z') { Console.WriteLine("Khong phai chu cai hoa"); } else { Console.WriteLine("La chu cai hoa"); } }

45

Lp trnh C#.NET

Cu lnh chn: switchcaseswitch (biu thc cn kim tra) { case trng_hp: Cc cu lnh Lnh nhy (break, continue) [default: Cc cu lnh cho trng hp mc nh] }

46

Lp trnh C#.NET

Cu lnh chn: switchcasestatic void Main(string[] args) { const int Vietnam = 0; const int Laos = 1; const int Cambodia = 2; const int Thailand = 3; int country=Thailand; switch (country) { case Vietnam: Console.WriteLine("The Capital is Hanoi"); break; case Laos: Console.WriteLine("The Capital is Vientiane"); break; case Cambodia: Console.WriteLine("The Capital is Phnompenh"); break; default: Console.WriteLine("This country isn't belong to The Indochinese Peninsula"); break; }

47

Lp trnh C#.NET

Cu lnh chn: switchcasestatic void Main(string[] args) { string country="Vietnam"; switch (country) { case "Vietnam": Console.WriteLine("The Capital is Hanoi"); break; case "Laos": Console.WriteLine("The Capital is Vientiane"); break; case "Cambodia": Console.WriteLine("The Capital is Phnompenh"); break; default: Console.WriteLine("This country isn't belong to The Indochinese Peninsula"); break; }

48

Lp trnh C#.NET

Cc lnh lp Vng lp for Vng lp while Vng lp dowhile Vng lp foreach : s dng lp qua cc phn t ca mt mng hay mt tp hp

49

Lp trnh C#.NET

Vng lp forfor ( [initializers]; [expression]; [iterators]) statementKhi to Biu thc kim tra Lnh lp Cng vic cn thc thi for (int i=0; i= < false Ton t hoc logic (x==3) || (y==7) -> true Ton t ph nh logic !(x==3) -> true

||

!

Ch thch: d liu kim tra, x=5 v y=758

Lp trnh C#.NET

Ton t ba thnh phnconditional-expression ? expression1 : expression2 Conditional-expression: biu thc kim tra iu kin Expression1: biu thc 1, thc hin khi biu thc kim tra tr v true Expression2: biu thc 2, thc hin khi biu thc kim tra tr v false V d: int valueOne = 10; int valueTwo = 20; int maxValue = valueOne > valueTwo ? valueOne : valueTwo;59

Lp trnh C#.NET

Bi thc hnh s 1

60

Lp trnh C#.NET

Bi thc hnh s 1Bi 1: Vit mt chng trnh cho php ngi dng nhp tn ca h, sau in li tn di dng mt li cho

Bi 2: Vit mt chng trnh gi mt phng thc tnh bnh phng ca mt s

61

Lp trnh C#.NET

Bi thc hnh s 1Bi 3: Vit on chng trnh c vo mt s nguyn dng v kim tra s l chn hay l

Bi 4: Vit on chng trnh hin th bng cu chng ca s bt k (t 1 n 9)

62

Lp trnh C#.NET

Bi thc hnh s 1Bi 5: Vit chng trnh hin th mt tam gic vung cn to thnh t cc k t bt k, c di cnh nhp t bn phm

63

Lp trnh C#.NET

Ni dung mn hcChng 1: Gii thiu C# v .NET Framework Chng 2: Gii thiu mi trng pht trin ng dng Visual Studio .NET 2005 Chng 3: C# cn bn Chng 4: Hng i tng trong C# Chng 5: Lp trnh Windows Form vi C# Chng 6: ASP.NET

64

Lp trnh C#.NET

Ni dung chng 44.1. C bn v lp trnh hng i tng 4.2. Lp v i tng (Class and Object) 4.3. K thut k tha v a hnh (Inheritance and Polymorphism) 4.4. K thut chng ton t (Operator Overloading) 4.5. Cu trc struct 4.6. Interfaces 4.7. Mng, ch s v tp hp (Arrays, Indexers) 4.8. X l chui 4.9. Bt ngoi l (Handling Exception) 4.10. Delegates v EventsLp trnh C#.NET

65

4.1. C bn v lp trnh hng i tng

Quy cc thnh phn ca h thng v cc i tng Mt i tng l mt th hin ca mt lp (class)Class Loi c vng Object Con c vng 1 Con c vng 2 Con c vng 3Lp trnh C#.NET

66

Thuc tnh v phng thcLp v cc i tng thuc lp c chung cc thuc tnh (properties) v phng thc (methods) Thuc tnh (Property): kch thc, mu, gii tnh Phng thc (Method): bi, th, n

67

Lp trnh C#.NET

K tha (Inheritance)

68

Lp trnh C#.NET

Cc quan h (relationships)Cc i tng khng tn ti mt cch c lp, lun tn ti mi quan h gia n v cc i tng khc: tng qut ha (generalization) , cng tc (asscociation) Cc vt nm trong phng L hoa trn bn Bn v gh thuc nhm ni tht69

Lp trnh C#.NET

Tng qut ha (generalization)

Lp cha (fish) tng qut ha cc thuc tnh, phng thc chung ca cc lp con (Goldfish v Shark). Cc lp con cng c nhng thuc tnh, phng thc ring.70

Lp trnh C#.NET

Quan h cng tc (Association) Cc lp c lin kt (connected) hoc lin quan (related) vi nhau

Cd player + Speaker (Collaboration)

Shark eat fish

71

Lp trnh C#.NET

Quan h kt tp (Aggregation)Th hin mi quan h gia tng th (the whole) v b phn (parts) Tng th: n c vng B phn: tng con c vng

72

Lp trnh C#.NET

Quan h cu thnh (Composition) L mt dng ca quan h kt tp, tuy nhin yu cu cht ch hn Mi b phn (part) ch nm trong mt ci tng th (the whole) duy nhtVD: phng ng nh bn phi nm trong nh bn, khng th nm trong nh hng xm hay bt c ngi nh no khc

73

Lp trnh C#.NET

Quan h cu thnh (Composition) Khi ph hy ci tng th th ng thi ci b phn cng b ph hy

Ph nh

Ph phng ng

74

Lp trnh C#.NET

Quan h (relationship) S lng i tng tham gia vo quan h Quan h 1 1Mt lp hc trong mt phng hc

Quan h 1 nhiuMt gio vin c th dy nhiu lp

Quan h nhiu nhiuMt gio vin dy nhiu sinh vin Mt sinh vin hc nhiu gio vin

75

Lp trnh C#.NET

Tnh a hnh (Polymorphism) a hnh: l kh nng c th thc hin cng mt hnh ng (phng thc) vi nhiu cch thc khc nhau khng ph thuc vo i tng c th thuc v lp no

76

Lp trnh C#.NET

4.2. Lp v i tngnh ngha lp (class)[attributes] [access-modifiers] class identifier [:base-class [,interface(s)]] {class-body}

Access-modifiers : quyt nh phm vi truy cp ti cc thuc tnh v phng thc ca lp Identifier : tn lp Base-class : lp c s (lp cha) Class-body : nh ngha cc thuc tnh v phng thc ca lp77

Lp trnh C#.NET

Access-modifiersAccess-modifierpublic

Gii hn truy nhpKhng gii hn. Cc thnh phn public c th c truy xut bi bt c phng thc ca bt k lp no khc Ch c th truy xut bi cc phng thc ca chnh lp C th c truy xut bi cc phng thc ca chnh lp v cc lp dn xut (derived) t n C th c truy xut bi cc phng thc ca cc lp trong cng Assembly C th c truy xut bi cc phng thc ca lp , lp dn xut t lp v cc lp trong cng Assembly vi n78

private

protected

internal

internal protected

Lp trnh C#.NET

V d nh ngha lppublic class Time { // Cc thuc tnh private int Year; int Month; int Date; int Hour; int Minute; int Second; // Cc phng thc public public void DisplayCurrentTime() { Console.WriteLine("Ngay, gio hien tai"); } }Lp trnh C#.NET

Khai bo lp Cc thuc tnh (phng thc truy cp mc nh l private)

Phng thc ca lp

79

Khai bo v s dng i tng ca lppublic class Tester { static void Main() { Time t = new Time(); t.DisplayCurrentTime(); } }

80

Lp trnh C#.NET

To i tng (create object) S dng t kha new Class_name Object_name = new Class_name( ); V d: Time t=new Time( ); i tng l bin kiu tham chiu, khng phi tham tr. Bin t khng cha gi tr ca i tng Bin t cha a ch ca i tng c to trong b nh Heap81

Lp trnh C#.NET

Hm to (constructor) Khi to mt i tng -> gi hm to (constructor) Hm to mc nh: s c CLR cung cp nu ngi lp trnh khng nh ngha Hm to do ngi lp trnh nh ngha

Hm to c chc nng: To mt i tng ca lp v chuyn n sang trng thi xc nh (valid state) Hm to thng c dng khi gn cc thuc tnh ca i tng82

Lp trnh C#.NET

Hm to mc nh (default constructor) Hm to mc nh to i tng ca lp, ngoi ra khng lm g khc Cc thuc tnh c khi gn cc gi tr mc nh Kiu d liu numeric (int, long, ) bool char enum reference 0 false \0 (null) 0 null83

Gi tr mc nh

Lp trnh C#.NET

Xy dng hm to Hm to c tn hm trng tn i tng, khng c kiu d liu tr v v phm vi truy nhp thng l public. Hm to c th c tham s hoc khngpublic Class_name() public Class_name( argument list )

V d:public Time() public Time(System.Datetime t)84

Lp trnh C#.NET

Xy dng hm topublic class Time { // private variables int Year; int Month; int Date; int Hour; int Minute; int Second; // contructor public Time(System.DateTime d) { Year = d.Year; Month = d.Month; Date = d.Day; Hour = d.Hour; Minute = d.Minute; Second = d.Second; } // public methods public void DisplayCurrentTime() { System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}", Date, Month, Year, Hour, Minute, Second); } }

85

Lp trnh C#.NET

Kim tra hm topublic class Tester { static void Main() { System.DateTime currentDate = System.DateTime.Now; Time t = new Time(currentDate); t.DisplayCurrentTime(); } }

86

Lp trnh C#.NET

Hm to sao chp (copy constructor) h tr chc nng hm to sao chp.NET nh ngha mt interface ICloneable Class h tr hm to sao chp phi implement interface ICloneable

public Object Clone() { return MemberwiseClone(); // shallow copy } T xy dng hm to sao chp (hand-copying copy constructor)87

Lp trnh C#.NET

T xy dng hm to//hand-copying contructor public Time(Time previousTime) { Year = previousTime.Year; Month = previousTime.Month; Date = previousTime.Date; Hour = previousTime.Hour; Minute = previousTime.Minute; Second = previousTime.Second; }88

Lp trnh C#.NET

Gi hm to sao chppublic class Tester { static void Main() { System.DateTime currentDate = System.DateTime.Now; Time t = new Time(currentDate); Time t2 = (Time)t.Clone(); t2.DisplayCurrentTime(); Time t3 = new Time(t2); t3.DisplayCurrentTime(); } }

89

Lp trnh C#.NET

T kha this T kha this tr n th hin hin ti (current instance) ca i tng T kha this rt hu ch trong mt s trng hp1) Ch r thnh phn (thuc tnh) ca i tng, trnh nhm ln vi tn bin, trnh s nhp nhng v tnpublic void SomeMethod (int hour) { this.hour = hour; }90

Lp trnh C#.NET

T kha this (tip)2)Dng lm tham s truyn vo cho mt phng thc ca i tng khc, cho php phng thc c th tc ng n cc thnh phn ca i tng hin ti. class myClass{ public void Foo(OtherClass otherObject) { otherObject.Bar(this); } }91

Lp trnh C#.NET

T kha this (tip)3) S dng cng vi indexer (Tm hiu sau) 4) Gi mt hm to t hm to khc ca lpclass myClass { public myClass(int i) { //... } public myClass( ) : this(42) { //... } }

92

Lp trnh C#.NET

T kha this (tip)5) Gi tng minh cc phng thc, thuc tnh ca lppublic void MyMethod(int y) { int x = 0; x = 7; // assign to a local variable y = 8; // assign to a parameter this.z = 5; // assign to a member variable this.Draw( ); // invoke member method }93

Lp trnh C#.NET

S dng cc thnh phn tnh (static memebrs)

Thnh phn tnh l cc thnh phn chung (thuc tnh, phng thc) ca lp Truy xut cc thnh phn tnh thng qua tn lp Class_name.Static_Member C# khng cho php truy xut cc thnh phn tnh thng qua i tng (th hin ca lp) Cc thnh phn tnh c th c truy nhp, triu gi trc khi cc i tng ca lp c to ra Cc phng thc tnh khng th truy xut trc tip cc thuc tnh, phng thc khng tnh (nonstatic) 94Lp trnh C#.NET

V d s dng thnh phn tnhnamespace StaticFields { public class Cat { private static int instances = 0; public Cat() { instances++; } public static void HowManyCats() { Console.WriteLine("{0} cats adopted",instances); } }public class Tester { static void Main() { Cat.HowManyCats(); Cat frisky = new Cat(); Cat.HowManyCats(); Cat whiskers = new Cat(); Cat.HowManyCats(); } } }

95

Lp trnh C#.NET

Hy i tng (Destroying Object) C# h tr c ch t ng thu gom rc (garbage collector) -> ngi lp trnh khng phi hy i tng mt cch tng minh. Nu i tng c s dng cc ti nguyn khc (files) -> ngi lp trnh phi t xy dng hm hy (Destructor) B thu gom rc t ng gi hm hy, cc phng thc khng gi mt cch tng minh.

96

Lp trnh C#.NET

Xy dng hm hy V mt c php, hm hy trong C# ging vi C++~Class_Name( )protected override void Finalize() { try { // do work here. } finally { base.Finalize( ); } } Lp trnh C#.NET

~MyClass() { // do work here }

97

Truyn tham s cho phng thc Mc nh, tham s truyn cho phng thc l kiu tham tr Mt bn sao ca tham s c to ra Bn sao s b hy khi kt thc phng thc Gi tr ca tham s c truyn khng thay i sau khi kt thc phng thc public int AddValue(int value1, int value2) { return value1+value2; }98

Lp trnh C#.NET

Truyn tham chiu C# h tr truyn tham chiu s dng cc t kha ref: truyn tham chiu, bin c tham chiu phi c khi gn trc khi truyn out: truyn tham chiu, bin c tham chiu khng cn khi gn trc khi truyn

99

Lp trnh C#.NET

Truyn tham chiu s dng t kha refnh ngha phng thcpublic void GetTime( ref int h, ref int m, ref int s ) { h = Hour; m = Minute; s = Second; }

Gi phng thcSystem.DateTime currentTime = System.DateTime.Now; Time t = new Time( currentTime ); int theHour = 0; int theMinute = 0; int theSecond = 0; t.GetTime( ref theHour, ref theMinute, ref theSecond ); Lp trnh C#.NET

100

Truyn tham chiu s dng t kha outnh ngha phng thcpublic void GetTime( out int h, out int m, out int s ) { h = Hour; m = Minute; s = Second; }

Gi phng thcSystem.DateTime currentTime = System.DateTime.Now; Time t = new Time( currentTime ); int theHour; int theMinute; int theSecond; t.GetTime( out theHour, out theMinute, out theSecond ); Lp trnh C#.NET

101

Overloading methods and constructors Khi mun c nhiu hm cng tn (VD: nhiu hm to (constructor) hay nhiu phng thc vi tham s u vo khc nhau) -> s dng k thut chng hm (Overloading) phn bit c hai hm vi nhau, phi cn c vo mt trong hai yu t Khc tn Khc s tham s hoc kiu d liu ca tham svoid myMethod(int p1); void myMethod(int p1, int p2); void myMethod(int p1, string s1);102

Lp trnh C#.NET

ng gi d liu thnh cc thuc tnh ng gi d liu thnh cc thuc tnh em li hai li ch Vn m bo mt giao din n gin cho cc i tng khc giao tip. D dng thay i m m khng nh hng ti giao din vi cc i tng khc. Tng tnh an ton d liu, kim tra c d liu khi gn

103

Lp trnh C#.NET

S dng cc thuc tnh (property)private int hour; public int Hour { get { return hour; } set { hour = value; } }

Ly v gi tr ca thuc tnh

Thit lp gi tr ca thuc tnh104

Lp trnh C#.NET

Thuc tnh ch c (readonly)public static readonly int Year; public static readonly int Month; public static readonly int Date; public static readonly int Hour; public static readonly int Minute; public static readonly int Second; -> Ch

c th gn gi tr s dng hm to tnh

(static constructor) hoc khi gn ngay t ban u.105

Lp trnh C#.NET

Bi thc hnh s 2

106

Lp trnh C#.NET

Bi thc hnh s 2

107

Lp trnh C#.NET

Bi thc hnh s 2

108

Lp trnh C#.NET

Bi thc hnh s 2

109

Lp trnh C#.NET

Bi thc hnh s 2

110

Lp trnh C#.NET

4.3. K tha v a hnh Tng qut ha v c th ha (generalization and specialization) K tha (inheritance) a hnh (polymorphism) Lp tru tng (abstract class)

111

Lp trnh C#.NET

Tng qut ha v c th haC th ha Tng qut ha

Tng qut ha: cc lp i tng c nhng thuc tnh, phng thc chung c tng qut thnh cc lp cha C th ha: cc lp con k tha cc phng thc, thuc tnh ca lp cha v b sung thm thuc tnh, phng thc ca ring n 112Lp trnh C#.NET

K tha (inheritance) K tha (inheritance) l k thut th hin quan h c th ha (specialization)public class ListBox : Control public class Button : Control

113

Lp trnh C#.NET

K tha (Inheritance) u im ca k thut k tha Kh nng ti s dng m. VD: lp ListBox c th s dng mt s phng thc, thuc tnh ca lp Control Kh nng s dng k thut a hnh (Polymorphism). VD: lp Control c phng thc Draw(), lp Listbox v Button cng c phng thc Draw().

114

Lp trnh C#.NET

To phng thc h tr a hnhpublic virtual void Draw( ) { //Code statements } public override void Draw( ) { //Code statements }115

Lp trnh C#.NET

V D K thut k tha v a hnh

116

Lp trnh C#.NET

Lp tru tng (abstract class) S dng lp tru tng khi Yu cu tt c cc lp con, k tha t n phi ci t mt hoc mt vi phng thc no .

c im ca lp tru tng Lp tru tng l lp tn ti t nht mt phng thc tru tng Khng th to i tng ca lp tru tng

117

Lp trnh C#.NET

Khai bo lp tru tngabstract public class Control { protected int top; protected int left; // constructor public Control( int top, int left ) { this.top = top; this.left = left; } abstract public void DrawWindow( ); }Lp trnh C#.NET

Khai bo lp tru tng

Khai bo phng thc tru tng118

K tha lp tru tngpublic class Button : Control { public Button(int top,int left ):base(top, left) { } // implement the abstract method public override void DrawWindow( ) { Console.WriteLine( "Drawing a button at {0}, {1}\n",top, left ); } }Lp trnh C#.NET

119

V D Lp tru tng

120

Lp trnh C#.NET

Root class: Object Trong C#, tt c cc lp, thm ch cc kiu d liu c sn u dn xut, k tha t lp Object. Object l lp cao nht trong cy k tha ca C# Lp Object cung cp mt s cc phng thc o m cc lp con c th ci t v thc thi Equals() GetType() ToString()

121

Lp trnh C#.NET

Boxing and Unboxing Boxing v Unboxing l qu trnh cho php kiu gi tr (v d: integer) c th c x l nh l kiu tham chiu (objects) Qu trnh Boxing din ra ngm nh (implicity): chuyn i ngm nh kiu gi tr sang kiu Object Qu trnh Unboxing din ra tng minh (explicity):chuyn ngc t kiu Object v kiu gi tr.

122

Lp trnh C#.NET

Boxingusing System; class Boxing { public static void Main( ) { int i = 123; Console.WriteLine ("The object value = {0}", i); } }

123

Lp trnh C#.NET

Unboxingpublic class UnboxingTest { public static void Main( ) { int i = 123; //Boxing object o = i; // unboxing (must be explicit) int j = ( int ) o; Console.WriteLine( "j: {0}", j ); } }

124

Lp trnh C#.NET

Bi thc hnh s 3Bi 1: Xy dng cc lp Fish, GoldFish v Shark theo thit k di y

125

Lp trnh C#.NET

4.4. Hm chng ton t Mc ch ca hm chng ton t (Overloading Operator) Cho php cc lp do ngi dng nh ngha c th c th c y cc chc nng nh cc kiu do ngn ng nh ngha VD: 1 lp phn s, c th c y cc php tonCng Tr Nhn ChiaLp trnh C#.NET

126

Hm chng ton t

Fraction theSum = firstFraction.Add(secondFraction);

Fraction theSum = firstFraction + secondFraction;

127

Lp trnh C#.NET

S dng t kha operator Khai bopublic static Fraction operator+ (Fraction lhs, Fraction rhs)S dng Fraction theSum = firstFraction + secondFraction;

Fraction.operator+(firstFraction, secondFraction)

128

Lp trnh C#.NET

Bi thc hnh s 3Bi 2: Xy dng lp phn s (Fraction) theo thit k di y. S dng k thut chng ton t (Overloading Operator) xy dng cc ton t +, -, *, /, ==, !=

129

Lp trnh C#.NET

4.5.Cu trc struct Struct l cu trc n gin do ngi dng t nh ngha, kh ging vi class C hm to, thuc tnh, phng thc, ton t, index

Struct khc class Struct khng h tr hm hy v c ch k tha Struct l kiu gi tr, khng phi kiu tham chiu Trong struct, cc thuc tnh khng c khi gn d liu khi khai bo130

Lp trnh C#.NET

nh ngha struct[attributes] [access-modifiers] struct identifier [:interface-list] { struct-members }public struct Location { private int xVal; private int yVal; public Location(int x, int y) { xVal = x; yVal = y; } public override string ToString( ) { return ( String.Format( "{0}, {1}", xVal, yVal ) ); } public int x { get { return xVal; } set { xVal = value; } } }

131

Lp trnh C#.NET

To struct S dng t kha new Location loc1 = new Location(200,300); Khng s dng t kha new (Cc thuc tnh xVal v yVal phi chuyn phm vi truy nhp thnh public) Location loc1; // Khng gi ti hm to loc1.xVal = 75; // Khi gn cc thuc tnh loc1.yVal = 225;132

Lp trnh C#.NET

Interfaces Mt lp hay struct thc thi (implement) interface -> m bo h tr y cc thuc tnh, phng thc, s kin v index c nh ngha trong interface Interface thng c so snh vi lp tru tng (abstract class) Khi mt lp hay cu trc thc thi mt interface, n phi thc thi tt c cc thnh phn ca interface (thuc tnh, phng thc, s kin)133

Lp trnh C#.NET

nh ngha Interface[attributes] [access-modifier] interface interface-name[:base-list] {interface-body}Phm vi truy nhp: public, private, protected, internal, protected internal Interface-name: tn ca interface, nn bt u bng ch I V d: ICloneable, IRunable Base-list: danh sch cc interface m n m rng (extend) Interface-body: m t cc phng thc, cc thuc tnh, m lp thc thi cn ci t (Khng xc nh phm vi truy cp mc nh l public) 134Lp trnh C#.NET

V dinterface IStorable { // no access modifiers, // methods are public // no implementation void Read(); void Write(object obj); int Status { get; set; } }public class Document : IStorable { // store the value for the property private int status = 0; public Document(string s) {//code} public void Read() {//code} // implement the Write method public void Write(object o) {//code} // implement the property public int Status { get { return status; } set { status = value;} } }135

Lp trnh C#.NET

Thc thi nhiu interfaces Cc lp v cu trc c th implement nhiu interfaces khc nhau V d: lp ti liu (Document) va c kh nng lu tr (storable), va c kh nng nn (compressible) public class Document : IStorable, ICompressible

136

Lp trnh C#.NET

M rng Interfaces (extending) C th m rng interface thm cc thuc tnh v phng thc mi interface ILoggedCompressible : ICompressible { void LogSavedBytes(); }

137

Lp trnh C#.NET

Kt hp interfaces C th kt hp cc interfaces li vi nhau v thm cc phng thc, thuc tnh nu cn interface IStorableCompressible : IStorable, ILoggedCompressible { void LogOriginalSize(); }

138

Lp trnh C#.NET

Truy nhp cc thnh phn ca interface

Khng th trc tip to th hin ca interface IStorable isDoc = new IStorable(); Truy xut thnh phn ca Interface theo hai bc (hoc gp c hai bc) To i tng ca mt lp implement interface Document doc = new Document("Test Document"); p kiu i tng ny thnh th hin ca interface IStorable isDoc = doc;139

Lp trnh C#.NET

Casting to an interface Khng bit r mt lp implement nhng interface no -> khi p kiu sang interface c th pht sinh li C# h tr 2 ton t s dng cho vic casting v kim tra Ton t is

expression is type Ton t as

expression as type140

Lp trnh C#.NET

So snh interface v lp tru tng Interface kh ging vi lp tru tng C# s dng interface thc thi k thut a k tha v C# khng h tr a k tha t nhiu lp (C++ c h tr a k tha) public class StorableList : List, IStorable { // List methods here ... public void Read( ) {...} public void Write(object obj) {...} // ... }Lp trnh C#.NET

141

Overriding Interface Implementations Mt lp khi thc thi cc phng thc ca interface c th chuyn i phng thc thnh dng phng thc o Cc lp dn xut t lp override phng thc o -> K THUT A HNH

142

Lp trnh C#.NET

Bi thc hnh s 4Xy dng cc lp phng tin giao thng di y theo thit k

143

Lp trnh C#.NET

4.7. Mng, ch s v tp hp Mng l mt tp hp c nh ch s (indexed Collection) cc i tng cng kiu Bin mng l i tng, cc i tng mng c khai bo thc t l th hin ca lp System.Array i tng mng c thuc tnh: IsReadOnly, Length i tng mng c phng thc: Clear(), Copy(), Sort()144

Lp trnh C#.NET

Khai bo mng

type[ ] array-name; Cp ngoc vung [ ] bo cho trnh dch C# bit l chng ta khai bo mt mng Type xc nh kiu d liu ca cc phn t trong mng V d: int[ ] myIntArray; //Mng integer Employer[ ] myObjectArray; //Mng i tng145

Lp trnh C#.NET

Gi tr mc nh khi khi gn mng Khi khi gn mng cc phn t kiu gi tr (value type), cc phn t c khi gn gi tr mc nh ca n myIntArray=new int[5]; Khi khi gn mng cc phn t kiu tham chiu (reference type), cc phn t mng c khi gn gi tr null -> mun s dng phi to v gn cc i tng c th cho cc phn t ca mng myObjectArray=new Employer[5];146

Lp trnh C#.NET

Truy nhp phn t mng Cc phn t mng trong C# c nh ch s, bt u bng 0 Mng l i tng, c thuc tnh Length cho bit s phn t trong mng -> Cc phn t ca mng c nh ch s t 0 n Length -1 Truy nhp phn t mng (VD phn t th 3 ca mng myInt) thng qua ton t ch s [ ] myInt[2]147

Lp trnh C#.NET

V dpublic class Employee { private int empID; public Employee(int empID) { this.empID = empID; } public override string ToString() { return empID.ToString(); } } public class Tester { static void Main() { Employee[] empArray; empArray = new Employee[3]; // populate the array for (int i = 0; i < empArray.Length; i++) { empArray[i] = new Employee(i + 5); } for (int i = 0; i < empArray.Length; i++) { Console.WriteLine(empArray[i].ToStrin g()); } } }

148

Lp trnh C#.NET

Cu lnh foreach Cu lnh foreach cho php lp qua tt c cc phn t trong trong mt mng hay kiu tp hp bt k no khc foreach (type identifier in expression) statement

Kiu d liu ca phn t trong mng / tp hp

Tn bin lp (tham chiu n phn t mng ti mi vng lp)Lp trnh C#.NET

Tn mng/ Tp hp

149

V dKhi cc phn t mng l kiu gi trforeach ( int i in intArray ) { Console.WriteLine( i.ToString( ) ); }

Khi cc phn t mng l kiu tham chiuforeach ( Employee e in empArray ) { Console.WriteLine( e.ToString( ) ); }150

Lp trnh C#.NET

T kha params T kha params cho php truyn mt lot cc tham s cho phng thc m khng phi nh ngha mng mt cch tng minh.

public void DisplayVals(params int[] intVals)

151

Lp trnh C#.NET

ng dng t kha paramspublic class Tester { static void Main() { Tester t = new Tester(); t.DisplayVals(5, 6, 7, 8); int[] explicitArray = new int[5] { 1, 2, 3, 4, 5 }; t.DisplayVals(explicitArray); } public void DisplayVals(params int[] intVals) { foreach (int i in intVals) { Console.WriteLine("DisplayVals {0}", i); } } }152

Lp trnh C#.NET

Bi thc hnh s 5Bi 1: Vit mt phng thc FindMinMax in ra gi tr s nguyn ln nht v nh nht trong s cc tham s u vo l mt dy cc s nguyn bt k VD: Gi hm FindMinMax(3,1,5,8,0,9,-2) Kt qu in ra mn hnh - S nguyn nh nht l: -2 - S nguyn ln nht l: 9

153

Lp trnh C#.NET

4.8. Stringspublic sealed class String :IComparable, ICloneable, IConvertible, IEnumerable

String l lp ng -> Khng th to lp k tha lp String String implement 4 interfaces IComparable, ICloneable, IConvertible v IEnumerable cho php c th so snh, sao chp, chuyn i v s dng kiu lit k Mi i tng ca lp String l mt chui c nh cc k t Unicode -> cc phng thc lm thay i i tng ca lp thc cht l to ra mt bn sao c sa i, chui nguyn gc vn c gi trong b nh cho n khi b thu gom rc x l.154

Lp trnh C#.NET

To chuiCch thng thngstring literalString = "This is a string literal \n";

To chui ng vi nguyn mu (verbatim string) s dng t kha @string verbatimString=@"\n Pham Van Thuan \t Tel: 0985905253\\";public class Test { public static void Main() { String literalString = "Pham Van Thuan \n"; Console.WriteLine(literalString); String verbatimString = @"\n Pham Van Thuan \t Tel: 0985905253\\"; Console.WriteLine(verbatimString); Console.Read(); } }155

Lp trnh C#.NET

Thao tc chui Lp string h tr cc phng thc cho php so snh, tm kim v x l chui Thuc tnh, phng thcEmpty Compare() Concat() Copy() Equals() Format() Lp trnh C#.NET

M tThuc tnh cho bit chui rng Phng thc so snh hai chui Phng thc ni chui To bn sao ca mt chui Kim tra hai chui c ging nhau khng nh dng mt chui156

V dstatic void Main() { string str1 = "Hanoi"; string str2 = "La thu do cua Viet Nam"; string str3 = "HANOI"; //So sanh chuoi, tra ve 0 neu giong nhau int result = string.Compare(str1, str3); Console.WriteLine("Ket qua so sanh hai chuoi {0} va {1} la {2}", str1, str3, result); Console.ReadLine(); //Noi chuoi string str4 = string.Concat(str1, " ", str2); string str5 = str1 + " " + str2; Console.WriteLine("Ket qua noi chuoi {0} va {1}: \n + Su dung phuong thuc Concat: {2} \n + Su dung ham chong toan tu +: {3}", str1, str2, str4, str5); Console.ReadLine(); //Lay ve chieu dai chuoi Console.WriteLine("Chieu dai cua chuoi \"{0}\" la {1}", str2, str2.Length); Console.ReadLine(); }157

Lp trnh C#.NET

X l chui ng (Dynamic string) Lp System.Text.Stringbuilder c s dng to v chnh sa chui Khng ging nh string, cc i tng ca lp Stringbuilder c th thay i Khi chnh sa, s thay i c thc hin trn chnh i tng ch khng phi trn bn sao ca i tng

158

Lp trnh C#.NET

V d s dng Stringbuilderstatic void Main() { // create some strings to work with string s1 = "Hi, Good morning"; // array of delimiters to split the sentence with char[] delimiters = new char[]{' ',','}; // use a StringBuilder class to build the output string StringBuilder output = new StringBuilder(); int ctr = 1; // split the string and then iterate over the // resulting array of strings foreach (string subString in s1.Split(delimiters)) { // AppendFormat appends a formatted string output.AppendFormat("{0}: {1}\n", ctr++, subString); } Console.WriteLine(output); }

159

Lp trnh C#.NET

4.9. Handling Exceptions C# s dng k thut bt ngoi l (Handling Exception bt v x l li (errror) cng nh cc ngoi l pht sinh trong qu trnh thc thi chng trnh) Phn loi bug, error v exception Bug: li do ngi lp trnh, cn c loi b trc khi hon thnh phn mm Error: li pht sinh do ngi dng, v d ngi dng nhp sai nh dng d liu -> phi kim tra d liu u vo Exception: li bt thng, v d nh ht b nh, li chia cho 0sLp trnh C#.NET

160

Nm (throwing) v bt (catching) ngoi l

bo hiu mt iu kin bt thng xut hin trong qu trnh thc thi, thc hin nm ngoi l throw new System.Exception(); Khi mt ngoi l c tung ra, chng trnh ngay lp tc s dng li v CLR s tm , kim tra chng trnh bt ngoi l, nu khng tm thy n s kt thc chng trnh

161

Lp trnh C#.NET

Ngoi l c bo trong ch debug

162

Lp trnh C#.NET

Li dng chng trnh khi chy thc t

163

Lp trnh C#.NET

V dpublic class Test { public static void Main() { Console.WriteLine("Enter Main..."); Test t = new Test(); t.Func1(); Console.WriteLine("Exit Main..."); } public void Func1() { Console.WriteLine("Enter Func1..."); Func2(); Console.WriteLine("Exit Func1..."); } public void Func2() { Console.WriteLine("Enter Func2...");

throw new System.Exception();Console.WriteLine("Exit Func2..."); } }164

Lp trnh C#.NET

Ngoi l xut hin

165

Lp trnh C#.NET

Chi tit ngoi l

166

Lp trnh C#.NET

Cu lnh trycatch C# s dng cu trc trycatchfinally kim tra, bt v x l ngoi ltry { //Lnh c th pht sinh ngoi l, cn kim tra } catch(Exception e) { //Bt v x l ngoi l nu c } Finally { //on m lun thc thi khi xut hin ngoi l }167

Lp trnh C#.NET

Cu lnh trycatch C th c nhiu on lnh catch trong mt cu lnh trycatch tng ng vi nhiu ngoi l khc nhau on lnh trycatch c th t trong phng thc c th pht sinh ngoi l hoc t cp cao hn, phng thc triu gi on m c th pht sinh ngoi l

168

Lp trnh C#.NET

Bi thc hnh s 5Bi 2: Vit mt phng thc

float Divide(int num1, int num2) Kim tra v bt ngoi l bng cu lnh trycatch trong hai trng hp Bt trong thn hm Bt trong li gi hm

169

Lp trnh C#.NET

Ni dung mn hcChng 1: Gii thiu C# v .NET Framework Chng 2: Gii thiu mi trng pht trin ng dng Visual Studio .NET 2005 Chng 3: C# cn bn Chng 4: Hng i tng trong C# Chng 5: Lp trnh Windows Form vi C# Chng 6: ASP.NET

170

Lp trnh C#.NET

Ni dung chng 55.1. M u v lp trnh Windows Form 5.2. Mt s iu khin thng dng cho Windows Form 5.3. Kt ni c s d liu s dng ADO.NET 5.4. Lp bo co s dng Crystal Report.NET

171

Lp trnh C#.NET

5.1. M u v lp trnh Windows Form Xy dng ng dng Hello World

172

Lp trnh C#.NET

Xy dng ng dng Hello World To d n kiu Windows Application Thit k giao din 1 label 1 textbox 2 button: Hello, Good bye

173

Lp trnh C#.NET

Cc file cu thnhForm1.cs: cha m chng trnh ca ngi dng Form1.Designer.cs: do b VS 2005 t ng sinh trong qu trnh thit k

class frmHello174

Lp trnh C#.NET

Form1.cs

175

Lp trnh C#.NET

Form1.Designer.cs

176

Lp trnh C#.NET

Vit m S kin ngi dng click vo nt Helloprivate void btnHello_Click(object sender, EventArgs e) { MessageBox.Show("Hello "+txtName.Text); } Phng thc Show ca i tng MessageBox -Hin th thng bo -Hin th cc nt bm ty chn, tng tc ngi dng (OK, Cancel, Yes, No)177

Lp trnh C#.NET

Vit m (tip) S kin ngi dng click vo nt Good byeprivate void btnGoodBye_Click(object sender, EventArgs e) { MessageBox.Show("Bye bye!"); Application.Exit(); } Lp Application cung cp cc thuc tnh v phng thc tnh lm vic vi ng dng Application.Exit(); //ng ng dng

178

Lp trnh C#.NET

5.2. Mt s iu khin thng dng trong Windows Form Label v Linklabel Textbox v RichTextBox Button Check box v Radio button Combobox Listbox

179

Lp trnh C#.NET

iu khin Label (nhn) Chc nng: dng cha cc thng tin tnh (tiu , ch thch) Cc thuc tnh thng dng Name: tn ca iu khin Font: thit lp font ch, kch thc ch Text: ni dung hin th trn iu khin180

Lp trnh C#.NET

iu khin Label (nhn) V d:

Name: lblUsername Text: Tn truy cp

Name: lblPassword Text: Mt khu181

Lp trnh C#.NET

iu khin Textbox Chc nng: cho php ngi dng nhp cc on vn bn, h tr kh nng hin th trn nhiu dng v n cc k t trong trng hp nhp mt khu Cc thuc tnh thng dngName: tn iu khin Font: thit lp font ch Text: on vn bn trn iu khin Multiline: cho php hay khng hin th vn bn trn nhiu dng PasswordChar: k t dng che mt khu Visible: n/ hin th iu khin Enabled: cho php/ khng cho php thao tc vi iu khin

Cc phng thc thng dng Focus(): thit lp Textbox lm iu khin hin thi, c th l t con tr chut vo u dng182

Lp trnh C#.NET

iu khin Textbox V d:

Name: txtUserName Text: thuanpv Multiline: false Name: txtPassword Multiline: false PasswordChar: *183

Lp trnh C#.NET

iu khin Button (nt bm) Chc nng: pht sinh s kin khi ngi dng click chut ln iu khin Cc thuc tnh thng dng Name: tn nt bm Text: vn bn m t chc nng ca nt bm Visible: hin th/ n nt bm Enabled: cho php/ khng cho php s dng

Cc s kin thng pht sinh Click: khi ngi dng click chut ln nt bm -> cn bt s kin, lp trnh thc hin cng vic mong mun184

Lp trnh C#.NET

iu khin Button (nt bm) V d:

Name: btnLogin Text: ng nhp Enabled: true Bt s kin ngi dng nhn chutprivate void btnLogin_Click(object sender, EventArgs e)185

Name: btnCancel Text: Thot Enabled: false

Lp trnh C#.NET

Bi tp Vit m cho form ng nhp thc hin cc cng vic sau Kim tra thng tin ng nhp (Khai bo 2 hng s lu tn truy cp v mt khu kim tra) Hin th thng bo tng ng trong trng hp ng nhp hp l/ Khng hp l Nu ng nhp thnh cng, m ra mt form mi, vi mt s thng tin n gin (tn truy cp, thi gian ng nhp)

Khi chy, giao din chng trnh c dng nh sau (xem trang tip theo)186

Lp trnh C#.NET

ng nhp khng thnh cng

187

Lp trnh C#.NET

ng nhp thnh cng

188

Lp trnh C#.NET

List Control List controls (iu khin cha danh sch) gm ba iu khin c bn: Listbox CheckedListBox ComboBox

189

Lp trnh C#.NET

iu khin ComboBox Chc nng: cho php ngi dng chn cc phn t trong danh sch hoc t thm vo textbox. Cc thuc tnh thng dng: Name: tn ca ComboBox Text: vn bn c hin th trn phn TextBox sau khi ngi dng chn Items: danh sch cc phn t cho php ngi dng chn (Cho khi to ban u) DataSource, DisplayMember, ValueMember: thit lp ngun d liu cho iu khin ComboBox (cho php in danh sch phn t mt cch t ng)190

Lp trnh C#.NET

iu khin ComboBox (tip) V d cch dng thuc tnh Items

Chn thuc tnh Items

Sa danh sch phn t

Danh sch hin th trn iu khin ComboBoxLp trnh C#.NET

191

iu khin ComboBox (tip) V d cch dng thuc tnh DataSoure, DisplayMember, ValueMember Bng tblProviders trong CSDL

DataSoure: tblProviders DisplayMember: Provider_NAME ValueMember: Provider_ID192

Lp trnh C#.NET

iu khin ComboBox (tip)Bng tblProviders trong CSDL

Khi ngi dng chn May Vit Tin ComboBox.Text=May Vit Tin ComboBox.SelectedValue=2193

Lp trnh C#.NET

Case study Mc ch To ra mt iu khin mi (thay i giao din, thm thuc tnh, phng thc) To ra mt iu khin kt hp cc iu khin c bn To ra mt iu khin kt hp cho php s dng li nhiu ln

Custom Controls

194

Lp trnh C#.NET

5.3. Kt ni c s d liu s dng ADO.NET

Gii thiu cng ngh ADO.NET M hnh i tng ca ADO.NET Cc iu khin nhng d liu Kt ni c s d liu vi ADO.NET

195

Lp trnh C#.NET

Gii thiu cng ngh ADO.NET ADO.NET kh ging cng ngh ADO ADO.NET l kin trc d liu ngt kt ni (disconnected data architecture) D liu c ly v t c s d liu D liu c lu tr m trn my cc b -> Tng tc x l, gim ti cho server

ADO.NET thc hin hai chc nng Truy xut d liu (Data Access) Th hin d liu (Data Representation)196

Lp trnh C#.NET

M hnh i tng ca ADO.NET Cc i tng truy xut c s d liu (C cc lp dn xut, ti u ha cho tng kiu kt ni) DbConnection DbCommand DataReader DataAdapter

Cc i tng th hin d liu DataTableDataColumn DataRow

DataRelation DatasetLp trnh C#.NET

197

i tng DbConnection Cung cp kt ni ti c s d liu to kt ni ti c s d liu cn cung cp cc thng tin Server cha c s d liu Ti khon ng nhp h qun tr c s d liu Tn c s d liu -> Connection String (chui kt ni)

Tt c cc i tng truy xut d liu (DbCommand, DataReader, DataAdapter) u s dng DbConnection kt ni c s d liu198

Lp trnh C#.NET

i tng DbConnection

199

Lp trnh C#.NET

i tng DbConnection Cc thuc tnh c bn Connectionstring: chui kt ni

Cc phng thc c bn Open() Close()

200

Lp trnh C#.NET

i tng DbCommand i tng DbCommand l phng tin tng tc vi c s d liu Chy truy vn SQL Chy Stored Procedure

201

Lp trnh C#.NET

i tng DbCommand Cc thuc tnh c bn CommandText: cu lnh cn thc thi, c 3 loi cu lnh (CommandType)Text: cu lnh truy vn SQL (mc nh) TableDirect: truyn tn bng trong c s d liu StoredProcedure: truyn tn ca Stored Procedure

Connection: kt ni c s dng

Cc phng thc c bn ExecuteNonQuery: chy cc cu lnh khng cn kt qu tr v ExecuteScalar: chy cc cu lnh nhn 1 kt qu tr v ExecuteReader: chy cc cu lnh tr v nhiu dng d liu202

Lp trnh C#.NET

i tng DbDataReader Cho php c d liu t mt tp kt qu (V d: kt qu sau khi chy mt lnh trong i tng DbCommand) Thng c s dng bi cc i tng khc, khng cn phi s dng trc tip203

Lp trnh C#.NET

i tng DbDataAdapter Cho php lu tr d liu offline trn DataSet v ch kt ni, trao i vi c s d liu gc khi cn thit DataSet l i tng s dng biu din d liu ca c s d liu di dng cc i tng ca .NET (DataTable, DataRelation) DbDataAdapter thc hin cc x l thng qua cc i tng DbCommand v DbDataReader (ng gi trong i tng DbDataAdapter)204

Lp trnh C#.NET

i tng DbDataAdapter

205

Lp trnh C#.NET

i tng DbDataAdapter Cc phng thc c bn Fill(): nhn d liu t c s d liu Update(): cp nht cc thay i ln c s d liu

206

Lp trnh C#.NET

i tng DataTable Lu tr cc bng d liu Ch : cc bng d liu lp DataTable lu tr khng bt buc nh x hon ton cc bng trong c s d liu

207

Lp trnh C#.NET

i tng DataTable Cc thuc tnh c bn Rows: tr v mt tp cc dng Columns: tr v mt tp cc ct

Cc phng thc c bn GetChanges(): ly v cc thay i trn DataTable ApplyChanges(): chp nhn cc thay i trn DataTable -> d liu thc s c cp nht ln c s d liu trung tm. RejectChanges(): hy b mi thay i208

Lp trnh C#.NET

i tng DataSet Lp quan trng nht trong kin trc ADO.NET

209

Lp trnh C#.NET

i tng DataSet Cc thuc tnh c bn Tables: tp hp cc bng d liu Relations: tp hp cc quan h

Cc phng thc c bn GetChanges() ApplyChanges() RejectChanges()

210

Lp trnh C#.NET

iu khin nhng d liu Nhng d liu (Data Binding) l k thut cho php cc iu khin d dng ly d liu t c s d liu v v hin th m khng cn ngi dng vit cc on m lp trnh C ch nhng d liu cn hai thnh phn iu khin nhng d liu (ListBox, ComboBox, DataGridView) Ngun d liu (Data Source)

211

Lp trnh C#.NET

Kt ni c s d liu vi ADO.NET Kt ni bng lp trnh Kt ni s dng Wizard

Demo

212

Lp trnh C#.NET

Case study Mc ch Truy vn linh hotC s d liu quan h (LinQ to SQL) i tng (LinQ to Object) XML file (LinQ to XML)

LinQ (Language Integrated Query)

213

Lp trnh C#.NET

5.4. Lp bo co s dng Crystal Report

Gii thiu Crystal Report To bo co Crystal Report s dng ngun d liu OLE DB (OLE DB Provider for SQL Server) To bo co Crystal Report s dng ngun d liu Dataset

214

Lp trnh C#.NET

Gii thiu Crystal Report Crystal Report l cng c lp bo co H tr nhiu ngun d liu (C s d liu, text, Excel, XML) H tr nhiu kiu bo co H tr tch hp hnh nh, th, biu

215

Lp trnh C#.NET

TimeSheet Report

216

Lp trnh C#.NET

Gantt Chart Report

217

Lp trnh C#.NET

Labor/Cost Report

218

Lp trnh C#.NET

M hnh Push Model

219

Lp trnh C#.NET

Giao din thit k

220

Lp trnh C#.NET

Giao din thit k Report Header: header ca bo co Report Footer: footer ca bo co Page Header: header ca tng trang bo co Page footer: footer ca tng trang bo co Details: Ni dung ca bo co

221

Lp trnh C#.NET

Cc trng d liu cho bo coDatabase fields: cc trng ly t c s d liu Formula Fields: cc trng tnh ton Parameter Fields: cc trng tham s Group Name Fields: cc group Special Fields: cc trng c bit (ngy lp bo co, ngy in bo co, ) Running Total Fields: cc trng tnh ton theo tng nhm (VD: tng sinh vin, tng doanh s)

222

Lp trnh C#.NET

To bo co s dng kt ni OLE DB u im: Quen thuc vi cc lp trnh vin trn mi trng Visual Studio 6 C th xem trc d liu ca bo co

Nhc im Phi kt ni cng vi ngun d liu -> khng linh hot (d liu cung cp trong qu trnh thit k) Phi s dng tn truy nhp/mt khu kt ni c s d liu223

Lp trnh C#.NET

To bo co s dng ngun d liu DataSet

u im: Linh hot trong thit k: ngun d liu linh hot, cung cp trong qu trnh thc thi (Runtime) S dng chung kt ni vi ng dng -> khng cn tn truy nhp/mt khu

Nhc im Khng xem trc c chnh xc d liu ca bo co

224

Lp trnh C#.NET

iu khin CrystalReportViewer

Thuc tnh quan trng: ReportSource: ngun bo co (Lp dn xut ca ReportClass)225

Lp trnh C#.NET

Demo

226

Lp trnh C#.NET

Case study Mc ch Giao din p a nn (WinForm, WebForm) Cng c lp bo co linh hot DevExpress

(www.devexpress.com)

227

Lp trnh C#.NET

Ni dung mn hcChng 1: Gii thiu C# v .NET Framework Chng 2: Gii thiu mi trng pht trin ng dng Visual Studio .NET 2005 Chng 3: C# cn bn Chng 4: Hng i tng trong C# Chng 5: Lp trnh Windows Form vi C# Chng 6: ASP.NET

228

Lp trnh C#.NET

Ni dung chng 66.1. ASP vs ASP.NET 6.2. ASP.NET Web Forms 6.3. ASP.NET Web services

229

Lp trnh C#.NET

Ni dung chng 66.1. ASP vs ASP.NET 6.2. ASP.NET Web Forms 6.3. ASP.NET Web services

230

Lp trnh C#.NET

ASP vs ASP.NET Gii thiu v ASP Qu trnh pht trin t ASP -> ASP.NET Nhc im ca ASP u im ca ASP.NET

231

Lp trnh C#.NET

Gii thiu ASP = #12:00:00 AM# And Time < #12:00:00 PM# Then%> "Now the time is between 12:00 am and 12:00 pm" " Now the time is between 12:00 pm and 12:00 am" Thc thi trn Server

232

Lp trnh C#.NET

M hnh thc thi ASPClient (Browser)

ASP.DLLActiveX Data ActiveX Data Objects Objects (ADO) (ADO)

IIS

VBScript JavaScript

Database

ASP file233

Lp trnh C#.NET

Qu trnh pht trinPhin bn u tin ca ASP

Phin bn i cng IIS 3.0 Phin bn i cng Windows NT 4.0

Phin bn i cng Windows 2000

ASP.NET i cng b .NET frameworkLp trnh C#.NET

234

Nhc im ca ASP Ch h tr hai ngn ng VBScript v JavaScript M x l, m HTML cho giao din trn ln vi nhau -> hn n, kh qun l Kh c kh nng ti s dng m Khng c c ch g li -> kh pht trin

235

Lp trnh C#.NET

u im ca ASP.NETASP.NETH tr cc ngn ng nh kiu mnh C#, VB H tr cc ngn ng nh kiu mnh C#, VB

S dng c ch bin dch

H tr phng thc trace gip d dng trong g li H tr ti s dng code da trn c ch k tha

Cung cp cc iu khin trn server

M x l ASP.NET tch bit vi m giao din236

Lp trnh C#.NET

Ni dung chng 66.1. ASP vs ASP.NET 6.2. ASP.NET Web Forms 6.3. ASP.NET Web services

237

Lp trnh C#.NET

6.2. ASP.NET Web forms Cu trc mt trang ASP.NET S kin v m hnh x l s kin Cc iu khin Kt ni c s d liu Thit k giao din Cng ngh AJAX

238

Lp trnh C#.NET

Cu trc mt trang ASP.NET Hai m hnh Inline codeM giao din v m thc thi trong cng mt file c phn m rng .aspx

Code behindM giao din lu trong file .aspx M thc thi, x l s kin lu trong file .cs

239

Lp trnh C#.NET

Cu trc mt trang ASP.NETPage Directive section Page_Load Event

Event Handler

HTML Control Web Control

240

Lp trnh C#.NET

S kin v m hnh x l s kin Web forms tng tc vi ngi dng thng qua cc s kin: click button, chn phn t trong ComboBox a s cc s kin c x l trn Server Hm x l s kin nhn hai tham s Object: i tng pht sinh s kin EventArgs: danh sch cc tham s

C hai loi s kin Postback Nonpostback241

Lp trnh C#.NET

M hnh x l s kin

242

Lp trnh C#.NET

M hnh x l s kin

243

Lp trnh C#.NET

Cc iu khin Phn loi HTML controls Server control (runat=server)

Cy k tha cc iu khin trn ServerLp trnh C#.NET

244

Server Controls HTML Server Control Web controls Rich controls Validation controls Data controls Login controls

245

Lp trnh C#.NET

HTML Server Controls

246

Lp trnh C#.NET

HTML Server Controls

247

Lp trnh C#.NET

Web Server Controls

248

Lp trnh C#.NET

Web Server Controls

249

Lp trnh C#.NET

Kt ni c s d liu ADO.NET Data binding iu khin DataSource

Demo

250

Lp trnh C#.NET

Thit k giao din CSS vs Themes Master Pages

251

Lp trnh C#.NET

CSS vs Themes CSS Do trnh duyt client x l Ch tc ng ti mt tp cc thuc tnh hu hn c quy nh trc

Themes X l trn server C th tc ng ti cc thuc tnh c trng ca cc iu khin

252

Lp trnh C#.NET

Master Pages Thit k template cho php nhiu trang cng s dng -> m bo tnh thng nht trong b tr giao din Template c chia ra thnh vng c th chnh sa (editable region) v vng khng th chnh sa

253

Lp trnh C#.NET

Cng ngh AJAX Cng ngh AJAX ra i khc phc cc nhc im ca cng ngh web ng (VD: ASP.NET) ASP.NET thc hin mi x l trn server, mi khi mt s kin xy ra, ASP.NET cn thc hinGi d liu ln Server Server x l, tr v mt bn m HTML mi Refresh mn hnh

254

Lp trnh C#.NET

M hnh x l s kin thng thng

255

Lp trnh C#.NET

M hnh x l s kin s dng AJAX

256

Lp trnh C#.NET

Ni dung chng 66.1. ASP vs ASP.NET 6.2. ASP.NET Web Forms 6.3. ASP.NET Web services

257

Lp trnh C#.NET

6.3. ASP.NET Web Services Gii thiu Web services Lp trnh to web services Lp trnh s dng web services

258

Lp trnh C#.NET

Gii thiu L do ra i Cn mt c ch to ra cc i tng cho cc ng dng phn tn s dng. Cn mt k thut to ra cc i tng cho cc ng dng ca cng ty ny c th d dng truy xut, trao i thng tin vi cng ty khc trong mi trng a nn.

Cc cng ngh c DCOM CORBA259

Lp trnh C#.NET

Gii thiu

Web Services can convert your application into a Web-application, which can publish its function or message to the rest of the world. The basic Web Services platform is XML + HTTP.260

Lp trnh C#.NET

Gii thiu Cc thnh phn c bn ca Web Services SOAP (Simple Object Access Protocol) UDDI (Universal Description, Discovery and Integration) WSDL (Web Services Description Language)

261

Lp trnh C#.NET

Gii thiu WSDL: s dng to nh ngha giao din cho mt web service. WSDL cho cc ng dng client bit nhng phng thc no c h tr bi web service (tn phng thc, danh sch tham s, kt qu tr v) v cch thc kt ni vi chng. SOAP: nh dng d liu trc khi gi ti web service HTTP: giao thc s dng truyn d liu UDDI: chun ng k cc thng tin v cng ty, cc dch v web services m cng ty cung cp v cc ng dn URL tng ng c ng k.

262

Lp trnh C#.NET

Gii thiu Web services stack

263

Lp trnh C#.NET

Gii thiu

Tm kim v s dng web servicesLp trnh C#.NET

264

Lp trnh to web service4 bc c bn Bc 1: To lp ng dng Bc 2: Chuyn ng dng thnh dng webservice Bc 3: B sung cc m t Bc 4: Kim tra Web service Ch : Visual Studio t ng thc hin bc 2

265

Lp trnh C#.NET

V d Xy dng webservice qun l thng tin sinh vin (StudentService) h tr cc phng thc GetStudentCount(): tr v tng s sinh vin GetStudentCountByClass(string classID): tr v tng s sinh vin theo lp GetStudentsInfo(): tr v thng tin v tt c cc sinh vin

266

Lp trnh C#.NET

Lp trnh to Web service

Demo

267

Lp trnh C#.NET

Test StudentService (S dng Visual Studio)

268

Lp trnh C#.NET

Lp trnh s dng web service Cc ng dng (trn Windows) c th s dng web service Window form application Web application

Ch : web service c tnh a nn v a ngn ng

269

Lp trnh C#.NET

Web client s dng Web Service Cc cng vic cn x l To, Gi, nhn d liu theo nh dng XML (c h tr bi proxy class)

270

Lp trnh C#.NET

To proxy class to proxy class c hai cch S dng cng c wsdl.exe(C:\Program Files\Microsoft Visual Studio 2005\SDK\v2.0\Bin)

S dng Visual Studio web reference

Proxy class K tha lp SoapHttpClient Mt s thuc tnh chnhCredentials Url Timeout271

Lp trnh C#.NET

To proxy class s dng wsdl.exe Chy trn mi trng command line V d:wsdl http://localhost:4863/DemoWebservice/StudentService.asmx

Mc nh, mt file c tn StudentService.cs s c to ra thay i tn proxy class, thit lp tham s \out V d:wsdl http://localhost:4863/DemoWebservice/StudentService.asmx \out:StudentServiceProxy.cs

272

Lp trnh C#.NET

To proxy class s dng Visual Studio Bc 1: To web reference Bc 2: Nhp a ch webservice, nhn Go

273

Lp trnh C#.NET

To proxy class s dng Visual Studio Bc 3: t tn cho namespace v add web reference

274

Lp trnh C#.NET

To web client Bc 1: To ng dng web Bc 2: To proxy class (1 trong hai cch) Bc 3: S dng lp proxy class v cc phng thc thao tc vi webservice

275

Lp trnh C#.NET

To web client To trang web vi hai iu khin c bn 1 iu khin GridView hin th danh sch sinh vin 1 iu khin Button nhn s kin ca ngi dng

276

Lp trnh C#.NET

To web client

277

Lp trnh C#.NET

Demo

278

Lp trnh C#.NET