Professional Documents
Culture Documents
C Sharp
C Sharp
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 C#.NET
Lp trnh C#.NET
Ni dung mn hc
Chng 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 ng dng vi C#
Lp trnh C#.NET
Ni dung mn hc
Chng 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 ng dng vi C#
Lp trnh C#.NET
Ni dung mn hc
Chng 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 ng dng vi C#
Lp trnh C#.NET
Ni dung chng 1
1.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#
Lp trnh C#.NET
Lp trnh C#.NET
Lp trnh C#.NET
Lp trnh C#.NET
.NET Framework
11
Lp trnh C#.NET
Lp trnh C#.NET
13
Lp trnh C#.NET
Lp trnh C#.NET
Ni dung mn hc
Chng 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 ng dng vi C#
15
Lp trnh C#.NET
Ni dung chng 2
2.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
16
Lp trnh C#.NET
17
Lp trnh C#.NET
18
Lp trnh C#.NET
Lp trnh C#.NET
Lp trnh C#.NET
Lp trnh C#.NET
23
Lp trnh C#.NET
Namespace
Class
Static function
Code statement
Lp trnh C#.NET
25
26
Lp trnh C#.NET
27
Lp trnh C#.NET
28
Lp trnh C#.NET
Ni dung mn hc
Chng 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 ng dng vi C#
29
Lp trnh C#.NET
Ni dung chng 3
3.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)
30
Lp trnh C#.NET
Lp trnh C#.NET
32
Lp trnh C#.NET
33
Lp trnh C#.NET
34
Lp trnh C#.NET
35
Lp trnh C#.NET
Escape Character
36
Lp trnh C#.NET
37
Lp trnh C#.NET
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 li
int myInt; System.Console.WriteLine ("Uninitialized, myInt: {0}", myInt);
38
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;
39
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 trnh
enum GoodWeather : uint { temperature=28, moisture=80, wind=5 }
Lp trnh C#.NET
40
Lp trnh C#.NET
Lp trnh C#.NET
43
Lp trnh C#.NET
44
Lp trnh C#.NET
Lp trnh C#.NET
46
Lp trnh C#.NET
47
Lp trnh C#.NET
48
Lp trnh C#.NET
49
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
50
Lp trnh C#.NET
Vng lp for
for ( [initializers]; [expression]; [iterators]) statement
Khi to Biu thc kim tra Lnh lp Cng vic cn thc thi for (int i=0; i<10; i++) Console.WriteLine(Current value = {0},i);
51
Lp trnh C#.NET
Vng lp for (V d)
static void Main(string[] args) { for (int i = 0; i < 25; i++) { if (i % 5 == 0) { Console.Write("\n"); Console.Write("\t{0}", i); } else { Console.Write("\t{0}", i); } } }
52
Lp trnh C#.NET
Vng lp while
Lp trnh C#.NET
Vng lp dowhile
do statement while expression
Cng vic cn thc thi Biu thc kim tra
static void Main(string[ ] args) { int i = 11; do { Console.WriteLine("i: {0}", i); i++; } while (i < 10); } Lp trnh C#.NET
54
55
Lp trnh C#.NET
Ton t ton hc
Cc ton t c bn: cng (+), tr (-), nhn (*), chia (/) Ton t chia ly phn d (modulus): %
static void Main(string[] args) { int i1 = 17; int i2 = 4; Console.WriteLine("Integer:{0} \nFloat:{1} \nModulus:{2}", i1 / i2, (float)i1 / i2, i1 % i2); }
56
Lp trnh C#.NET
newInt=1
newInt=2
57
Lp trnh C#.NET
Ton t quan h
Ton t == != > >= < <= So snh bng So snh khc nhau So snh ln hn So snh ln hn hoc bng So snh nh hn So snh nh hn hoc bng
58
Tn
Lp trnh C#.NET
Ton t logic
Ton t && Chc nng Ton t v logic (x==3) && (y==7) -> false Ton t hoc logic (x==3) || (y==7) -> true Ton t ph nh logic !(x==3) -> true
||
Lp trnh C#.NET
Lp trnh C#.NET
Bi thc hnh s 1
61
Lp trnh C#.NET
Bi thc hnh s 1
Bi 1: Vit mt chng trnh cho php ngi dng nhp tn ca h, sau in li tn di dng mt li cho
62
Lp trnh C#.NET
Bi thc hnh s 1
Bi 3: Vit on chng trnh c vo mt s nguyn dng v kim tra s l chn hay l
63
Lp trnh C#.NET
Bi thc hnh s 1
Bi 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
64
Lp trnh C#.NET
Ni dung mn hc
Chng 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 ng dng vi C#
65
Lp trnh C#.NET
Ni dung chng 4
4.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 Events
Lp trnh C#.NET
66
67
68
Lp trnh C#.NET
K tha (Inheritance)
69
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 tht
70
Lp trnh C#.NET
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.
71
Lp trnh C#.NET
72
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
73
Lp trnh C#.NET
74
Lp trnh C#.NET
Ph nh
Ph phng ng
75
Lp trnh C#.NET
Quan h (relationship)
S lng i tng tham gia vo quan h
Quan h 1 1
Mt lp hc trong mt phng hc
Quan h 1 nhiu
Mt gio vin c th dy nhiu lp
76
Lp trnh C#.NET
77
Lp trnh C#.NET
4.2. Lp v i tng
nh 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 lp
78
Lp trnh C#.NET
Access-modifiers
Access-modifier
public
private
protected
internal
internal protected
Lp trnh C#.NET
V d nh ngha lp
public 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
Phng thc ca lp
80
81
Lp trnh C#.NET
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 tng
83
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 null
84
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 khng
public Class_name() public Class_name( argument list )
V d:
public Time() public Time(System.Datetime t)
85
Lp trnh C#.NET
Xy dng hm to
public 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); } }
86
Lp trnh C#.NET
Kim tra hm to
public class Tester { static void Main() { System.DateTime currentDate = System.DateTime.Now; Time t = new Time(currentDate); t.DisplayCurrentTime(); } }
87
Lp trnh C#.NET
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; }
89
Lp trnh C#.NET
Gi hm to sao chp
public 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(); } }
90
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 hp
1) Ch r thnh phn (thuc tnh) ca i tng, trnh nhm ln vi tn bin, trnh s nhp nhng v tn
public void SomeMethod (int hour) { this.hour = hour; }
91
Lp trnh C#.NET
Lp trnh C#.NET
93
Lp trnh C#.NET
Lp trnh C#.NET
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) 95
Lp trnh C#.NET
96
Lp trnh C#.NET
97
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
98
Lp trnh C#.NET
100
Lp trnh C#.NET
Gi phng thc
System.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
101
Gi phng thc
System.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
102
Lp trnh C#.NET
104
Lp trnh C#.NET
Ly v gi tr ca thuc tnh
Lp trnh C#.NET
c th gn gi tr s dng hm to tnh
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
Bi thc hnh s 2
111
Lp trnh C#.NET
112
Lp trnh C#.NET
Tng qut ha v c th ha
C 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 113
Lp 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
114
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().
115
Lp trnh C#.NET
Lp trnh C#.NET
117
Lp trnh C#.NET
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
118
Lp trnh C#.NET
120
V D Lp tru tng
121
Lp trnh C#.NET
122
Lp trnh C#.NET
123
Lp trnh C#.NET
Boxing
using System; class Boxing { public static void Main( ) { int i = 123; Console.WriteLine ("The object value = {0}", i); } }
124
Lp trnh C#.NET
Unboxing
public 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 ); } }
125
Lp trnh C#.NET
Bi thc hnh s 3
Bi 1: Xy dng cc lp Fish, GoldFish v Shark theo thit k di y
126
Lp trnh C#.NET
127
Hm chng ton t
128
Lp trnh C#.NET
Fraction.operator+(firstFraction, secondFraction)
129
Lp trnh C#.NET
Bi thc hnh s 3
Bi 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 +, -, *, /, ==, !=
130
Lp trnh C#.NET
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; } } }
132
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;
133
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)
134
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) 135
Lp trnh C#.NET
V d
interface 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;} } }
136
Lp trnh C#.NET
137
Lp trnh C#.NET
138
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(); }
139
Lp trnh C#.NET
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;
140
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 type
141
Lp trnh C#.NET
142
143
Lp trnh C#.NET
Bi thc hnh s 4
Xy dng cc lp phng tin giao thng di y theo thit k
144
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()
145
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 tng
146
Lp trnh C#.NET
Lp trnh C#.NET
Lp trnh C#.NET
V d
public 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()); } } }
149
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
Tn mng/ Tp hp
150
V d
Khi cc phn t mng l kiu gi tr
foreach ( int i in intArray ) { Console.WriteLine( i.ToString( ) ); }
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.
152
Lp trnh C#.NET
Lp trnh C#.NET
Bi thc hnh s 5
Bi 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
154
Lp trnh C#.NET
4.8. Strings
public sealed class String :
IComparable<T>, ICloneable, IConvertible, IEnumerable<T>
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.
155
Lp trnh C#.NET
To chui
Cch thng thng
string literalString = "This is a string literal \n";
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 thc
Empty Compare() Concat() Copy() Equals() Format()
Lp trnh C#.NET
M t
Thuc 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 chui
157
V d
static 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(); }
158
Lp trnh C#.NET
159
Lp trnh C#.NET
V d s dng Stringbuilder
static 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); }
160
Lp trnh C#.NET
161
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
162
Lp trnh C#.NET
163
Lp trnh C#.NET
164
Lp trnh C#.NET
V d
public 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...");
Lp trnh C#.NET
166
Lp trnh C#.NET
167
Lp trnh C#.NET
Cu lnh trycatch
C# s dng cu trc trycatchfinally kim tra, bt v x l ngoi l
try { //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 }
168
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
169
Lp trnh C#.NET
Bi thc hnh s 5
Bi 2: Vit mt phng thc
170
Lp trnh C#.NET
Ni dung mn hc
Chng 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 ng dng vi C#
171
Lp trnh C#.NET
Ni dung chng 5
5.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 5.5. Lp trnh Socket
172
Lp trnh C#.NET
173
Lp trnh C#.NET
174
Lp trnh C#.NET
Cc file cu thnh
Form1.cs: cha m chng trnh ca ngi dng Form1.Designer.cs: do b VS 2005 t ng sinh trong qu trnh thit k
class frmHello
175
Lp trnh C#.NET
Form1.cs
176
Lp trnh C#.NET
Form1.Designer.cs
177
Lp trnh C#.NET
Vit m
S kin ngi dng click vo nt Hello
private 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)
178
Lp trnh C#.NET
Vit m (tip)
S kin ngi dng click vo nt Good bye
private 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
179
Lp trnh C#.NET
180
Lp trnh C#.NET
Label
iu khin label cha vn bn tnh trn form Mt s thuc tnh thng dng
Text Text align
C# h tr iu khin Linklabel (k tha lp Label) cho php link n cc lin kt (website, forum). Mt s thuc tnh thng dng
Text LinkArea LinkBehavior
181
Lp trnh C#.NET
Textbox
iu khin Textbox cho php ngi dng nhp thng tin hoc hin th cc thng tin di dng vn bn
Mt dng Nhiu dng
182
Lp trnh C#.NET
RichTextBox
Cho php kh nng nh dng, chnh sa mnh hn nhiu so vi iu khin textbox
183
Lp trnh C#.NET
Radio button: chn duy nht mt trong nhiu ty chn khc nhau
184
Lp trnh C#.NET
List Control
List controls bao gm ba iu khin c bn: Listbox, CheckedListBox v ComboBox
C th a d liu vo bng lnh Add Gn iu khin vi mt ngun d liu sn c (Data binding)
185
Lp trnh C#.NET
Bi thc hnh s 6
186
Lp trnh C#.NET
187
Lp trnh C#.NET
C s d liu quan h
C s d liu: L s lu tr d liu c t chc. H qun l c s d liu (DBMS):
Cung cp c ch lu tr, qun l d liu mt cch ph hp vi nh dng d liu. Cho php lu tr v truy cp ti c s d liu m khng cn bit v nhng khai bo bn trong c s d liu. V d nh SQL Server, Microsoft Access l cc h qun l c s d liu.
188
Lp trnh C#.NET
Bao gm cc bng
Cc hng c gi l cc mu tin (records) Cc ct c gi l cc trng ( fields) Kho chnh (Primary key) mt hng phi c kha chnh nhm phn bit n vi cc hng khc. Do kha chnh phi c gi tr duy nht v khng c gi tr null
189
Lp trnh C#.NET
190
Lp trnh C#.NET
Lp trnh C#.NET
Quan h 1-1: quan h trc tip gia 2 bng d liu. V d bn c 2 bng Person1, Person2 th quan h Kt hn l quan h 1-1. Mt cch khc khi m 2 bng c quan h thng qua 2 kha chnh th quan h l 1-1. Quan h 1-N: ng vi mt hng trong bng ny c nhiu hng trong bng khc. Chng hn nh quan h gia 2 bng Employee v Order nh va ri l quan h 1-N. Quan h N-N: c thit lp khi mt hng trong Parent table c nhiu hng trong Child table v ngc li.
192
Lp trnh C#.NET
193
Lp trnh C#.NET
V d
tblUsers
tblMemos
tblMeetings
194
Lp trnh C#.NET
V d
195
Lp trnh C#.NET
c dng yu cu d liu (thc hin truy vn ) v thao tc trn d liu thc hin cc lnh SQL, bn s dng SQL Query Analyzer. C th m trc tip t ca s SQL Server Enterprise Manager bng cch chn Tools\SQL Query Analyzer nh sau
196
Lp trnh C#.NET
197
Lp trnh C#.NET
Truy vn SELECT
Chc nng:
Trch thng tin t mt hay nhiu bng trong mt CSDL.
C php:
SELECT danh_sch_cc_ct FROM tn_bng (Du * cho php trch mu tin vi tt c cc ct trong bng.)
198
Lp trnh C#.NET
Mnh WHERE
Chc nng: Truy xut d liu trong bng theo cc iu kin no . C php: SELECT tn_ct FROM tn_bng WHERE tn_ct php_ton gi_tr
Php ton = <> > < >= <= BETWEEN LIKE M t So snh bng So snh khng bng Ln hn Nh hn Ln hn hoc bng Nh hn hoc bng Nm gia mt khong So snh mu chui
199
Lp trnh C#.NET
Mnh ORDER BY
Chc nng: Sp xp kt qu tr v theo mt tiu chun bt k. V d: Ta c bng Orders sau:
Lnh
cho kt qu
200
Lp trnh C#.NET
Mnh ORDER BY
Ta cng c th sp xp theo th t gim dn ca OrderNumber bng cch nh lnh: SELECT Company, OrderNumber FROM Orders ORDER BY OrderNumber DESC Kt qu tr v:
201
202
Cu lnh SQL sau: INSERT INTO Persons (LastName, Address) VALUES ('Rasmussen', 'Storgt 67') s to ra kt qu trong bng Persons :
203
Lp trnh C#.NET
Chc nng: Cp nht hay sa i d liu c trong bng. C php: UPDATE tn_bng SET tn_ct = gi_tr_mi WHERE tn_ct = gi_tr
204
Lp trnh C#.NET
b xung thm phn tn cho ngi c h l Rasmussen ta nh lnh sau: UPDATE Person SET FirstName = 'Nina' WHERE LastName = 'Rasmussen Kt qu tr v:
205
Lp trnh C#.NET
Truy vn xa DELETE
Chc nng: Xo cc dng ra khi bng. C php: DELETE FROM tn_bng WHERE tn_ct = gi_tr V d xo ngi c tn Nina Rasmussen:
DELETE FROM Person WHERE LastName = 'Rasmussen'
206
Lp trnh C#.NET
ADO.NET
ADO (Active Data Object) ang l mt i tng ph bin trong lp trnh c s d liu, bn s dng ADO kt ni vi bt k c s d liu tng thch. N cung cp h giao tip lp trnh ng dng API (application program interface) truy nhp vo c s d liu h thng. ADO.NET l i tng c s dng trong .NET
207
Lp trnh C#.NET
Lp Connection
.NET Data Provider l mt phn ca m hnh lp trnh ADO.NET, bao gm 4 lp sau: Connection: lp kt ni c s d liu. DataAdapter: lp cha d liu. Command: lp cha lnh. DataReader: lp c d liu. Bn cn khai bo Connection khi mun truy cp loi d liu ngun. C 3 loi kt ni Microsoft cung cp trong .Net Framework bao gm OdbcConnection, OleDbConnection ,SqlConnection. SqlConnection ti u ha cho qu trnh kt ni vi CSDL SQL Server 7.0 v phin bn mi hn. Trong khi Odbc v OleDb c s dng cho MS Access hay MySQL,
Lp trnh C#.NET
208
Lp DataAdapter
Lp DataAdapter dng nhn d liu t d liu ngun, sau chuyn vo DataSet v cc lp quan h nh DataTable (xem v lp khng kt ni phn sau). N cng c trch nhim cp nht d liu thay i vo d liu ngun. Cc pht biu trong SQL c nhng vo C# bng i tng Command. B iu hp s s dng i tng Command truy vn v cp nht d liu. V th lm vic c vi DataAdapter, bn phi ch r v s dng i tng Command. DataAdapter chia thnh 3 lp c th: OleDbDataAdapter , OdbcDataAdapter, 209 SqlDataAdapter
Lp trnh C#.NET
S dng ngun d liu qua ODBC S dng ngun d liu qua ADO.NET
210
Lp trnh C#.NET
Socket
a ch IP (IP Address) S hiu cng (Port Number)
211
Lp trnh C#.NET
Giao thc s dng FTP Data FTP Control SMTP HTTP POP3
Lp trnh C#.NET
213
Lp trnh C#.NET
214
Lp trnh C#.NET