CHƢƠNG I: TỔNG QUAN VỀ LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG
1. Các kỹ thuật lập trình
1.1. Lập trình tuyến tính
Cách tip cn n ca lp trình tuyn tính là ln t. Các câu lnh ca
c thc hin tun t t u ti cui theo trình t xut hin, lnh này k tip lnh kia
cho ti khi k
c lp trình bng mã nh phân, s dng các công tc
n liu i dng nh phân c th
hin bng vic có hay không xut hin các l c trên mt tm bìa (punched card) ti
các v c.
Hình (I.1) Chƣơng trình máy tính trên bìa đục lỗ
Sau này, khi yêu cu x lý d liu lc tu câu
lc s dng các bit nh phân t ra rt hn ch. Vì v li ta s
dng các câu lnh gn vi ting Anh gi là ngôn ng lch s
dch các câu lnh này sang ngôn ng thc thi. Các ngôn ng lp trình c
thit k ltrình làm các công vi Phn
l i ngn.
Đặc trƣng
c thc hin mn theo li tun t. Bn thân
i ngn và ít câu lnh
ng: Ch có mt lung duy nht và các câu lc thc hin tun t theo
lu
Tính chất
n, d hiu. Lp trình tuyn tính ng d
n
m: Khó thc hii vi các ng dng phc tp
Ngôn ng lp trình tuyn tính không có kh m soát phm vi nhìn thy ca các d
liu. Mi d liu là d liu toàn c b si
bt k phn nào ca i không mong mua các
phn t d liu trong mt dãy mã lnh ng làm cho các lp trình viên rt
mt thi gian.
1.2. Lập trình cấu trúc
Khi kh nhu cu thc thi c tp
lên. Các ngôn ng lp trình c n cn thi s dng li
t h lp trình tuyn tính. Tht ra, mt
n lng c chép lp li mi khi chúng ta dùng trong nhiu
t dài dòng. Thêm vi ng u khin nhn
nhiu ch nên logic cu.
V bn ch (còn gi là hàm hay
th tc) thc hin các công vic ri rc trong quá trình lc t
c gi c lp vi nhau càng nhiu càng tt, mi hàm có d liu và logic riêng.
c chuyn giao gia các hàm thông qua các tham s, các hàm có th có các
bin cc b mà bên ngoài phm vi ca hàm không th truy xuy, các
hàm có th t chung v xây dng nên mt
ng dng.
Mt khái nim l p trình có cu trúc là sự trừu tƣợng hóa
(Abstraction). S trng hóa có th t s vic mà không
cn các chi tit bên trong ca nó. Trong mu trúc, chúng ta
ch cn bit m c mt công vic c th . Còn làm th nào
mà công vii thc hic là không quan trng, chng nào hàm còn tin cc thì
còn có th dùng nó mà không cn phi bit nó thc hin ch c
th u này gi là sự trừu tƣợng hóa theo chức năng (Functional abstraction) và là
nn tng ca lp trình có cu trúc.
Các ngôn ng lp trình cu trúc ph bin là Pascal, C và C++. Riêng C++ ngoài vic
a lp trình cu trúc do k tha t a lng.
c gi là ngôn ng lp trình na cu trúc, nng.
Đặc trƣng
n nht ca lp trình cu trúc th hin mi quan h:
Chƣơng trình = Cấu trúc dữ liệu + Giải thuật
Cu trúc d liu là cách t chc d liu, cách mô t i dng ngôn ng lp
trình
Gii thut là m thc hin mt công vinh
i thut có quan h ph thuc vào cu trúc d liu:
Mt cu trúc d liu ch phù hp vi mt s hn ch các gii thut.
Ni cu trúc d liu thì phi gii thut cho phù hp.
Mt gii thung phi mt cu trúc d liu nhnh.
Tính chất
M c gi thc hin nhiu ln trong m
chính.
c g thc hin theo mt th t bt kì, tu
thuc vào gii thu thuc vào th t khai
báo c
Các ngôn ng lp trình cu trúc cung cp mt s cu trúc lu khi
trình.
Ƣu điểm
a, d hiu, d theo dõi.
i thut rõ ràng.
Nhƣợc điểm
Lp trình cu trúc không h tr vic s dng li mã ngun: Gii thut luôn ph
thuc cht ch vào cu trúc d lii cu trúc d liu, phi thay
i gii thui vit l
Không phù hp vi các phn mm lu trúc vi các gii thut ch phù
hp vi các bài toán nh, nm trong phm vi mt modul ci d
án phn mm ln, lp trình cu trúc t ra không hiu qu trong vic gii quyt mi
quan h a các modul ca phn mm.
2. Lập trình hƣớng đối tƣợng
Xut phát t hai hn ch chính cp trình cu trúc:
Không quc s i d liu khi có nhii mt
bin chung. V c bit nghiêm trng khi các ng dng ngày càng ln,
i ta không th kic s truy nhn các bin d liu chung. 8
Không tit kii: Gii thut gn lin vi cu trúc d liu,
ni cu trúc d liu, s phi gii thui vit li mã
u.
khc phc hai hn ch này khi gii quyt các bài toán li ta xây dng mt
p cn m ng, vi hai m
chính:
li hn ch s truy nhp t do vào d liu, không quc.
Cho phép s dng li mã ngun, hn ch vic phi vit li mã t u cho các
Vi lic thc hing thành lp
t th
Thu thp các thuc tính ca mng, gn các thu
ng.
Nhóm ng có các thuc tí nhau thành nhóm, loi b bt các
thuc tính cá bit, ch gi li các thuc tính chung nhc gi là quá trình
trng thành lp.
liu cng vào lng. Mi thuc tính cng
tr thành mt thuc tính ca lng.
Vic truy nhp d lic thc hic trang b cho
lc truy nhp t do trc tin d liu.
i trong d liu cng, ta ch cc truy
nhp thuc tính ca lp, mà không cn phi mã ngun c
s dng lng.
Vic cho phép s dng li mã nguc thc hi k tha trong lp trình
Các lp có th c k tha nhau tn dng các thuc ca
nhau.
Trong lp dn xut (lc k tha) có th s dng lc ca lp
(lp b lp khác k tha) mà không cn thit pht li mã ngun.
Ngay c khi lp dn xunh ngc cho mình, l
không b ng và không phi sa li bt kì mn mã ngun nào.
Ngôn ng lng ph bin hin nay là Java và C++. Tuy nhiên, C++ mc
n ca lp trình n không phi là
ngôn ng lp trình thu ng. Java tht s là mt ngôn ng lp trình thun
ng.
Đặc trƣng
Ln:
liu: d lic t chc thành các thuc tính ca lng.
Vic truy nhn d liu phc cng lp.
S dng li mã ngun: vic s dng li mã nguc th hi k
th này cho phép các lng có th k tha t các lng
khác. Khi p k tha, có th s dc (mã ngun) ca
các lp b k tha, mà không cn phi.
Trong lng chúng ta có:
Đối tƣợng = Phƣơng thức + Dữ liệu
Ƣu điểm
Lng có mt s m ni bt:
liu b i t lic
ng. Nu mun truy nhp vào d liu phi thông qua các
c cho phép cng.
Khi i cu trúc d liu ca m ng, không c i mã
ngun ca ng khác, mà ch ci mt s hàm thành phn ci
ng b i. u này hn ch s ng xu ca vii d lin
ng khác
Có th s dng li mã ngun, tit kim tài nguyên. Vì nguyên tc k tha cho phép
các lp k tha s d c k tha t l ng
c ca chính nó, mà không cn thit phi.
Phù hp vi các d án phn mm ln, phc tp.
3. Lập trình hƣớng đối tƣợng bằng ngôn ngữ C#
mô t các k thut trong l i ta
ng s dng ngôn ng lp trình Java mt ngôn ng lp trình thung
hoc C++.
Tuy nhiên, vi hai mt ra: mt là d dàng tip c
thi gian tìm hiu các k thut ln phát trin các ng dng
trên h u hành windows, hai là s dng thành tho b công c phát trin Visual Studio.net
ng dn t nên tác gi s dng ngôn ng l trình bày
các k thut trong lng vi các lý do sau
C# là ngôn ngữ đơn giản: C# loi b mt vài s phc tp và ri rm ca nhng ngôn ng
nh Java và c++, bao gm vic loi b nhng macro, nhng template, a k tha, và lp c
s o (virtual base class). Chúng là nhng nguyên nhân gây ra s nhm ln hay dn n
nhng vn cho các ngi phát trin.
C# là ngôn ngữ hiện đại: iu gì làm cho mt ngôn ng hin i? Nhng c tính nh là
x lý ngoi l, thu gom b nh t ng, nhng kiu d liu m rng, và bo mt mã ngun
là nhng c tính c mong i trong mt ngôn ng hin i. C# cha tt c nhng c
tính trên.
C# là ngôn ngữ hƣớng đối tƣợng: Nhng c im chính ca ngôn ng hng i tng
(Object-oriented language) là s ng gói (encapsulation), s k tha (inheritance), và a
hình (polymorphism). C# h tr tt c các c tính trên.
C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo: C# c s dng cho nhiu các d án khác
nhau nh là to ra ng dng x lý vn bn, ng dng ha, bn tí
CHƢƠNG II: C# CƠ BẢN
1. Ứng dụng Console
ng dng console giao tip vi ngi dùng thông qua bàn phím và không có giao din
ngi dùng (UI), ging nh các ng dng thng thy trong Windows. tìm
hiu các k thut trong lng và dùng ngôn ng mô t các k
thut này ta vit các ng dng console
Ti tìm hiu và s d xây dng các ng dng có giao di
ha trên Windows. Ni dung này s c trình bày tron
Ví dụ (II.1) Tạo dự án C# console đầu tiên
c 1: M Visual Studio
c 2: Chn menu File->New- to mt d án console based v
và tên Solution là Hình (II.1)
Hình (II.1) Cửa sổ tạo dự án mới
c 3i tên l
i
using System;
class Example
{
static void Main(string[] args)
{
Console.WriteLine("This is the my first program using C#”);
Console.ReadLine();
}
}
c 5: Chn File -> Save
c 6: Chn Build - dch d án
c 7: Chn Debug - ch
Màn hình hin th c
Hình (II.2) Màn hình hiển thị Ví dụ (II.1)
2. Biến và hằng
Khai báo và gán giá tr cho bin: <kiu> <tên bin> = <giá tr>;
Khai báo và gán giá tr cho hng: const <kiu> <tên hng> = <giá tr>;
tên bin và hng phi tuân theo các quy tc sau:
Ch bu bng mt kí t (ch), hoc mt du gi , hoc mt kí t dollar
Không có khong trng gia tên
T kí t th hai, có th dùng các kí t (ch), ch s, du dollar, du gi
Không trùng vi các t khoá
Phân bit ch hoa ch ng
3. Kiểu dữ liệu
C# phân tp hp kiu d liu này thành hai loi: Kiu d liu giá tr (value) và kiu d liu
tham chiu (reference). i vi mt kiu d liu giá tr thì s c lu gi kích thc tht
trong b nh ã cp phát là stack. Trong khi thì a ch ca kiu d liu tham chiu thì
c lu trong stack nhng i tng tht s thì lu trong b nh heap
Kiểu dữ liệu
Số byte
Mô tả
byte
1
S nguyên không du giá tr t 0 255
char
2
Ký t Unicode
bool
1
Giá tr logic true/false
sbyte
1
S nguyên có du giá tr t-128 127
short
2
S nguyên có du giá tr t -32768 32767
ushort
2
S nguyên không du giá tr t 0 65536
int
4
S nguyên có du giá tr t 2,147,483,648 2,147,483,647
uint
4
S nguyên không du giá tr t 0 4,294,967,295
long
8
S nguyên có du giá tr t
-9,223,372,036,854,775,808 9,223,372,036,854,775,807
ulong
8
S nguyên không du giá tr t 0 18,446,744,073,709,551,615
float
4
Kiu só thc du phng giá tr t
-3.402823e38 3.402823e38
double
8
Kiu s thc du ph chính xác g t
-1.79769313486232e308 1.79769313486232e308
decimal
8
Giá tr th chính xác ti 28 ch sc dùng trong
tính toán tài chính, kii phi có hu t m hoc M theo
sau giá tr
Bảng (II.1) Các kiểu dữ liệu trong C#
Khi khai báo bii to giá tr cho các bin thì chúng nhn giá tr ngnh
Kiểu dữ liệu
Giá trị ngầm định
u s)
0
bool
False
char
\
enum
0
ng)
null
Bảng (II.2) Giá trị ngầm định
Ví dụ (II.2) sử dụng các kiểu dữ liệu (datatype)
c 1: Thêm mt d án console vi n hành Hình (II.3)
c 2: click chut phi vào project DataTypes -> set as Startup project
i tên file class
Hình (II.3) Các bƣớc thêm một dự án mới vào solution hiện hành
c 4: Sa mã l
using System;
class Example
{
static void Main(string[] args)
{
int intVal;
double dblVal;
string strVal;
intVal = 10;
dblVal = 3.142;
strVal = "Welcome";
Console.WriteLine("{0} is an integer value", intVal);
Console.WriteLine("{0} is an double value", dblVal);
Console.WriteLine("{0} is an string", strVal);
Console.ReadLine();
}
}
c 5: Chn menu File - n
c 6: Chn Build - build d án
c 7: Chn Debug - ch
Hình (II.4) Màn hình hiển thị Ví dụ (II.2)
Trên Bng (II.1) trình bày các kiu d lic xây dng sn (Built-in datatypes) trong ngôn
ng lp trình C#. Ngoài ra ta có th xây dng các kiu d liu phc hp t các kiu d li
gi là các kiu d li-u lit kê (enum),
cu trúc (struct), mng (array), lp (class)
Mt kiu d liu tiên là kiu lit kê. Kiu lit kê bao gm mt
tp các giá tr hc, ng t khóa enum.
Ví dụ (II.3) Kiểu liệt kê:
c 1: Thêm mt d án console vn hành
c 2: click chut phi vào project EnumType -> set as Startup project
c 4: Sa mã l
class EnumType
{
// Khai báo kiểu liệt kê
enum NhietDoNuoc
{
DoDong = 0,
DoNguoi = 20,
DoAm = 40,
DoNong = 60,
DoSoi = 100,
}
static void Main(string[] args)
{
Console.WriteLine( "Nhiet do dong: {0}", NhietDoNuoc.DoDong);
Console.WriteLine( "Nhiet do nguoi:{0}", NhietDoNuoc.DoNguoi);
Console.WriteLine( "Nhiet do am: {0}", NhietDoNuoc.DoAm);
Console.WriteLine( "Nhiet do nong: {0}", NhietDoNuoc.DoNong);
Console.WriteLine( "Nhiet do soi: {0}", NhietDoNuoc.DoSoi);
Console.ReadLine();
}
}
c 5: Chn menu File - n
c 6: Dch và ch

-->