MICROSOFT .NET (C#)
PROFESSIONAL PROGRAMMING FOR REAL LIFE
TƠc gi :
Email:
Công ty:
Ph m Tuấn Anh
Xa Lộ Thông Tin (iNGA Co.,Ltd.)
L I NG
Toơn t p giƠo trình nơy lơ k t qu c a s cô đ ng nh ng ki n th c cần thi t giúp
b n lơm ch n n t ng .NET cho công vi c. Chúng tôi đã đúc k t nh ng kinh nghi m
th c t , rút g n nh ng đi m cần lưu Ứ, nh ng kỹ thu t mơ hầu h t cƠc công ty
phần m m phƠt triển ng d ng trên n n t ng .NET đ u yêu cầu th c hi n. H n n a
đây cịn lơ tơi li u mơ b n có thể s d ng để ôn t p l i nh ng ki n th c sau
nh ng gi lên lớp vơ đặc bi t trong công vi c c a cƠc b n.
Xuất thân từ một nhơ phƠt triển, chun gia phân tích h thống, tơi đã gói nh ng
ki n th c cốt lõi vơ cần thi t nhất trong l p trình trên cơng ngh .NET vơo tơi
li u nơy. Nh ng ví d trong tơi li u lơ nh ng ví d th c t đư c tơi trích l c
từ nh ng d Ơn mơ tôi vơ đồng s đã th c hi n trong suốt th i gian tham gia lơm
vi c tơi nhi u cơng ty phần m m lớn, đó lơ cƠc tình huống c thể mơ chúng tơi
gặp ph i, vơ gi đây tôi tổng k t l i để giới thi u đ n cƠc b n như một s chia
sẻ kinh nghi m.
Sau th i gian lơm vi c vơ ho t động trên m ng thông tin Vi t Nam www.itgate.com.vn - đã có nhi u ngư i b n lơm vi c t i cƠc công ty tin h c trong
nước cũng như cƠc b n bè c a tôi trên m ng g i email, hỏi đƠp vơ yêu cầu tôi
vi t một tơi li u đầy đ v l p trình .NET, chia sẻ nh ng kinh nghi m th c t
trong công vi c để m i ngư i cùng tham kh o, ph i ngắn g n vơ th t s th c t
nhưng l i ph i chuyên sâu vơ thể hi n nh ng kỹ thu t cao trong l p trình. Tơi đã
nghĩ v nh ng u cầu đó, vơ quy t đ nh vi t tơi li u nơy vơo mỗi buổi tối sau
gi lơm vi c. Đây như một món quơ đƠp l i s tín nhi m, yêu m n mơ cƠc b n đã,
đang vơ sẽ dơnh cho tôi.
Tôi rất mong nh n đư c nhi u Ứ ki n đóng góp c a cƠc b n cho tơi li u nơy, vơ
tôi sẽ tổng h p l i để c p nh t cho tơi li u một tốt h n.
Tôi mong rằng tơi li u nơy sẽ đồng hơnh cùng cƠc b n trong công vi c.
TƠc gi
Ph m Tuấn Anh
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
3
B N QUY N TỆC GI
Tơi li u nơy đư c Ph m Tuấn Anh th c hi n nhằm ph c v m c đích đơo t o nhân l c
trong chư ng trình đơo t o cơng ngh .NET do Cổng Công ngh thông tin Vi t Nam
th c hi n, vơ đư c lưu hơnh nội bộ trong ph m vi không gian đơo t o c a chư ng
trình.
Tơi li u nơy đư c xây d ng từ ki n th c vơ kinh nghi m có đư c trong th i gian
dơi ho t động c a ơng Ph m Tuấn Anh, có tham kh o một số tơi li u nước ngoơi
đư c li t kê t i m c THAM KH O cuối tơi li u nơy.
M i s sao chép, sao lưu, xuất b n, chuyển giao không đư c s
Ph m Tuấn Anh lơ không h p phƠp.
cho phép c a ông
TƠc gi
Ph m Tuấn Anh
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
4
M C L C
L P TRỌNH .NET (C#) ..................................... 8
Cấu trúc l p trình C# căn b n------------------------------------------------ 9
ng dụng “C# Hello World”................................................ 9
Ti p c n C#----------------------------------------------------------------- 10
Khai báo bi n trong C#.................................................. 11
Kiểu d li u trong C#................................................... 11
Input/Output trong C# căn b n ...................................... 11
Cấu trúc đi u khiển trong l p trình C# ............................. 12
Cấu trúc if............................................................. 12
Cấu trúc switch … case.................................................. 12
Cấu trúc vòng lặp trong l p trình C# ............................... 13
Vịng
Vịng
Vịng
Vịng
lặp
lặp
lặp
lặp
While......................................................
do.........................................................
for........................................................
foreach....................................................
13
14
14
14
Arrays - M ng trong C# ............................................. 15
Chúng ta đã h c .................................................... 15
Bài t p t th c hi n ............................................... 16
Hi n th c khƠi ni m hướng đối tư ng (OOP) trong C#-------------------------- 17
L p (class) trong C# ............................................... 17
Class................................................................... 18
Đối t ợng (Objects)..................................................... 18
u điểm c a vi c sử dụng Class và Đối t ợng............................. 18
Hàm t o (Constructors) và hàm h y (Destructors) trong C# ........... 18
Constructors............................................................ 18
Destructors............................................................. 19
Fuction Overloading ................................................ 19
Thừa k trong C# ................................................... 20
Overriding, Polymorphism trong C# .................................. 21
Overriding.............................................................. 21
Polymorphism............................................................ 22
Abstract Class trong C# ............................................ 24
Namespaces ......................................................... 24
Khái ni m Namespace..................................................... 24
Khai báo m t Namespace.................................................. 24
C
Enumerator trong C# ................................................ 25
BẪI T P Cọ H NG D N ............................................... 25
S
D
LI U .......................................... 27
Thao tác v i h
qu n trị d
li u MSSQL Server ...................... 28
Khởi t o m t h cơ sở d li u...........................................
T o b ng................................................................
Truy vấn d li u từ m t b ng............................................
Truy vấn d li u có đi u ki n...........................................
Truy vấn d li u từ nhi u b ng..........................................
Thêm d li u vào b ng...................................................
C p nh t d li u trong b ng.............................................
Xóa d li u từ b ng.....................................................
28
28
28
29
29
31
31
31
L P TRỌNH DÀNH CHO CÔNG VI C ........................... 32
ADO.NET vơ thao tƠc với c
s
d
li u--------------------------------------- 33
Gi i thi u v ADO.NET .............................................. 34
Mơ hình ADO.NET .................................................... 34
Data Provider...........................................................
K t nối.................................................................
Data Adapter............................................................
Thu c tính và ph ơng th c c a Data Adapter..............................
Data Command............................................................
Data Reader.............................................................
DataSet.................................................................
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
5
34
35
35
35
36
36
37
BẪI T P Cọ H NG D N ............................................... 38
BẪI T P T RÈN LUY N ............................................... 38
Data Binding ....................................................... 38
Khái ni m Data Binding.................................................. 38
Th c hi n Data Binding thông qua cƯu l nh truy vấn...................... 39
L c và sắp x p d
li u ............................................. 39
L c m t Dataset......................................................... 39
Sử dụng cƯu l nh SQL có tham số......................................... 39
Thêm, c p nh t, xóa d
li u trong cơ sở d
li u .................... 40
Thêm m i d li u vào cơ sở d li u...................................... 40
C p nh t, xóa d li u trong cơ sở d li u............................... 40
XƯy d ng m t l p CSDL dùng chung ................................... 42
XƯy d ng l p giao ti p v i CSDL - DBClass............................... 42
Sử dụng l p giao ti p v i CSDL - DBClass................................ 45
Xây d ng ng d ng Windows Form---------------------------------------------- 45
XƯy d ng Windows Forms ............................................. 45
Visual Studio .NET Integrated Development Environment (IDE)............. 45
T o m t d án trong Visual Studio .Net.................................. 46
Window Form Controls ............................................... 50
Windows Form............................................................
Thu c tính Windows Form.................................................
S ki n trong Windows Form..............................................
TextBox Control.........................................................
Label Control...........................................................
LinkLabel Control.......................................................
ListBox Control.........................................................
ComboBox Control........................................................
CheckBox Control........................................................
RadioButton Control.....................................................
GroupBox Control........................................................
Button Control..........................................................
50
51
51
52
52
53
53
55
55
56
56
56
T o control đ ng trong Windows Form ................................ 56
Sử dụng nh ng l p thừa k CommonDialog ............................. 56
L p ColorDialog......................................................... 56
L p FontDialog.......................................................... 58
Làm vi c v i Menus và xƯy d ng ng dụng MDI ........................ 59
XƯy d ng ng dụng MDI .............................................. 61
Bài t p có h ng d n ............................................... 62
Bài t p t luy n ................................................... 62
Qu n lỨ lỗi trong l p trình C# ..................................... 63
Xây d ng h
XƯy d ng
S
thống
ng d ng trên n n t ng Web - ASP.NET---------------------- 65
ng dụng Hello ASP.NET sử dụng Visual Studio .NET IDE ..... 66
ki n Page_Load()..................................................... 70
Các đối t ợng ASP.NET .............................................. 71
Đối t ợng Request....................................................... 71
Đối t ợng Response...................................................... 72
Đối t ợng Session....................................................... 72
XƯy d ng
ng dụng Web sử dụng Server Controls ...................... 73
Server Controls.........................................................
HTML Server Controls....................................................
HtmlAnchor..............................................................
HtmlInputText...........................................................
HtmlInputCheckBox.......................................................
HtmlInputRadioButton....................................................
HtmlSelect Control......................................................
73
73
74
74
75
75
75
Web Server Controls ................................................ 75
TextBox Control.........................................................
Literal Control.........................................................
FileUpload Control......................................................
Panel Control...........................................................
View & MultiView Control................................................
Calendar Control........................................................
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
6
76
76
76
76
77
77
DropDownList Control.................................................... 77
Đi u khiển các Server Controls ..................................... 78
K t nối cơ sở d li u trong ASP.NET ................................ 80
DataBinding trong ASP.NET...............................................
Binding d li u vào m t DropDownList Control............................
Thu c tính IsPostBack...................................................
Web Server Control Template.............................................
Repeater Control........................................................
Gắn đi u khiển vào Repeater.............................................
80
81
82
82
83
89
T o và sử dụng UserControl..............................................
ng dụng UserControl trong xƯy d ng ng dụng WebPortal..................
Hi n th c ki n trúc WebPortal...........................................
Ki n trúc t i UserControl đ ng sử dụng PlaceHolder......................
Bài t p t ôn luy n.....................................................
91
94
95
96
97
UserControl và
Cấu hình cho
ng dụng trong xƯy d ng WebPortal ................... 91
ng dụng Web ASP.NET .................................. 97
Mục <appSettings>....................................................... 98
Đ c giá trị từ thẻ appSettings.......................................... 98
Thẻ <customErrors>...................................................... 98
Xuất b n m t ng dụng Web ASP.NET .................................. 99
Triển khai m t ng dụng Website ASP.NET trên IIS .................. 100
PhƠt triển h
thống
ng d ng doanh nghi p với .NET------------------------- 105
Web Services. ..................................................... 106
D
Khởi t o và g i m t Web Services....................................... 106
ỆN ................................................. 113
Project 1.----------------------------------------------------------------- 113
D
án: Website thông tin và bán hàng tr c tuy n ................... 113
D
án: H
Project 2.----------------------------------------------------------------- 113
thống qu n trị kho hàng ................................. 113
Đ C THễM .............................................. 113
ASP.NET & AJAX Framework--------------------------------------------------- 114
H c s d li u MySQL Server 5.0 & l p trình thao tƠc d li u với MySQL
Server.-------------------------------------------------------------------- 114
K t nối đ n cơ sở d li u MySQL ................................... 114
Regular Expressions ...................... Error! Bookmark not defined.
Gởi Email từ m t trang ASP.NET .................................... 118
Upload file hình nh vào cơ sở d li u SQL ........................ 118
THAM KH O ............................................. 121
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
7
L P TRỌNH .NET (C#)
.NET lơ n n t ng cho phép phƠt triển nh ng ng d ng mới hoơn toơn trên c hai
môi trư ng Win vơ Web. Khi s d ng .NET, đòi hỏi ph i s d ng một ngôn ng để
khai thƠc h t s c m nh c a nó. C# lơ ngơn ng chúng tôi l a ch n để s d ng vơ
giới thi u đ n b n. C# đư c phƠt triển từ C/C++ vơ gi nguyên tên trong gia đình
C, kỨ t # đư c s d ng như một s khẳng đ nh v tính sắc bén c a ngơn ng nơy,
do đó C# đư c phƠt âm lơ C sharp
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
8
Cấu trúc l p trình C# căn b n
ng dụng “C# Hello World”
Hellow World lơ chư ng trình đầu tiên để m đầu cho vi c h c một ngôn ng
trình nơo đó, với C# cũng th , hãy bắt đầu với “C# Hello World”
l p
Ví dụ 1:
Sau đây lơ chư ng trình C# Hello World, mã nguồn như sau:
/*This is Hellow World C# Program*/
using System;
using System.Collections.Generic;
using System.Text;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Welcome to C# World");
}
}
}
K t qu
xuất hi n c a chư ng trình như sau
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
9
Ti p c n C#
Nh ng ch
đ
chính
T i phần nơy, b n sẽ h c:
Bi n trong l p trình C#.
Kiểu d
li u
Cấu trúc đi u ki n
Cấu trúc vòng lặp
M ng trong C#
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
10
Khai báo bi n trong C#
CƠc bi n trong C# đư c khai bƠo theo công th c như sau:
AccessModifier
DataType
VariableName;
Trong đó,
AccessModifier: xƠc đ nh ưu tiên truy xuất tới bi n
Datatype: đ nh nghĩa kiểu lưu tr
d
li u c a bi n
VariableName: lơ tên bi n
Cấp độ truy xuất tới bi n đư c mô t
như b ng dưới đây
Access Modifier
Mô t
public
Truy c p t i bất kỳ n i đâu
protected
Cho phép truy xuất bên trong một lớp n i bi n nơy đư c đ nh
nghĩa, hoặc từ cƠc lớp con c a lớp đó.
private
Chỉ truy xuất
Kiểu d
bên trong lớp n i mơ bi n đư c đ nh nghĩa.
li u trong C#
CƠc kiểu d
li u đư c s
C# Data Type
d ng trong ngôn ng
C# đư c mô t
Mô t
Ví dụ
object
kiểu d li u c
kiểu khƠc
string
Đư c s d ng để lưu tr
tr kiểu ch cho bi n
int
S d ng để lưu tr
nguyên
giƠ tr
byte
s
d ng để lưu tr
giƠ byte
float
S
d ng để lưu tr
giƠ tr
bool
Cho phép một bi n lưu tr
đúng hoặc sai
b n c a tất c
cƠc
nh ng giƠ
Cho phép một bi n lưu tr
t
char
kiểu số
object obj = null;
string str = "Welcome";
int ival = 12;
byte val = 12;
số th c
float val = 1.23F;
giƠ tr
bool val1 = false;
một kỨ
Input/Output trong C# căn b n
Input /output trong C# đư c th c hi n thông qua vi c s
trong namespace System.
Hai hơm thư ng s
theo b ng dưới đây
bool val2 = true;
char cval = 'a';
d ng hơm c a lớp Console
d ng nhất cho thao tƠc Input/Output lơ:
Console.WriteLine();
Console.ReadLine();
Trong dó,
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
11
Console.WriteLine(): đư c s
Console.ReadLine(): đư c s
d ng để xuất hi n k t qu
d ng để đ c k t qu
nh n vơo.
Xem tại mã nguồn HelloWorld kèm theo tại liệu này
Cấu trúc đi u khiển trong l p trình C#
C# cung cấp hai cấu trúc đi u khiển th c hi n vi c l a ch n đi u ki n th c thi
chư ng trình
Cấu trúc if
Cấu trúc if trong C# đư c mô t
như sau:
if (biểu thức điều kiện)
{
// câu l nh th c thi n u biểu th c đi u ki n đúng
}
[else
{
// câu l nh th c thi n u biểu th c đi u ki n sai
}]
Ví d :
if (20 % 4 > 0)
{
Console.WriteLine("Số 20 không chia h t cho 4");
}
else
{
Console.WriteLine("Số 20 chia h t cho số 4");
}
Cấu trúc switch … case
Cấu trúc swtich….case có cấu trúc như sau:
// switch ... case
switch (variable)
{
case value:
Câu l nh
break;
case value:
Câu l nh
break;
case value:
Câu l nh
break;
default:
Câu l nh
break;
th c thi
th c thi
th c thi
th c thi
}
Ví d :
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
12
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 h t cho 4");
break;
default:
Console.WriteLine("Không thuộc tất c cƠc trư ng h p trên");
break;
}
Cấu trúc vịng lặp trong l p trình C#
C# cung cấp cƠc cấu trúc vịng lặp chư ng trình
While
Do… while
For
Foreach
Sau đây, tôi xin giới thi u công th c vơ ví d
s
d ng cƠc vịn lặp trên
Vịng lặp While
Cấu trúc vòng lặp while
while
(condition)
{
// câu l nh
}
Th c thi câu l nh hoặc một lo t nh ng câu l nh đ n khi đi u ki n không đư c
thỏa mãn.
Ví d :
using System;
class WhileTest
{
public static void Main()
{
int n = 1;
while (n < 6)
{
Console.WriteLine("Current value of n is {0}", n);
n++;
}
}
}
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
13
Vòng lặp do
Cấu trúc vòng lặp while
do
{
// câu l nh
}
white
(condition)
Th c thi câu l nh ít nhất một lần đ n khi đi u ki n không đư c thỏa mãn.
Ví d :
using System;
public class TestDoWhile
{
public static void Main ()
{
int x;
int y = 0;
do
{
x = y++;
Console.WriteLine(x);
}
while(y < 5);
}
}
Vòng lặp for
Cấu trúc vòng lặp for
for (initialization; condition; increment / decrement)
{
// th c thi câu l nh
}
Ví d :
using System;
public class ForLoopTest
{
public static void Main()
{
for (int i = 1; i <= 5; i++)
Console.WriteLine(i);
}
}
Vòng lặp foreach
Cấu trúc vòng lặp foreach
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
14
for (initialization; condition; increment / decrement)
{
// th c thi câu l nh
}
Arrays - M ng trong C#
M ng lơ một nhóm nh ng bi n có cùng một kiểu d li u. Nh ng bi n nơy đư c lưu
tr trong bộ nh ng vùng bộ nhớ k ti p do đó m ng cho phép truy xuất vơ th c thi
đ n từng phần t trong m ng.
Công th c khai bƠo một m ng như sau:
Datatype [] variableName = new Datatype [number of elements];
Trong đó,
number of elements: lơ số phần t
Datatype: kiểu d
c a m ng
li u mơ m ng lưu tr
variableName: lơ tên m ng.
Ví dụ:
// m ng kiểu int
int[] iarray = new int[5];
// m ng kiểu string
string[] sarray = new string[6];
Ví d : cƠch khai bƠo khƠc
string[] sarray2 = { "Welcome", "to", "C# Array" };
Khi l p trình, tùy theo đi u ki n chư ng trình mơ b n có thể ch n l a một trong
hai cƠch trên.
Chúng ta đã h c
Tới đây, b n đã tìm hiểu vơ lơm quen với l p trình trên n n t ng .NET với ngơn
ng C#. Nh ng ki n th c sau b n cần nắm v ng:
C# lơ một ngôn ng
c a Microsoft.
Nh ng kiểu d
m nh, đư c biên d ch vơ th c thi d a trên n n t ng .NET
li u c
b n trong C#, cƠch khai bƠo bi n, m ng trong C#
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
15
Cấu trúc đi u ki n, l a ch n if … else vơ switch… case
Cấu trúc vòng lặp while, do…while, for, foreach
Bài t p t
th c hi n
Để c ng cố ki n th c đã h c, Nh ng bơi t p sau đây đư c yêu cầu th c hi n
1. Vi t chư ng trình cho phép nh t vơo 1 số nguyên dư ng N, vơ hiển th
từ 0 đ n N ra mơn hình
giƠ tr
2. Vi t chư ng trình mƠy tính cƠ nhân cho phép nh p vơo hai số vơ th c hi n tính
toƠn: nhân, chia, cộng, trừ, lỹ thừa
3. Vi t chư ng trình gi i bơi toƠn phư ng trình b c hai: aX2 + bX + c = 0 với
a,b,c lơ cƠc tham số
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
16
Hi n th c khƠi ni m hướng đối tư ng (OOP) trong C#
Chúng ta sẽ h c
Nh ng nội dung trong phần nơy tổng k t hóa nh ng điểm quan tr ng nhất v
ni m OOP trong C#. Nội dung bao gồm
khƠi
Đ nh nghĩa lớp, đối tư ng
Hơm t o (Constructor), hơm h y (Destructor)
Function Overloading.
Thừa k
trong l p trình C#.
Overriding Method.
Polymorphism
Abstract Class trong C#
Namespaces
Enumerators
L p (class) trong C#
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
17
Class
Một Class lơ một khƠi ni m mô t cho nh ng th c thể có chung tính chất vơ hơnh
vi. Class đ nh nghĩa nh ng thuộc tính vơ hơnh vi đư c dùng cho nh ng đối tư ng
c a lớp đó. Do đó có thể nói Class lơ một khuôn m u cho cƠc đối tư ng.
Công th c để t o một class
AccessModifier class className
{
// thân class
}
Đối t ợng (Objects)
Đối tư ng lơ một đ i di n, hay có thể nói lơ một s n phẩm c a một class. Tất c
cƠc đối tư ng đ u có chung nh ng thuộc tính vơ hơnh vi mơ class đ nh nghĩa. CƠch
t o đối tư ng giống như cƠch t o một bi n có kiểu d li u lơ Class.
AccessModifier
ClassName
ObjectName = new ClassName();
u điểm c a vi c sử dụng Class và Đối t ợng
Có một số nh ng ưu điểm c a vi c s d ng Class vơ đối tư ng trong phƠt triển
phần m m. Nh ng ưu điểm nổi b t nhất đư c li t kê như sau:
Duy trì code bằng vi c mơ hình hóa
Đóng gói nh ng s
Kh
năng s
ph c t p trong mã lênh từ ngư i dùng
d ng l i
Cung cấp đ n k
thừa để th c thi nhi u phư ng th c.
Hàm t o (Constructors) và hàm h y (Destructors) trong C#
Constructors
Constructors lơ nh ng hơm đặc bi t cho phép th c thi, đi u khiển chư ng trình
ngay khi kh i t o đơi tư ng. Trong C#, Constructors có tên giống như tên c a
Class vơ không tr l i giƠ tr .
Ví d
class Library
{
private int ibooktypes;
//Constructor
public Library()
{
ibooktypes = 7;
}
public Library(int value)
{
ibooktypes = value;
}
}
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
18
Destructors
Lơ một hơm đặc bi t đư c s d ng để lơm s ch bộ nhớ. CƠch khai bƠo giống như
Constructor nhưng khơng có tham số vơ đư c bắt đầu bằng dấu “~”.
Ví d
class Library
{
private int ibooktypes;
//Constructor
public Library()
{
ibooktypes = 7;
}
public Library(int value)
{
ibooktypes = value;
}
~ Library()
{
//th c thi câu l nh
}
}
Fuction Overloading
Method Overloading xuất hi n khi trong một class có từ hai hơm có cùng tên. Có
hai kiểu Method Overloading:
Function Overloading d a trên số lư ng tham số truy n vơo
Function Overloading d a trên kiểu giƠ tr
tham số truy n vơo.
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 hơm insertbooks
trên lơ một ví d v function overloading trong l p trình
C#. Trong khi hơm th nhất vơ th 2 lơ overloading theo số lư ng tham số, vơ hơm
th 3 với hơm th 2 lơ overloading theo kiểu tham số truy n vơo.
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
19
Thừa k
trong C#
Một trong nh ng ưu điểm nổi b t c a l p trình hướng đối tư ng đó lơ thừa k , đó
lơ s s d ng l i nh ng thuộc tính vơ hơnh vi c a một lớp. Có hai kiểu k thừa
trong l p trình, đ n k thừa vơ đa k thừa.
C# cung cấp mơ hình đ n k
Ví d
v
/* Ví
using
using
using
k
thừa.
thừa trong C#.
d v thừa k trong l trình C# */
System;
System.Collections.Generic;
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();
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);
}
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
20
}
}
K t qu
khi th c thi chư ng trình
ví d trên, Dog vơ Chicken lơ hai lớp k thừa từ lớp Animal, do đó cƠc thuộc
tính như số chân, ifoots vơ tên sName đư ng nhiên xuất hi n trong hai lớp nơy vơ
cho
phép
s
d ng.
Tư ng
t ,
cƠc
hơm
như
setName(),
setFoot(),
displayProperties()
t i lớp Animal cũng đư c k
thừa xuống hai lớp Dog vơ
Chicken. Do đó ta có thể g i nh ng hơm nơy, vơ k t qu hiển th khi g i hơm
displayProperties()
theo đối tư ng objDog vơ objChicken khƠc nhau như hình
trên.
Overriding, Polymorphism trong C#
Overriding
Ví dụ
/* Ví
using
using
using
d v thừa k ,overrding trong l p trình C# */
System;
System.Collections.Generic;
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
{
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ú Ứ hàm này
{
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
21
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ú Ứ hàm này
{
Console.WriteLine("Tiger has " + ifoots.ToString()+ " foots");
}
}
}
K t qu
th c hi n chư ng trình
Hơm displayProperties() trong lớp Tiger overrides hơm displayProperties() trong
lớp Animal
N u một hơm đư c đ nh nghĩa trong lớp con có cùng tên, kiểu với hơm trong lớp
cha, khi ấy hơm trong lớp con sẽ overrides (lơm ẩn) hơm trong lớp cha. Đó đư c
g i lơ overriding.
Polymorphism
Ví dụ
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
22
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()
{
return 1;
}
public int methodC()
{
return 2;
}
}
class Child : Parent
{
public override int methodB()
{
return 3;
}
}
}
K t qu
ch y trư ng trình
Như bình thư ng c a mơ hình k thừa, k t qu tr v khi g i hơm methodA() từ đối
tư ng c a lớp Child ph i lơ “Result is 2”. Nhưng trong k t qu trên, k t qu lơ
“Result is 6”. K t qu
nơy do hơm methodB() t i lớp Child đã override hơm
methodB() t i lớp Parent.
V y ta có thể khƠi quƠt Polymorphism như sau:
Polymorphism không chỉ đ n gi n lơ overriding, mơ nó lơ overrding thơng
minh.
KhƠc bi t gi
Overriding vơ Polymorphism đó lơ trong Polymorphism, s
quy t đ nh g i hơm đư c th c hi n khi chư ng trình ch y.
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
23
Abstract Class trong C#
Abstract Class lơ lớp dùng để đ nh nghĩa nh ng thuộc tính vơ hơnh vi
nh ng lớp khƠc. Một Abstract class đư c dùng như một lớp cha c a cƠc
Từ khóa abstract đư c dùng để đ nh nghĩa một abstract class. Nh ng lớp
nghĩa bằng cƠch dùng từ khóa abstract thì khơng cho phép kh i t o đối
lớp ấy.
chung c a
lớp khƠc.
đư c đ nh
tư ng c a
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 th c thi chư ng trình, b n không thể t o đối tư ng cho lớp Shape, vì nó lơ
abstract class.
Namespaces
Khái ni m Namespace
Đư ng mang tên v tướng danh ti ng Trần Hưng đ o đ u có t i Sơi Gịn vơ Hơ Nội,
v y lơm sao để phân bi t khi ngư i nước ngoơi muốn hỏi v đư ng Trần Hưng Đ o.
CƠch đ n gi n nhất đó lơ khi muốn g i tên đư ng Trần Hưng Đ o t i Hơ Nội thì ta
g i “đư ng Trần Hưng Đ o t i Hơ Nội” vơ tư ng t t i Sơi Gòn lơ “đư ng Trần Hưng
Đ o t i Sơi Gòn” vơ chắc chắn chúng ta sẽ có câu tr l i cho v khƠch đó.
Hơ Nội, Sơi Gịn trong ví d
trên lơ một ví d
cho Namespace.
V y có thể hiểu Namespace lơ một gói nh ng th c thể có thuộc tính vơ hơnh vi độc
l p với bên ngoơi. Nh ng ưu điểm c a namespace đư c li t kê như sau:
TrƠnh đư c s
trùng lặp tên gi a cƠc class.
Cho phép tổ ch c mã nguồn một cƠch có khoa h c vơ h p lỨ.
Khai báo m t Namespace
namespace NamespaceName
{
// n i ch a đ ng tất c
}
Trong đó,
cƠc class
Namespace: lơ từ khóa khai bƠo một NameSpace
NamespaceName: lơ tên c a một Namespace
Ví dụ
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
24
namespace CSharpProgram
{
class Basic
{
}
class Advance
{
}
}
Enumerator trong C#
Enums lơ một lo t tên c a nh ng hằng số. Đư c s
d li u có một lo t nh ng giƠ tr xƠc đ nh.
Ví d
sau mơ t
v
d ng để đ nh nghĩa nh ng kiểu
Enumerator
using System;
using System.Collections.Generic;
using System.Text;
namespace __OOP_polymorphism
{
class Program
{
static void Main(string[] args)
{
// Enummerator
EnumDemo eobj = newEnumDemo();
eobj.getWeekDay(DayinWeek.Saturday);
Console.Read();
}
}
public enum DayinWeek
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
public class EnumDemo
{
public void getWeekDay(DayinWeek dayoff)
{
Console.WriteLine("My weekday is " + dayoff.ToString());
}
}
}
BẪI T P Cọ H
NG D N
Namespace System.IO
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
25
IO Namespace ch a nh ng lớp cho phép thao tƠc đ c vơ ghi d li u đ n nh ng
luồng d li u vơ file. Một số lớp c a System.IO đư c li t kê như sau:
BinaryReader
Binary Writer
Stream
TextReader
TextWriter
Directory
File
FileSystemInfo
PROFESSIONAL PROGRAMMING FOR REAL LIFE
Phạm Tuấn Anh – Công ty Xa Lộ Thông Tin (iNGA Co.,Ltd.)
26