Tải bản đầy đủ (.pdf) (120 trang)

MICROSOFT NET PROFESSIONAL PROGRAMMING

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.57 MB, 120 trang )

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


×