Professional Documents
Culture Documents
C# LT Huong Doi Tuong PDF
C# LT Huong Doi Tuong PDF
Nm 2008
MC LC
Chng I: I TNG V LP
A. TM TT L THUYT.............................................................7
1. Khai bo lp .................................................................................7
2. S dng cc i tng ca lp: ...................................................9
3. T kha this ................................................................................10
4. S dng cc t kha mc truy cp........................................11
5. B khi dng( constructor): ...... Error! Bookmark not defined.
6. B sao chp( copy constructor): Error! Bookmark not defined.
7. Hm hy b (destructor) ............................................................12
8. S dng cc thnh vin tnh static: ............................................14
9. Np chng phng thc .............................................................17
10. ng gi d liu thng qua cc thuc tinh: ...............................17
B. BI TP MU ..........................................................................19
1. Xy dng lp ..............................................................................19
2. S dng lp ................................................................................22
3. Lp lng nhau v cch truy xut................................................32
4. Chng trnh khai bo nhiu lp ...............................................34
5. T kha this ................................................................................39
6. Hm thit lp v hm thit lp sao chp, hm sao chp cho lp
vector ................................................................................................45
7. S dng hm thit lp sao chp v hm hy b ........................50
8. Kiu d liu mng, cc phng thc c gi tr tr v ,
constructor sao chp .........................................................................54
9. S dng cc thnh phn tnh ......................................................59
10. Hm khi to private cm to th hin ca i tng ..........62
11. Np chng phng thc .............................................................64
12. Gi ghm d liu thng qua cc thuc tinh ...............................74
C. CU HOI L THUYT V TRC NGHIM ........................80
D. BI TP T GIAI ....................................................................82
E. BI TP TNG HP: ..............................................................87
Chng II: NP CHNG TON T
A. TM TT L THUYT...........................................................90
1. Ton t: ......................................................................................90
2. Chng ton t: ............................................................................90
Ti liu hng dn thc hnh Mn LTHDT vi C#
Nm 2008
Nm 2008
B. BI TP MU ........................................................................131
I. K tha .....................................................................................131
1. Xy dng lp dn xut tha k t lp c s. ...........................131
2. Mc truy cp Protected .......................................................139
3. Cch truy nhp ca t kha internal v public ........................146
4. Lp c s v i tng thnh phn .........................................152
II. Nghim cm k tha ................................................................160
III. Tinh a hnh. ............................................................................162
IV. Lp tru tng .........................................................................169
V. Xy dng lp lng nhau ...........................................................173
C. MT S CU HOI L THUYT: ........................................176
D. CU HOI T TRA LI ..........................................................179
E. BI TP T GIAI: .................................................................182
Chng IV: GIAO DIN
A. TM TT L THUYT ..........................................................189
1. Khi nim v giao din ............................................................189
2. Ci t mt giao din ...............................................................189
3. Truy xut phng thc ca giao din ......................................190
4. Ton t is:.................................................................................190
5. Ton t as .................................................................................190
6. Thc thi ph quyt giao din ...................................................191
7. Thc hin giao din mt cch tng minh ..............................191
B. BI TP MU ........................................................................191
I. S dng giao din.....................................................................191
II. M rng mt giao din v s thc thi nhiu giao din ca mt
lp 194
III. Xy dng lp thc thi ph quyt mt giao din ......................197
IV. Xy dng lp thc thi giao din mt cch tng minh ...........202
C. CU HOI V TRA LI..........................................................205
D. CU HOI V BI TP T LM .........................................206
Nm 2008
LI M U
Ngy nay khoa hc ang pht trin rt nhanh, c bit l s
bng n ca cng ngh thng tin. Tin hc lun thay i v pht
trin tng gi, tng ngy. Ngn ng lp trnh cng vy. Cc ngn
ng mi lun ra i thay th v khc phc nhng hn ch cho cc
ngn ng c.
Ngn ng lp trnh l mt cng c gip con ngi th hin cc
vn thc t trn my tinh mt cch hu hiu. Vi s pht trin
ca tin hc, cc ngn ng ang dn tin ho p ng cc thch
thc ca thc t.
C# c mnh danh l ngn ng lp trnh hng i tng
mnh nht trong b ngn ng lp trnh .NET ca hng Microsoft
hin nay.
Cun sch ny cung cp cho cc bn nhng kin thc c bn
lin quan n vic nh ngha v ci t lp trnh hng i tng
bng ngn ng C# trong ng dng thc tin v p dng chng cho
m hnh i tng mt cch hiu qu.
Gio trnh bao gm 4 chng:
Chng 1: i tng v lp.
Chng 2: Np chng ton t trn lp.
Chng 3: K tha v a hnh.
Chng 4: Giao din
Vi mi mt chng chng ti c trnh by tm tt nht v l
thuyt v c bi tp gii mu theo tng ni dung. Cui mi chng
l h thng bi tp t gii (c hng dn) gip cc bn tin thc
hnh.
Tuy cun sch ny phn no hon thnh xong, nhng do
thi gian v kin thc c hn chc chn s khng trnh khi nhng
sai lm v thiu st. V vy chng ti rt mong nhn c s ng
gp ca thy c v bn b cun sch ny c hon thin hn.
Chng ti xin chn thnh cm n ti cha, m, anh, ch, em;
thy Nguyn Hu ng cng cc thy c trong khoa Cng ngh
thng tin trng HSPKT Hng Yn to iu kin cho chng
em hon thnh ti ny. Xin cm n mi s gip ca bn b.
Ti liu hng dn thc hnh Mn LTHDT vi C#
Nm 2008
CHNG I
I TNG V LP
Mc tiu: Sau khi tm hiu xong chng ny ngi hc c th nm
c cc ni dung sau:
Khai bo lp
Khai bo v s dng cc i tng ca lp
T kha this
Cc thuc tinh truy cp
Hm thit lp
Hm thit lp sao chp
Hm hy b
S dng cc thnh vin tnh
Np chng phng thc
ng gi d liu thng qua cc thuc tinh
A.
TM TT L THUYT
1. Khai bo lp
Mt lp bao gm c cc thuc tinh v phng thc. khai
bo mt lp ta s dng t kha class vi cu trc sau y:
Nm 2008
class class1
{
// khai bo thuc tnh
// khai bo cc phng thc
public class class2
{
// khai bo cc thnh phn d liu
// khai bo cc phng thc
}
}
Nm 2008
Nm 2008
10
Nm 2008
11
Nm 2008
public classname
{
public classname()
{
// code of constructor
// cc cng vic cn thc hin
}
~ classname()
{
// code of descontructor
// cc cng vic cn thc hin
}
}
12
Nm 2008
~ classname()
{
// Thc hin mt s cng vic
}
V vit :
class1.Finalize()
{
// Thc hin mt s cng vic
base.Finalize();
}
Th hai cch vit nh th ny s c C# hiu l nh nhau.
Trong C# c mt i tng h tr cho cng vic dn rc mi
khi i tng khng cn c tham chiu n l i tng GC
(garbage collector). i tng ny thc hin cng vic rn rc qua
3 bc nh sau:
- Tm kim nhng i tng khng cn c tham chiu na
- C gng cc hot ng gii phng i tng khng cn
c tham chiu
- Thi hnh phng thc finalize() hy i tng
Ngoi ra, trong c ch hy b ca C# cn c phng thc Dispose
l mt phng thc i lp hon ton so vi phng thc Finalize()
ca i tng GC.
Phng thc Dispose l cho php chng trnh thc hin cc
cng vic dn dp hay gii phng ti nguyn mong mun m khng
phi ch cho n khi phng thc Finalize() c gi. Khi ta
khng c php dng phng thc Finalize() trong i tng m
thay vo ta s gi mt phng thc tnh ca lp GC (garbage
collector) l GC.SuppressFinalize( this). Sau phng thc
Finalize() s dng gi phng thc Dispose() nh sau:
public void Dispose()
{
// Thc hin cng vic dn dp
// Yu cu b thu dc GC trong thc hin kt thc
GC.SuppressFinalize( this );
}
public override void Finalize()
{ dn thc hnh Mn LTHDT vi C#
Ti liu hng
Dispose();
base.Finalize();
13
Nm 2008
Cu lnh using:
Mc d phng thc rn rc ca C# l t ng cung cp nhng
khng th chc rng phng thc Dispose() s c gi v vic
gii phng ti nguyn khng th xc nh c. Cu lnh using s
m bo rng phng thc Dispose() s c gi trong thi gian
sm nht. S dng using bng cch gi cu lnh using v truyn
vo tn i tng mun hy b:
using (tn i tng cn hy b)
Khi trong lp khng khai bo mt destructor no th trnh bin
dch s gi tin trnh Garbage collector trong ngn ng C# gii
phng i tng ny trong b nh. Phn ln trong ngn ng C# th
c c ch t ng gom rc mi khi bin khng c tham chiu
n nn chng ta khng cn quan tm nhiu n n nh trong C++.
5. S dng cc thnh vin tnh static:
Thnh vin tnh khng th hin g cho lp v c thuc tinh v
phng thc m n nh l mt thnh phn ca lp.
S dng t kha static khai bo mt thnh vin tnh. Thnh
phn tnh ch c s dng vi lp, phng thc, thuc tinh, s
kin v constructor nhng khng th c s dng vi nhng bn
dy, indexer, destructor hay kiu khc vi nhng lp.
S dng phng thc tnh:
Mt phng thc static c phm vi hot ng ging nh mt
phng thc ton cc m khng cn to ra bt c mt th hin no
ca lp c. Ton cc y hiu theo ngha l ton cc trong lp.
Ti liu hng dn thc hnh Mn LTHDT vi C#
14
Nm 2008
15
Nm 2008
16
Nm 2008
17
Nm 2008
18
B.
Nm 2008
BI TP MU
1. Xy dng lp
V d 1:
Xy dng lp diem vi cc thuc tinh tung , honh ca
im , phng thc i ta gia dng v m, phng thc di
chuyn theo mt gi tr nhp vo t bn phim, phng thc hin
im ln mn hnh.
a, Hng dn:
+ cc thuc tinh gm c:
int x ; // ta honh
int y ; // ta tung
+ cc phng thc ca lp:
nhp thng tin
i ta
phng thc move: di chuyn im
phng thc hien: hin thng tin ln mn hnh
b, Bi gii mu:
class Diem
{
public int x, y;
{
x = ox;
y = oy;
}
public void nhap()
{
Console.WriteLine("Nhap toa do cua diem:");
x = int.Parse(Console.ReadLine());
y = int.Parse(Console.ReadLine());
}
public void move(int dx, int dy)
{
x += dx;
y += dy;
}
public void chuyen()
{
x = -x;dn thc hnh Mn LTHDT vi C#
Ti liu hng
y = -y;
}
19
Nm 2008
Hm khi to s phn t ti a,
Phng thc isEmpty kim tra xem stack c rng khng
Phng thc isFull kim tra xem stack c y khng
Phng thc push v pop thm vo, ly ra mt phn t
a, Hng dn:
Cc thuc tinh ca lp stack gm c:
top: m t phn t u stack
n: s phn t ti a ca stack
20
Nm 2008
Cc phng thc ca lp gm c:
public stack(): khi to gi tr ca stack vi s phn t ti a
pubic bool empty(): tr v gi tr kiu ng sai khi stack rng
hay khng
public bool full(): tr v kiu ng sai khi stack y hay khng
y
public void push (int x):thm mt phn t vo stack
public int pop(): Ly ra mt phn t t stack. y l hm v n
c tr ra gi tr, gi tr chinh l phn t m ta va ly ra c t
stack.
b, Bi gii mu:
using System;
namespace Stack
{
class Stack
{
private int top;
private int []s;
public bool empty()
{
return (top == -1);
}
public bool full()
{
return (top >= s.Length);
}
public Stack ()
{
s = new int[20];
top=-1;
}
public void push(int x)
{
if(!full())
{
Ti liu hng dn thc hnh Mn LTHDT vi C#
21
Nm 2008
top=top+1;
s[top]=x;
}
else
Console.Write("Stack tran");
}
public int pop()
{
if (empty())
{
Console.Write("Stack can");
return 0;
}
else
return s[top--];
}
}
2. S dng lp
V d 1:
Xy dng lp diem nh bi 1 sau vit chng trnh nhp
ta ca im t bn phim, di chuyn mt ta , ly ta i
xng, hin ta ca im ln mn hnh.
a, Hng dn:
Thuc tinh v phng thc ca lp diem ging ht bi trn, khi
mun xy dng chng trnh ta ch vic s dng i tng ca
lp m thi. Mun vy phi khai bo i tng kiu lp bng s
dmg t kha new cp pht vng nh. truy xut n cc
phng thc ca lp th ta truy xut thng qua cc i tng ca
lp diem
Chng hn nh c i tng ca lp la A mun truy xut ti
phng thc nhap() th ta truy nhp nh sau: A.nhap();
22
Nm 2008
23
Nm 2008
{
diem b = new diem();
// bien trong C# luon doc khoi gan gia tri truoc khi su
dung
b.nhap();
Console.Write("diem b ");
b.hien();
Console.WriteLine("toa do doi xung la:");
b.chuyen();
b.hien();
b.move(2, 6);
}
}
}
Kt qu sau khi chy chng trnh l
Nhap toa do cua diem:
8
19
diem b toa do : (8,19)
toa do doi xung la:
toa do(-8,-19)
diem b sau khi di chuyen la:
toa do (-6,-13)
V d 2:
Xy dng chng trnh nhp tam gic, tinh chu vi, din tich v
in ra mn hnh l loi tam gic no: cn, vung, vung cn, u
hay thng.
a, Hng dn:
24
Nm 2008
25
Nm 2008
26
Nm 2008
return (a + b + c);
}
private int loaitg()
{
if((a==b) || (b==c) || (a==c))
{
if (a==b && b==c)
return 1;
else
{
if ((a*a==b*b+c*c) || (b*b==a*a+c*c) ||
(c*c==a*a+b*b))
return 2;
else
return 3;
}
}
else
{
if (a*a==b*b+c*c ||b*b==a*a+c*c ||c*c==a*a+b*b)
return 4;
else
return 5;
}
}
}
class tester
{
static void Main(string[] args)
{
tamgiac tg = new tamgiac();
tg.nhap();
tg.hien();
Console.ReadLine();
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
27
Nm 2008
}
}
Kt qu sau khi chy chng trnh nh sau:
nhap thong so cho tam giac
3
4
5
tam giac ma ban vua nhap la:
do dai ba canh: 3,4,5
chu vi: 12
dien tich:6
la tam giac vuong
28
Nm 2008
using System.Text;
namespace stack
{
class Stack
{
private int top;
private int[] s;
public bool empty()
{
return (top == -1);
}
public bool full()
{
return (top >= s.Length);
}
public Stack()
{
s = new int[20];
top = -1;
}
public void push(int x)
{
if (!full())
{
top = top + 1;
s[top] = x;
}
else
Console.Write("Stack tran");
}
}
public int pop()
{
if (empty())
{
Ti liu hng dn thc hnh Mn LTHDT vi C#
29
Nm 2008
Console.Write("Stack can");
return 0;
}
else
return s[top--];
}
}
class tester
{
static void Main()
{
int n, a, k;
Console.Write("Nhap vao so can doi:");
n = int.Parse(Console.ReadLine());
Console.Write("Nhap vao he so can chuyen:");
a = int.Parse(Console.ReadLine());
Stack T = new Stack();
if (a == 2)
{
while (n != 0)
{
T.push(n % 2);
n = n / 2;
}
Console.Write("Ket qua chuyen sang he nhi phan:");
while (!T.empty())
{
Console.Write("{0}", T.pop());
}
}
if (a == 8)
{
while (n != 0)
{
30
Nm 2008
T.push(n % 8) ;
n = n / 8;
}
Console.Write("Ket qua chuyen sang he bat phan:");
while (!T.empty())
{
Console.Write("{0}", T.pop());
}
}
if (a == 16)
{
string st = "0123456789ABCDEF";
while (n != 0)
{
T.push((int)st[n % 16]);
n = n / 16;
}
Console.Write("Ket qua chuyen sang he thap luc
phan:");
while (!T.empty())
{
Console.Write("{0}",(char)T.pop());
}
}
Console.ReadLine();
}
}
}
Kt qu sau khi chy chng trnh l:
Nhap vao so can doi: 8
Nhap vao he can doi: 2
Ket qua: 1000
31
Nm 2008
32
Nm 2008
static int c;
public void nhap()
{
Console.Write("x =");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("y =");
y = Convert.ToInt32(Console.ReadLine());
Console.Write("c =");
c = int.Parse(Console.ReadLine());
}
public double tong()
{
return (x + y);
}
public class tinhhieu // lop long
{
int a;
int b;
public void nhap()
{
Console.WriteLine("nhap thong tin cho doi tuong
lop ben trong:");
Console.Write("a =");
a = int.Parse(Console.ReadLine());
Console.Write("b =");
b = int.Parse(Console.ReadLine());
}
public int hieu()
{
return (a - b - c);
}
}
static void Main(string[] args)
{
Console.WriteLine("khai bao va su dung lop chua:");
Ti liu hng dn thc hnh Mn LTHDT vi C#
33
Nm 2008
34
Nm 2008
35
Nm 2008
36
Nm 2008
{
Console.Write("so hoc sinh = ");
n = Convert.ToInt32(Console.ReadLine());
ds = new Hocsinh[n];
for (i = 0; i < ds.Length; i++)
ds[i] = new Hocsinh();
for (i = 0; i < n; i++)
{
Console.WriteLine("hoc sinh thu {0}:", i + 1);
ds[i].nhap();
}
}
public void printds()
{
Console.WriteLine("danh sach hoc sinh ban dau:");
for (i = 0; i < ds.Length; i++)
{
Console.WriteLine("\t \ t \t ");
Console.Write("\t{0}", i + 1);
ds[i].print();
}
}
public void sapxep()
{
for (i = 0; i < n; i++)
{
Hocsinh max = ds[i];
for (i = 0; i < n; i++)
{
if (max.ssnamsinh(ds[i], ds[i + 1]) == 1)
{
max= ds[i + 1];
ds[i + 1] = ds[i];
ds[i] = max;
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
37
Nm 2008
38
Nm 2008
5. T kha this
1. S dng this phn bit tham s phng thc v bin thnh
vin ca lp.
Xy dng lp phung trnh bc hai n gin v thc hin tinh
nghim cho phng trnh . Trong chng trnh c xy dng hm
thit lp khng tham s v c tham s. S dng t kha thi trong
bi phn bit r bin thnh vin ca lp v tham s ca phng
thc.
a, Hng dn:
V trong bi ch yu cu xy dng mt lp n gin nn thnh phn
thuc tinh v phng thc gm c:
Thuc tinh: Cc h s ca phng trnh bc hai;
public double a, b, c;
Phng thc :
Phng thc khi to khng tham s: public ptbachai()
Phng thc khi to ba tham s:public ptbachai(int a, int b,
int c)
V trong phng thc ny ta s dng tham s ca phng thc
trng vi bin thnh vin ca lp nn ta phi s dng t kha thi
phn bit gia chng.
Phng thc nhp
Phng thc hin phng trnh
Phng thc tinh nghim
b, Bi gii mu:
Ti liu hng dn thc hnh Mn LTHDT vi C#
39
Nm 2008
using System;
namespace vidu4
{
class Ptbachai
{
public double a, b, c;
public ptbachai()
{
a = 5;
b = 3;
c = 8;
}
public ptbachai(int a, int b, int c)
{
this.a = a;
this.b = b;
this.c = c;
}
public void nhap()
{
Console.WriteLine("nhap he so cho PTB2:");
a = Convert.ToInt32(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());
}
private void tinhnghiem()
{
double x, y;
double delta;
delta=this.b*this.b-4*this.a*this.c;
if (delta < 0)
{
Console.WriteLine("khong co nghiem");
}
else
Ti liu hng dn thc hnh Mn LTHDT vi C#
40
Nm 2008
{
if (delta == 0)
{
x = -this.b / 2 *this. a;
Console.WriteLine("nghiem kep x = y ={0}",x);
}
else
{
x = (-this.b - Math.Sqrt(delta)) / 2 *this.a;
y = (-this.b + Math.Sqrt(delta)) / 2 *this.a;
Console.WriteLine("PT co hai nghiem phan
biet:");
Console.WriteLine("x = {0}; y = {1}", x, y);
}
}
}
public void hien()
{
Console.WriteLine("phuong trinh bac hai:");
Console.WriteLine("{0}*x2 + {1}*x + {2}", this.a,
this.b, this.c);
}
class tester
{
static void Main(string[] args)
{
ptbachai x = new ptbachai();
x.hien(); x.tinhnghiem();
ptbachai y = new ptbachai();
y.nhap();
y.hien();
y.tinhnghiem();
Console.ReadKey();
}
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
41
Nm 2008
}
}
Trong phng thc khi to ba tham s c cu lnh this.a=a
th this.a chinh l bin thnh vin ca lp cn a y li l tham s
ca phng thc m bn nhp vo khi chy chng trnh v n
c truyn vo bng cu lnh gn. Cc bin public c truy xut
ti mi ni trong chng trnh. Bin khai bo bng t kha ny
c hiu nh l bin cng cng ca lp v c th truy xut bt k
nu mun.
Kt qu sau khi chy chng trnh:
phuong trinh bac hai:
5*x2 + 3*x + 8
khong co nghiem
nhap he so cho PTB2
5
8
-4
phuong trinh bac hai:
5*x2 + 8*x + -4
PT co hai nghiem phan biet:
x = -50; y = 10
42
Nm 2008
a, Hng dn:
Cc thnh phn ca lp nhanvien chng ta vn xy dng bnh
thng nh cc vi d trc. Ch khc ch trong phng thc hin
c tham chiu ti i tng ca lp Thue dng tinh thu phi
np nh sau: Thue.Thuephainop(this) trong Thuephainop l
phng thc tinh thu ca class Thue c i s l i tng lp
nhanvien.
b, Bi gii mu:
using System;
class Nhanvien
{
private string hoten;
private string chucvu;
private decimal tienluong;
public Nhanvien()
{
}
public Nhanvien(string hoten, string chucvu, decimal
tienluong)
{
Console.WriteLine("Su dung PTTL 3 tham so:");
this.hoten = hoten;
this.chucvu = chucvu;
this.tienluong = tienluong;
}
public void nhap()
{
Console.Write("Ho ten:");
hoten = Console.ReadLine();
Console.Write("Chuc vu:");
chucvu = Console.ReadLine();
Console.Write("Tien luong:");
tienluong = decimal.Parse(Console.ReadLine());
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
43
Nm 2008
44
Nm 2008
}
Kt qu khi chy chng trnh:
Su dung PTTL 3 tham so:
Hien thi thong tin:
Ho ten: Nguyen Tien Quynh Anh
Chuc vu: thu ki
Tien luong: $2,200,000.00
Thue phai nop: $ 66,000.00
Nhap thong tin:
Ho ten: Chu Thi Minh Ha
Chuc vu: ke toan
Tien luong: 2546000
Hien thi thong tin:
Ho ten: Chu Thi Minh Ha
Chuc vu: ke toan
Tien luong la: $2546000
Thue phai nop: $76,380.00
45
Nm 2008
46
Nm 2008
47
Nm 2008
}
public vecto(vecto u)
{
int i;
Console.WriteLine("\t su dung ham thiet lap sao
chep:");
// xin cap phat vung nho co kich thuoc bang voi doi
tuong cu
v = new float[n = u.n];
// thuc hien gan cac vung nho dong cua doi tuong cu
sang doi tuong moi
for (i = 0; i < n; i++)
{
v[i] = u.v[i];
}
}
public void saochep(vecto b)
{
n = b.n;
Console.WriteLine("\t Su dung ham sao chep");
for (int i = 0; i < n; i++)
{
this.v[i] = b.v[i];
}
}
public void hien()
{
Console.Write(\t "(");
for (int i = 0; i < v.Length; i++)
if (i == v.Length - 1)
Console.Write("{0}", v[i]);
else
Console.Write("{0},", v[i]);
Console.WriteLine(")");
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
48
Nm 2008
class tester
{
static void Main(string[] args)
{
vecto v1 = new vecto();
Console.Write("\t v1:");v1.hien();
vecto v2 = new vecto(4);
Console.Write("\t v2:");v2.hien();
float[] a ={ 12, 8, 11, 3, 20 , 85 };
vecto v3 = new vecto(4, a);
Console.Write("\t v3:"); v3.hien();
vecto v4 = new vecto(v3);
Console.Write("\t v4:"); v4.hien();
if (v3.n==v2.n)
v3.saochep(v2);
else
{
Console.WriteLine("\t khong tien hanh sao
chep. Gia tri vecto van la:");
}
Console.Write("\t v3:"); v3.hien();
Console.ReadLine();
}
}
}
}
Kt qu sau khi chy chng trnh:
Su dung ham thiet lap khong tham so:
So chieu cua vecto la: 2
Nhap thong so cho vecto:
v[1]=10
v[2]=89
v1:
(10,89)
dung
ham
thiet
lap mtvi
tham
Ti liu hng dnSu
thc
hnh
Mn
LTHDT
C# so:
Nhap thong so cho vecto:
v[1]=4
v[2]=5
49
Nm 2008
a, Hng dn:
ly c thi gian hin hnh th ta s dng hm now.
Cc thuc tinh ca lp gm ngy, thng, nm, gi, pht, giy c
ly theo thi gian h thng thng qua hm System.DateTime.Now
Cc phng thc ca lp gm:
public dipslay() dng hin th thng tin
public ThoiGian (System.DateTime tg): thit lp sao chp thi
gian t mt i tng c
public ThoiGian( int Date,int Month,int Year,int Hour, int
Minute,int Second): PT thit lp 6 tham s khi to gi tr cho bin
i tng.
public ThoiGian(int Date,int Year,int Hour,int Second): PT
thit lp 4 tham s khi to gi tr cho bin i tng.
Ti liu hng dn thc hnh Mn LTHDT vi C#
50
Nm 2008
51
Nm 2008
52
Nm 2008
53
Nm 2008
54
Nm 2008
55
Nm 2008
}
public Matrix chuyenvi()
{
Matrix cv = new Matrix(this.m.GetLength(0), this.m.GetLength(1));
for (i=0;i< this.m.GetLength(0);i++)
{
for (j=0;j<this.m.GetLength(1);j++)
cv.m[i,j]=this.m[j,i];
}
return cv;
}
public Matrix tong(Matrix b)
{
Matrix tmp = new Matrix(this.m.GetLength(0), this.m.GetLength(1));
for (i = 0; i < this.m.GetLength(0); i++)
{
for (j = 0; j < this.m.GetLength(1); j++)
tmp.m[i, j] = this.m[i, j] + b.m[i, j];
}
return tmp;
}
public Matrix hieu(Matrix b)
{
Matrixdn
tmpthc
= new
Matrix(this.m.GetLength(0),
this.m.GetLength(1));
Ti liu hng
hnh
Mn LTHDT vi C#
for (i = 0; i < this.m.GetLength(0); i++)
{
56
Nm 2008
{
Matrix tmp = new Matrix(this.m.GetLength(0), b.m.GetLength(1));
for (i = 0; i < this.m.GetLength(1); i++)
for (j = 0; j < b.m.GetLength(0); j++)
{
tmp.m[i, j] = 0;
for (int k = 0; k < tmp.m.GetLength(1); k++)
tmp.m[i, j] = tmp.m[i, j] + this.m[j, k] * b.m[k, j];
}
return tmp;
}
public bool tuongthichcongtru(Matrix b)
{
return (this.m.GetLength(0) == b.m.GetLength(1));
}
Ti liupublic
hngbool
dntuongthichnhan(Matrix
thc hnh Mn LTHDTb)vi C#
{
return (this.m.GetLength(1) == b.m.GetLength(0));
57
Nm 2008
58
Nm 2008
59
Nm 2008
60
Nm 2008
manv = nvid;
chucvu = cv;
}
public void hienthi()
{
Console.WriteLine("\t Ma nhan vien \t: {0}", this.manv);
Console.WriteLine("\t Chuc vu \t: {0}", this.chucvu);
Console.WriteLine("\t Ho ten cua nhan vien \t: {0}", this.hoten);
// truy nhp n thnh phn d liu tnh thng qua tn lp
Console.WriteLine("\t So thu tu \t: {0}", nhanvien.demnhanvien);
}
public static int sttnhanvien()
{
return ++demnhanvien;
}
}
class tester
{
static void Main()
{
Console.Write("\t So luong nhan vien hien thoi \t:");
string n = Console.ReadLine();
nhanvien.demnhanvien = Int32.Parse(n);
Console.WriteLine("\t tao mot doi tuong:");
nhanvien nv1 = new nhanvien();
nv1.nhap();
// gi phng thc tnh thng qua tn lp
nhanvien.sttnhanvien();
nv1.hienthi();
Console.WriteLine("\t them mot doi tuong:");
nhanvien nv2 = new nhanvien("gd","giam doc","Nguyen Ngoc Minh");
nhanvien.sttnhanvien();
nv2.hienthi();
Ti liuConsole.ReadKey();
hng dn thc hnh Mn LTHDT vi C#
}
}
61
Nm 2008
62
Nm 2008
63
Nm 2008
64
Nm 2008
65
Nm 2008
66
Nm 2008
c = Convert.ToInt32(Console.ReadLine());
Console.Write("tong cua phan so thu nhat voi c la:");
KQ.cong(P, c);
Console.Write("hieu cua phan so thu nhat voi c la:");
KQ.hieu(P, c);
Console.Write("tong cua phan so thu hai voi c la:");
KQ.cong(Q, c);
Console.ReadKey();
}
}
}
}
67
Nm 2008
68
Nm 2008
using System;
class vecto
{
//Khai bao mang v chua cc thnh phn ta ca vector
int[] v;
//Phuong thuc khoi tao khong tham so
public vecto()
{
v=new int[10];
}
public vecto(int n)// phuong thuc khoi co tham so khoi tao vecto n chieu
{
v=new int[n];
}
public double dodai()
{
return Math.Sqrt(this.tichvohuong(this));
}
public void nhap()
{
Console.WriteLine("nhap cac thanh phan cua vecto :");
for (int i = 0; i < v.Length; i++)
{
Console.Write("v[{0}]=", i + 1);
v[i] = int.Parse(Console.ReadLine());
}
}
// Cong hai vecto
public vecto cong(vecto u)
Ti {liu hng dn thc hnh Mn LTHDT vi C#
vecto tmp=new vecto(v.Length);
if (v.Length == u.v.Length)
for (int i = 0; i < v.Length; i++)
69
Nm 2008
70
Nm 2008
{
vecto tmp = new vecto(v.Length);
for (int i = 0; i < v.Length; i++)
tmp.v[i] = v[i] * k;
return tmp;
}
public bool vuonggoc(vecto a)
{
return (this.tichvohuong(a) == 0);
}
// Tich vo huong hai vecto
public int tichvohuong(vecto u)
{
int tmp = 0;
if (v.Length == u.v.Length)
for (int i = 0; i < v.Length; i++)
tmp = tmp + v[i] * u.v[i];
else
Console.WriteLine("Khong thuc hien duoc.Hai vecto khong cung
chieu");
return tmp;
}
}
public void print(vecto c)
{
Console.Write("(");
for (int i = 0; i < v.Length; i++)
if (i == v.Length - 1)
Console.Write("{0}", v[i]);
else
Console.Write("{0},",v[i]);
Console.WriteLine(")");
}
}
class Tester
{
void dn
Main()
Ti static
liu hng
thc hnh Mn LTHDT vi C#
{
vecto A= new vecto(3);
71
int k;
A.nhap();
B.nhap();
Console.Write("vecto A"); A.print(A);
Console.WriteLine("Do dai = {0}", A.dodai());
Console.Write("vecto B"); B.print(B);
Console.WriteLine("Do dai = {0}", B.dodai());
if (A.vuonggoc(B) == true)
Console.Write("Hai vec to vuong goc");
else
Console.WriteLine("Hai vecto khong vuong goc !");
Console.Write("Tong hai vecto la:");
S = A.cong(B);
Console.Write(" S = "); S.print(S);
Console.Write("Hieu hai vecto la:");
S = A.hieu(B);
Console.Write("S = "); S.print(S);
Console.WriteLine("Tich vo huong cua hai vecto: S = {0}",
A.tichvohuong(B));
Console.Write("Ban hay nhap vao mot so k =");
k = int.Parse(Console.ReadLine());
Console.Write("Tich cua vecto A voi k la:");
S = A.tich(k);
Console.Write("S = "); S.print(S);
Console.Write("Tich cua vecto B voi k la:");
S = B.tich(k);
Console.Write("S = "); S.print(S);
Ti liuConsole.ReadKey();
hng dn thc hnh Mn LTHDT vi C#
}
}
Nm 2008
72
Nm 2008
Vecto B(1,0,9)
Do dai = 9.05538513813742
Hai vecto khong vuong goc
Tong cua hai vecto la: S=(5,7,15);
Hieu cua hai vecto la: S=(3,7,-3)
Tich vo huong cua hai vecto la: S=58
Ban hay nhap vao so k: 3
Tich cua A voi k la: S=(12,21,18)
Tich cua B voi k la: S=(3,0,27)
73
Nm 2008
74
Nm 2008
Bi tp 4:
Xy dng mt chng trnh thc hin yu cu sau:
- Nhp vo thng tin ca cc hc sinh vi s lng hc sinh
ty ngi s dng. Thng tin ca hc sinh bao gm: H tn, im
ton, im li, im ha.
- Hin th danh sch cc sinh vin phi thi li. Nu khng c
sinh vin no thi li th a ra thng bo Khng c hc sinh no
phi thi li
a, Hng dn:
- Theo yu cu ca bi ton thng tin v hc sinh rt nhiu bao
gm h tn, im ton, im li, im ha v vy hin th danh
sch hoc sinh ra bng cch truy xut ti n t bn ngoi lp th ta
phi khai bo t kha truy xut n cc thuc tinh c phm vi hot
ng ngoi lp v vy s lm chng trnh s gim tinh r rng, d
liu khng c bo v v vy ta cn phi ng gi d liu trnh
c nhng iu trn.
Trong bi tp ny ta cn phi xy dng 2 lp
- class hocsinh
Ti liu hng dn thc hnh Mn LTHDT vi C#
75
Nm 2008
76
Nm 2008
77
Nm 2008
78
Nm 2008
79
C.
Nm 2008
80
Nm 2008
a, Dng 3 bi li
b, Dng 7 b li.
c, Dng 7 v Dng 9 b li
Cu 7: on chng trnh sau y c li. Hy tm ra li v sa li
cho ng:
using System;
using System.Console;
class VD1
{
public string first;
}
class tester
{
static void Main(string[] args)
{
VD1 vd=new VD1();
Write("Nhap vao mot chuoi:");
vd.first=ReadLine();
Write("Chuoi nhap vao: {0}",vd.first);
}
}
Hng dn: - Khng c khai bo using System.Console;
- Khng tn ti cu lnh Write, ReadLine c lp
Cu 8: Tm v sa li trong on chng trnh sau:
using System;
class Tester
{
static void Main()
{
Display();
}
public static void Display()
{
81
Nm 2008
BI TP T GIAI
Bi 1
Xy dng lp hnh trn, thuc tinh l bn kinh ca hnh trn,
cc phng thc tinh chu vi v din tich ca hnh trn
Hng dn:
Thnh phn d liu ca lp hnh trn ch gm bn knh hnh trn
.
Phng thc:
82
Nm 2008
Hng dn:
Thnh phn d liu gm c: bn kinh hnh trn v chiu cao hnh
tr
Phng thc:
nhp thng tin cho i tng
hin th thng tin lin quan ti i tng
tnh chu vi
tinh din tich xung quanh
tinh din tich ton phn
tinh th tich ca hnh tr ()
Bi 3
Xy dng lp Point cho cc im trong khng gian ba chiu
(x,y,z). Lp cha mt constructtor mc nh, mt hm Nagate bin
i im thnh i lng c du m, mt hm Norm dng tinh
khong cch t im ti gc ta v mt hm in kt qu ln mn
hnh.
Hng dn:
Thuc tinh: ba thnh phn d liu x, y, z
Phng thc:
constructor mc nh dn khi to gi tr cho i tng
Nagate(): bin i ta ca im
Norm(): tinh khong cch t im ti gc ta
Nhp thng tin
Hin th thng tin
Ti liu hng dn thc hnh Mn LTHDT vi C#
83
Nm 2008
Bi 4
Xy dng lp dy s gm m t cc dy s gm cc phng thc
sau:
phng thc nhp dng nhp thng tin t bn phim
phng thc print dng hin th thng tin ln bn phim
phng thc khi to dayso(int n) khi to mt mng gm
n phn t
Bi 5
Vit chng trnh nhp vo mt ngy thng sau in ln mn
hnh. Sau xy dng chng trnh tinh s ngy cch nhau gia
hai mc thi gian c nhp vo t bn phim
Hng dn:
Thnh phn d liu gm c int day, int month, int year miu t
ngy, thng, nm ca i tng. Ngao ra, cn khai bo hai mng
hng s l mng thng v mng ngy theo di l thng no vi
tng ng bao nhiu ngy trong thng :
unsafe public string(char *) = (mot, hai, ba, bon, nam,
su, bay, tam, chin, muoi, muoi mot, muoi hai );
ngaythang = new int [] { 31, 28, 31, 30, 31, 30, 31, 31, 30 ,31, 30,
31}
Cc phng thc thit lp: khng tham s, mt tham s, hai
tham s hay ba tham s. Trong lp cn xy dng phng thc kim
tra tinh hp l ca d liu nhp vo.
Phng thc nhp v hin thng tin ca i tng. Trong
phng thc hin cn ch in r l nm nhun hay khng: Mt
nm nhun nu nm chia ht cho 4 hoc chia ht cho 400, nhng
khng chia ht cho 100. Trong nm nhun th thng hai co ti 29
ngy.
Bi6
84
Nm 2008
Bi 7
Vit chng trnh xy dng lp Timer vi cc hm thit lp v
cc tham s mc nh, thnh phn d liu: hour, minute, second.
Cc phng thc Time(int = 0, int = 0, int = 0) phng thc thit
lp vi ba tham s ngm nh dng khi to d liu cho i
tng, Settime() dng thit lp d liu cho i tng, cc
phng thc in gi di dng chun v in gi dng gi qun i.
Hng dn:
Thnh phn d liu gm c: hour, minute, second
Phng thc:
Cc phng thc khi to cho i tng
Phng thc kim tra tinh hp l ca d liu nhp vo: 0<=
hour <= 24; 0<= minute <= 60; 0<= second <= 60;
Phng thc nhp thng tin
Phng thc in gi qun i: (vi d 16:4:30)
Phng thc in gi chun: (vi d: 4:4:30 PM)
Bi 8
Xy dng lp Employee bao gm tn v chng minh nhn dn.
Ngoi phng thc thit lp, mt copy constructor, mt destructor
v cn c phng thc nhp, hin h tn v chng minh th ln
mn hnh.
Bi 9
Xy dng lp sophuc thc hin cc php ton trn s phc vi
cc thuc tinh phn thc phn o v cc phng thc bao gm
- Phng thc khi to (float pt, float pa) dng khi to cc
thnh phn cho s phc vi phn thc bng pt, phn o bng pa
Ti liu hng dn thc hnh Mn LTHDT vi C#
85
Nm 2008
Hng dn:
Cc thuc tinh ca lp gm:
float bk: bn kinh ca hnh trn y tr
float cc: chiu cao ca hnh tr
Cc phng thc gm c:
phng thc thit lp khi to d liu cho i tng
thuc lp hinhtru ny
phng thc sao chp i tng ca lp hnh tr
phng thc tinh chu vi hnh tr
phng thc tinh th tich ca hnh tr
Bi 11:
Xy dng lp ma trn vung vi cc hm tinh nh thc, ma
trn nghch o, ma trn chuyn v, phng thc ma trn, xut ma
trn ln mn hnh. Cng, tr, nhn hai ma trn.
Hng dn:
Ma trn vung l mt mng hai chiu c s hng bng s ct.
nhp thng tin cho ma trn ta nhp cho tng phn t theo hng.
Hin thng tin cng hin theo hng v ct ca ma trn.
Ap dng cc kin thc v ma trn tinh nh thc, ma trn
nghch o, ma trn chuyn v cho ma trn, cng, tr, nhn hai ma
trn.
(xem thm phn bi tp gii mu trn v ma trn)
Bi 12:
Xy dng lp sinh vin qun l h tn, ngy sinh, im ba mn
hc tr nn, a ra s lng sinh vin c lm n tt nghip
Ti liu hng dn thc hnh Mn LTHDT vi C#
86
Nm 2008
hay thi tt nghip, bao nhiu sinh vin khng c thi tt nghip
vi cc tiu chun xt:
- lm n nu im trung bnh =>7 v khng c mn no
di 5
- thi tt nghip nu im tb < 7 v khng c mn no di 5
- thi li nu c it nht mt mn
(Xem li vi d trong phn bi gi mu. nh ngha thm trong lp
mt phng thc kim tra a ra danh sch sinh vin c lm
n, thi tt nghip hay khng c thi tt nghip)
E.
BI TP TNG HP:
Bi 1:
Cho mt dy cc hnh ch nht. Bng lp trnh hng i tng,
hy vit chng trnh thc hin cc chc nng sau:
Nhp vo mt dy hnh ch nht
Tm v in ra hnh ch nht c chu vi ln nht v hnh ch nht
c din tich ln nht
Bi 2:
Cho mt dy cc im. Hy tm ra tam gic c chu vi nh nht,
tam gic c din tich ln nht trong cc tam gic c to ra t dy
im trn.
Hng dn:
gii quyt bi ton trn th ta cn nh ngha hai lp: lp
diem vi cc phng thc nhp, hin thng tin, tinh di on
thng ( di gia hai im). Lp tamgiac vi mi tam gic c 3
im chinh l i tng lp im. nh ngha cc phng thc tinh
chu vi tam giac, phng thc tinh din tich tam gic, phng thc
hin thng tin. Thi hnh cc phng tinh chu vi, din tich ca i
tng tam gic. So sanh chu vi, din tich a ra tam gic c chu
vi nh nht, din tich ln nht.
Bi 3:
Bng phng php lp trnh hng i tng, hy vit chng
trnh qun l nhn s cho mt t dn c (khu ph), chi tit v c
87
Nm 2008
88
Nm 2008
CHNG II
NP CHNG TON T TRN LP
Mc tiu: Sau khi tm hiu xong chng ny ngi hc c th nm
c cc ni dung sau:
a ra c cc nguyn tc nh ngha chng ton t.
So snh s ging v khc nhau gia vic xy dng mt hm
chng ton t v hm thng thng.
Bit c cc yu cu cn thit khi s dng ton t.
Ti liu hng dn thc hnh Mn LTHDT vi C#
89
Nm 2008
TM TT L THUYT
1. Ton t:
Ton t c ki hiu bng mt biu tng dng thc hin
mt hnh ng. Cc kiu d liu c bn ca C# nh kiu nguyn
h tr rt nhiu cc ton t gn, ton t ton hc, ton t logic..
2. Chng ton t:
Ton t c nh ngha chng bng cch nh ngha mt hm
ton t, hm ton t l cc phng thc tnh, gi tr tr v ca n
th hin kt qu ca mt php ton v nhng tham s l ton hng.
Khi chng ta to mt ton t cho mt lp l chng ta np chng
ton t(overloaded) cng ging nh l chng ta np chng bt c
phng thc thnh vin no.
Vic chng ton t thc cht cng ging nh ta xy dng mt hm
thng thng v kt qu thu c nh nhau nhng chng ton t
gip ngi lp trnh c th s dng cc ki hiu ton hc thng
gp(+ , +, *, / ) , d nh v gn gi hn
3. C php np chng ton t:
Hm ton t bao gm t kha operator theo sau l ki hiu ca
ton t c nh ngha chng. Trong t kho operator l mt
b xung phng thc.
C# cho php np chng ton t nh sau:
Type Operator operator_symbol(parameter_list);
Trong :
- Type l kiu gi tr tr v ca hm.
- parameter_list l danh sch cc i s nu c
90
Nm 2008
Tn phng
thay th
Add
Subtract
Multiply
Divide
Mod
Xor
BitwiseAnd
Bitwiseor
Add
Or
Assign
leftshift
Rightshift
Equals
-++
Decrement
Increment
thc
Ton
t
>
<
!=
>=
<=
*=
-=
^=
<<=
%=
+=
&=
|=
/=
Tn phng
thay th
Compare
Compare
Compare
Compare
Compare
Multiply
Subtract
Xor
leftshift
Mod
Add
BitwiseAnd
Bitwiseor
Divide
Negate
thc
91
Nm 2008
4. Ton t mt ngi:
Cc ton t dng cho mt i tng hay tham chiu n i
tng trong lp. Vi d cc ton t mt ngi nh: + ( +a ) , - (-a) ,
++ (++a)
5. Ton t hai ngi:
Cc ton t nh ton t (= =) so snh gia hai i tng. ton
t (!=) so snh khng bng gia hai i tng, < so snh nh
hn, > so snh ln hn y l cc ton t phi c cc cp ton
hng hay ta cn gi l ton t hai ngi.Trong C# cn c ton t ba
ngi.
Ch : Trong ngn ng C# khng to c ton t nonstatic, do
vy ton t nh phn phi ly hai ton hng.
6. H tr ngn ng .NET khc:
C# cung cp kh nng cho php np chng ton t cho cc lp
m chng ta xy dng. Trong khi cc ngn ng .NET khc
khng cho php iu ny.
+ m bo lp h tr cc phng thc thay th cho php
cc ngn ng khc c th gi . lm c iu ny th khi np
chng ton t no th phi xy dng cho n mt phng thc c
chc nng tng t nh ton t chng.
Vi d:
Khi chng ta np chng ton t (+) th phi cung cp mt
phng thc Add( ) cng lm chc nng cng hai i tng.
Khi s dng chng ton t (= =) th nn cung cp thm
phng thc Equals() bi i tng v hng chc nng ny n
ton t (= =) cho php lp ca ta a hnh v cung cp kh nng hu
ich cho ngn ng .Net khc.
+ Ton t so snh : C 6 ton t so snh ng vi 3 cp. Gia
cc cp ny lun lun c kt qu i nghch nhau: Nu ton hng
u tr v gi tr true th ton hng kia tr v gi tr false. C# lun
lun yu cu bn np chng c hai ton t . Nu bn np chng
ton t "= =" th phi np chng ton t"!=" nu khng trnh bin
dch s bo li.
Ti liu hng dn thc hnh Mn LTHDT vi C#
92
Nm 2008
Ton t
+, *, /, -, %
Hn ch
Khng
+, -, ++, --
Khng
Khng
Khng
Phi np chng theo
tng cp.
93
Nm 2008
94
Nm 2008
BI TP MU
I. BI TP TRC NGHIM, LY THUYT
Cu 1: Phng thc thay th:
Nu ta khng xy dng phng thc thay th cho cc ton t
c np chng th chng trnh c bin dch hay khng.
Tr li:
Nu ta khng xy dng phng thc cho ton t c np
chng th
- Chng trnh s bin dch nu trong ngn ng C# v
cc ngn ng cho php chng ton t.
- Chng trnh s khng bin dch nu n s dng trong
ngn ng lp trnh khc khng cho php s dng chng ton t.
Bi v: Cc phng thc c chc nng tng t nh ton t
chng c tc dng thay th hm ton t khi s dng tt c cc ngn
ng khng nn trong ngn ng khng cho php s dng hm ton
t th vn s dng c vi cc ton t thng qua cc phng thc.
Cu 2: Hn ch khi s dng ton t:
Xy dng mt lp Employee vi cc thng tin cn b: H
tn, gii tinh, tin lng, qu qun. Vy gi mt phng thc
gia tng mc lng ca nhn vin ta c th s dng ton t gia tng
(++) trong lp Employee hay khng.
Tr li:
95
Nm 2008
96
Nm 2008
97
Nm 2008
123 (3)
Hy chn mt kt qa ng nht
Tr li:
p n (2) l ng.
Cu 6: Hy ch ra cch khai bo ng mt hm chng ton t ca
lp phn s trong cc cch khai bo sau y:
public static ps operator -(real ps1)
(1)
public static ps operator =(real ps1)
(2)
public static ps operator = =(ps ps1, ps ps2) (3)
public static ps operator - -(ps ps1,ps ps2)
(4)
Tr li:
Ta bit rng cc ton t c nh ngha chng phi bo ton
s ngi ca chinh ton t theo cch hiu thng thng.
C th:
+ Nu ta chng ton t mt ngi -(real ps1) tng ng vi
vic o du ca ps1
+ Nu ta chng ton t hai ngi-(ps ps1, ps ps2) tng ng
vi vic ta thc hin chng ton t tr i vi ps1 v ps.
Nhng khng th nh ngha ton t gn nh (+=, = =,- =,=)
bng cch chng ton t mt ngi. iu chng t cch khai bo
(2) l sai.
Vy trong cc dng khai bo bi tp ny c dng (1), (2), (3)
l ng
II.
CU HOI LY THUYT V BI TP MU
98
Nm 2008
99
Nm 2008
{
this.x = x;
this.y = y;
this.z = z;
}
public Vector(Vector rhs)
{
x = rhs.x;
y = rhs.y;
z = rhs.z;
}
public override string ToString()
{
return "( " + x + " , " + y + " , " + z + " )";
}
public static Vector operator * (Vector lhs,Vector rhs)
{
Vector result = new Vector(lhs);
result.x *= rhs.x;
result.y *= rhs.y;
result.z *= rhs.z;
return result;
}
public static Vector operator +(Vector lhs, Vector rhs)
{
Vector result = new Vector(lhs);
result.x += rhs.x;
result.y += rhs.y;
result.z += rhs.z;
return result;
}
}
public class tester
{
static void Main()
Ti liu hng dn thc hnh Mn LTHDT vi C#
100
Nm 2008
{
Vector vect1, vect2, vect3, vect4;
vect1 = new Vector(3.0, 3.0, 1.0);
vect2 = new Vector(2.0, -4.0, -4.0);
vect3 = vect1 + vect2;
vect4 = vect1 + vect2;
Console.WriteLine("vect1 = " + vect1.ToString());
Console.WriteLine("vect2 = " + vect2.ToString());
Console.WriteLine("Tong cua vector1 v vector2 la:");
Console.WriteLine("vect3 = " + vect3.ToString());
Console.WriteLine("Tich cua vector1 v vector2 la:");
Console.WriteLine("vect4 = " + vect3.ToString());
Console.ReadLine();
}
}
}
Kt qu sau khi thc hin chng trnh:
vect1 = ( 5, 10, 4)
vect2 = ( 3, 6, 9)
Tong cua vector1 v vector2 la:
vect3 = ( 8, 16, 13)
Tich cua vector1 v vector2 la:
Vect4 = ( 15, 16, 36)
Nhn xt:
T chng trnh trn ta cn ch n vic xy dng mt bin
rhs c kiu l mt vector bi v cng 2 hay nhiu vector th ta
phi cng hai vector trc sau li cng tip vi mt vector sau
(ng vai tr l rhs), c nh th n khi no ht.
T bi ton cng hai vector ny, tng t ta c th xy dng
mt chng trnh cng nhiu vector vi nhau.
101
Nm 2008
102
Nm 2008
namespace motngoi
{
struct so
{
int value;
public so(int value)
{
this.value = value;
}
public override string ToString()
{
return (value.ToString());
}
public static so operator +(so s)
{
return (new so(-s.value));
}
public static so operator +(so so1, so so2)
{
return (new so(so1.value + so2.value));
}
public static so operator ++(so s)
{
return (new so(s.value + 1));
}
}
class Test
{
public static void Main()
{
so so1 = new so(11);
Console.WriteLine("So thu nhat la: {0}", so1);
so so2 = new so(125);
Console.WriteLine("So thu hai la: {0}", so2);
Console.WriteLine("Chuyen so thu nhat la: {0}",
Ti liu hng dn thc hnh Mn LTHDT vi C#
103
Nm 2008
++so1);
Console.WriteLine("tong hai so sau khi chong toan
tu mot ngoi doi voi so thu nhat");
Console.WriteLine("tong: {0}", so1 + so2);
Console.ReadLine();
}
}
}
Kt qu sau khi thc hin chng trnh:
So thu nhat la: 11
So thu hai la: 125
So thu nhat duoc chuyen thanh la:12
Tong hai so sau khi chong toan tu mot ngoi doi voi so thu nhat
Tong :137
Nhn xt:
- Trong bi tp ny cn ch trng n cch chng ton t mt
ngi. Cn nm c nhng ton t mt ngi c a nng ha.
- Ch n dng lnh sau:
public static so operator +(so s)
{
return (new so(-s.value));
}
3. Xy dng mt lp sophuc c hai phn thc (real) v o
(imaginary). Np chng ton t +, - v i du s phc.
a, Hng dn:
+ xy dng mt lp s phc v thc hin cng tr hai s
phc th ta c th dng chng ton t nh bi tp trn.
+ Nhng i du ca mt s phc (mt s, mt phn s) th
lm th no?. iu ny c th thc hin bng cch s dng chng
ton t (-) i du.
Ti liu hng dn thc hnh Mn LTHDT vi C#
104
Nm 2008
105
Nm 2008
106
Nm 2008
Nhn xt:
+ Trong bi tp ny cn ch n vic chng ton t (-)
i du cho s phc cn trong bi tp s 5 th dng chng ton t
(+) tng thm gi tr cho mt s.
+ Ta cng c s dng ton t (-) gim gi tr ca mt s
hay( mt phn s, mt s phc ).
iu quan trng ta cn phi bit c ton t mt ngi no
c s dng v c s dng khi no l thich hp em li hiu
qu cao.
4. Xy dng mt lp phn s vi tn l phanso v a nng ho
ton t trn lp. Thc hin cc nhim v sau:
+ Hin th cc phn s ban u v phn s sau khi s li trn
mn hnh.
+ Cng hai phn s.
+ Cng mt phn s vi mt s.
+ So snh hai phn s v hin th kt qu trn mn hnh.
a, Hng dn:
Chng ta xy dng mt lp phn s nh sau:
Ti liu hng dn thc hnh Mn LTHDT vi C#
107
Nm 2008
108
Nm 2008
this.tuso1= tuso2;
mauso1 = 1;
}
public static implicit operator phanso(int theInt)
{
return new phanso(theInt);
}
public static explicit operator int(phanso thephanso)
{
return thephanso.tuso1 / thephanso.mauso1;
}
public static bool operator = =(phanso lhs, phanso rhs)
{
if (lhs.tuso1 = = rhs.tuso1 && lhs.mauso1 = =
rhs.mauso1)
{
// Khi hai phn s bng nhau
return true;
}
// Khi hai phn s khng bng nhau
return false;
}
public static bool operator !=(phanso lhs, phanso rhs)
{
Console.WriteLine("su dung toan tu !=");
return !(lhs = = rhs);
}
public override bool Equals(object obj)
{
Console.WriteLine("phuong thuc equals");
if (!(obj is phanso))
{
return false;
}
return this = = (phanso)obj;
Ti liu hng dn thc hnh Mn LTHDT vi C#
109
Nm 2008
}
public static phanso operator +(phanso lhs,phanso rhs)
{
if(lhs.mauso1 = = rhs.mauso1)
{
Console.WriteLine("-S dng ton t + vi hai
phn s");
return new phanso(lhs.tuso1 +
rhs.tuso1,lhs.mauso1);
}
Console.WriteLine("S dng ton t+cho mt phn s
vi mt s);
int fist = lhs.tuso1 * rhs.mauso1;
int second = rhs.tuso1 * lhs.mauso1;
return new phanso(fist+ second, lhs.mauso1 *
rhs.mauso1);
}
public override string ToString()
{
string s = tuso1.ToString() + "/" + mauso1.ToString();
return s;
}
public class tester
{
static void Main()
{
Console.WriteLine("-Phn s th nht l:");
phanso ps1=new phanso(2,4);
Console.WriteLine("ps1:{0}",ps1.ToString());
Console.WriteLine("-Phn s th hai l:");
phanso ps2 = new phanso(1,4);
Console.WriteLine(" ps2:{0} ",ps2.ToString());
phanso ps3 = ps1 + ps2;
Console.WriteLine(" ps1+ps2=ps3 ");
Console.WriteLine(" ps2:{0} ",ps2.ToString());
Ti liu hng dn thc hnh Mn LTHDT vi C#
110
Nm 2008
111
Nm 2008
Ch :
+ Nu nh trong chng trnh trn ta khng dng phng thc
Equals th chng trnh vn chy bnh thng m khng bo li.
Nhng n li rt cn thit v phng thc Equals cung cp mt i
tng cho php cc ngn ng khc c th gi.
+ Ta c th nhp gi tr ca phn s ngoi mn hnh m khng
cp gi tr trc trong chng trnh.
5. Xy dng mt lp vector v thc hin cc yu cu sau:
- C th nhp n vector t bn phim.
- Nhp s chiu ty .
- a ra tng cc vector.
- a ra hiu cc vector.
a, Hng dn:
- Trong chng trnh ny ngoi lp tester ta i xy dng lp
vector v DSVT , nhp n vector vi s chiu ty th ta cn khai
bo mt bin tnh n v s dng t kha public khai bo. Bin n
c khai bo nh sau: public static int n;
n l mt bin tnh bi v n c th thay i ty .
- nhp c s vector ty ta cn phi khai bo s vector
di dng mng trong lp DSVT nh sau: private vector[] ds
112
Nm 2008
113
Nm 2008
114
Nm 2008
this.a[i] = lhs.a[i];
}
public vector coppy()
{
int i;
vector tmp = new vector();
for (i = 0; i < n; i++)
tmp.a[i] = a[i];
return tmp;
}
public static vector operator +(vector lhs,vector rhs)
{
vector tmp = new vector();
int i;
for (i = 0; i < n; i++)
tmp.a[i] = lhs.a[i] + rhs.a[i];
return tmp;
}
public static vector operator -(vector lhs, vector rhs)
{
vector tmp = new vector();
int i;
for (i = 0; i < n; i++)
tmp.a[i] = lhs.a[i] - rhs.a[i];
return tmp;
}
}
}
class DSVT
{
private int SVT;
private vector[] ds;
public void nhap()
{
Ti liu hng dn thc hnh Mn LTHDT vi C#
115
Nm 2008
int i;
Console.Write("nhap so chieu cua vector n=");
vector.n = int.Parse(Console.ReadLine());
Console.Write("Nhap so vector SVT =");
SVT = int.Parse(Console.ReadLine());
ds = new vector[SVT];
for (i = 0; i < ds.Length; i++)
{
ds[i] = new vector();
Console.WriteLine("Nhap thong tin cho Vector thu {0}", i
+ 1);
ds[i].nhap();
}
}
public vector tong()
{
vector tmp = ds[0].coppy();
int i;
for (i = 1; i < SVT; i++)
tmp = tmp + ds[i];
return tmp;
}
public vector tru()
{
vector tmp = ds[0].coppy();
int i;
for (i = 1; i < SVT; i++)
tmp = tmp - ds[i];
return tmp;
}
}
class tester
{
private int x;
static void Main()
Ti liu hng dn thc hnh Mn LTHDT vi C#
116
Nm 2008
{
DSVT t = new DSVT();
t.nhap();
t.tong();
Console.WriteLine("- Tong cua cac vector da nhap la:");
t.tong().hien();
Console.WriteLine("- Hieu cua cac vector da nhap la:");
t.tru().hien();
Console.ReadLine();
}
}
}
Kt qu sau khi thc hin chng trnh:
Nhap so chieu cua vector n=3
Nhap so vector SVT = 3
Nhap thong tin cho vector thu 1
Phan tu cua vector:
a[0] = 2
a[1] = 4
a[2] = 2
Nhap thong tin cho vector thu 2
Phan tu cua vector:
a[0] =5
a[1] = 6
a[2] = 2
Nhap thong tin cho vector thu 3
Phan tu cua vector
a[0] =1
a[1] =5
a[2] =3
- Tong cua cc vector da nhap la:
8
15 7
- Hieu cua cac vector da nhap la:
-4 -7 -3
117
Nm 2008
Nhn xt:
- Qua chng trnh trn ta cn ch lm th no nhp
vector c s chiu, s phn t ty t bn phim. T c th nhp
n ma trn hay mt s phc, t bn phim.
- S dng hm copy cng tr nhn cc vector ta nhp mt
cch n gin hn.
- S dng hm chng ton t cng, tr hai vector
C.
118
Nm 2008
BI TP T GIAI
Bi 1: Cho on chng trnh sau hy a ra kt qu ca chng
trnh hiu r v phng thc ToString:
using System;
namespace phuongthuctostring
{
using System;
namespace Wrox.ProCSharp.OOCSharp
{
class MainEntryPoint
{
static void Main(string[] args)
{
Money cash1 = new Money();
cash1.Amount = 40M;
Console.WriteLine("cash1.ToString() returns: " +
cash1.ToString());
cash1 = new BetterMoney();
cash1.Amount = 40M;
Console.WriteLine("cash1.ToString() returns: " +
cash1.ToString());
119
Nm 2008
Console.ReadLine();
}
}
class Money
{
private decimal amount;
public decimal Amount
{
get
{
return amount;
}
set
{
amount = value;
}
}
}
class BetterMoney : Money
{
public override string ToString()
{
return "$" + Amount.ToString();
}
}
}
}
Bi 2:
To kiu d liu Date biu din ngy thng nm. Ci t thut
ton tinh mt ngy trc hoc sau mt ngy xc nh no
tinh khong cch theo ngy gia hai ngy xc nh, tinh th trong
tun ca ngy. S dng ton t vo ra cho
ngy.
Hng dn:
120
Nm 2008
121
Nm 2008
- nhn, chia hay nhn hai phn s vi nhau hoc nhn chia
mt phn s vi mt s ta khai bo chng ton t bnh thng
tng t nh i vi cng hoc tr
C th vi ton t(*) :
public static phanso operator *( phanso lhs, phanso rhs )
{
int fistproduct = lhs.tuso1 * rhs.tuso2;
int secondproduct = lhs.mauso1 * rhs.mauso2;
return new phanso(fistproduct, secondproduct);
}
Bi tp 6: Xy dng lp MaTran cho thc hin cc php ton
trn ma trn, bao gm:
- Hm to ma MaTran(int sh, int sc) dng khi to mt ma
trn c s hng l sh v s ct l sc.
- Phng thc nhap nhp ma trn t bn phim
- Phng thc cong cng hai ma trn
- Phng thc hieu thc hin php hiu hai ma trn
- Phng thc doiDau i du cc phn t ca ma trn
- Phng thc chuyenVi chuyn v mt ma trn
- Phng thc tich nhn hai ma trn
- Phng thc tuongThich kim tra xem hay ma trn c
tng thich vi nhau hay khng?
Hng dn:
- khai bo mt ma trn th khai bo nh sau:
struct MT
{
int
a[sh][sc]; //Mng a cha cc phn t ca ma
trn.
int n;
//Cp ma trn.
}
- thc hin nhp, cng hiu, i du, tich th xem li cch
gii ca cc bi tp trong bi tp mu .
- Mun i du cc phn t ca ma trn ta dng chng ton t
(-) nh bi tp 6 (bi tp mu).
Bi 7:
Ti liu hng dn thc hnh Mn LTHDT vi C#
122
Nm 2008
CHNG III
123
Nm 2008
K THA V A HINH
Mc tiu: Sau khi tm hiu chng ny ngi hc c th nm c
cc ni dung sau:
Ci t c s tha k
S dng cc thnh phn ca lp c s
nh ngha li cc hm thnh phn
Truyn thng tin gia cc hm thit lp ca lp dn xut v
c s
S tng thich gia cc i tng ca lp dn xut v lp c
s
Ch ra c im ca phng thc tru tng v tinh a hnh,
ci t bng bi ton c th
Phn bit cc t kha new, virtual, override
Lp tru tng, lp c lp, lp bo
A.
TM TT L THUYT
1. K tha:
Khi nim: l tip thu tip nhn nhng ci c xy dng.
Nu lp B l lp c k tha t lp A th ton b cc thnh
phn ca lp A cng c mt trong lp B m khng cn phi khai
bo trong lp B. Lp A c gi l lp c s hay lp cha, cn lp
B c gi l lp dn xut hay lp con.
K tha c hai loi: n k tha v a k tha.
chng ny chng ta ch nghin cu v n k tha cn a k
tha s c th hin r hn chng giao din.
Cch khai bo lp dn xut k tha mt lp c s : Tn lp dn
xut : Tn lp c s.
Vi d : Lp A k tha lp B th khai bo nh sau : Class A :B
- n k tha l mt lp dn xut ch c k tha t mt lp
c s
Vi d khai bo n k tha
class Class1
{
public Class1()
124
Nm 2008
{
Code of contructor
}
}
class class2:Class1 // Khai bo lp Class2 k tha lp Class1
{
public class2()
{
Code of contructor
}
}
- a k tha l mi Class c php k tha nhiu lp c s.
Vi d khai bo a k tha
class Class1
{
public Class1()
{
Code of contructor
}
}
interface IClass1
{
// member of IClass1
}
class class2:Class1, IClass1
{
public class2()
{
Code of constructor
}
}
2. T kho Base:
S dng truy nhp cc thnh vin ca lp c s t lp dn
xut.
Ti liu hng dn thc hnh Mn LTHDT vi C#
125
Nm 2008
3. T kho New:
Khi khai bo phng thc trong lp k tha m c tn trng
vi tn ca phng thc(khng c t kho abstract hay virtual)
trong lp c s th phi s dng t kho new che giu phng
thc.
Vi d:
class diem
{
public void nhap()
}
class tamgiac:diem
{
public new void nhap()
}
4. Tinh a hnh :
Bao gm nhng c im sau
+ N c hiu nh l kh nng s dng nhiu hnh thc ca
mt thc th m khng cn quan tm n tng chi tit c th.
+ Phng thc l a hnh c t kho Virtual trc v phng
thc ny phi c ghi lp dn xut.
+ Cho php ci t phng thc ca lp dn xut trong khi thi
hnh
Vi d:Khai bo phng thc a hnh
public virtual float dientich()
5. Ghi :
Ghi phng thc khi c nhu cu cho php ngi lp trnh
thay i hay m rng cc thnh vin (phng thc) cng tn ca
lp c s trong lp dn xut th bn s dng t kho override.
Vi d: class hinh
{
public virtual float dientich()
}
class hinhcn:hinh
Ti liu hng dn thc hnh Mn LTHDT vi C#
126
Nm 2008
{
public override float dientich() // phng thc ghi
}
6. Nghim cm k tha:
Mt lp c cho l nghim cm cc lp khc k tha khi n
c khai bo vi t kho l sealed ngay trc t kho Class. Do
vy bt k lp no khai bo k tha lp u pht sinh li khi
bin dch.
Vi d : Khai bo lp nghim cm k tha
sealed class sinhvien
7. Cch truy xut protected:
Bn cn mt lp dn xut thm nhp vo cc thnh phn ca
lp c s. Mc d bn khng mun khai bo cc thnh phn ca
lp c s l chung (public). Cch tt nht l dng cch truy xut
c bo v protected trong nh ngha ca lp c s. Chng u
c x li chung nh bn trong phm vi lp dn xut nhng n vn
c coi l ring mi ni khc. Cch truy nhp protected ch m
rng cho lp con.
8. Lp tru tng:
L lp c it nht mt phng thc tru tng. Khi xy dng
lp tru tng th mi thnh vin c nh ngha trong lp tru
tng u s dng t kho abstract.
Phng thc tru tng khng c s thc thi. Phng thc ny
ch n gin to ra mt tn phng thc v ki hiu phng thc.
N khng nh ngha phn thn, thay vo chng c ci t
trong phng thc ghi ca lp dn xut.
khai bo lp tru tng bn s dng t kho abstract trc
t kho class nh c php sau:
abstract class baseclass
{
// Code of members
}
127
Nm 2008
128
Nm 2008
129
Nm 2008
int i = 123;
Console.WriteLine("The object value:{0}", i);
Console.ReadLine();
}
}
Unxing : tr kt qu ca mt i tng v kiu gi tr, ta thc
hin m tng minh n. Ta thit lp theo 2 bc sau:
1. Chc chn rng i tng l th hin ca mt gi tr
c box
2. Sao chp gi tr t th hin ny thnh gi tr ca bin.
Vd: Minh ho boxing v Unxing
using System;
public class Unxing
{
public static void Main()
{
int i = 123;
object o=i;
int j = (int)o;
Console.WriteLine("j :{0}", j);
Console.ReadLine();
}
}
12. Lp lng nhau:
Lp c khai bo trong thn ca mt lp c gi l lp ni
hay lp lng, lp kia l lp ngoi. Lp lng c kh nng truy cp
ti cc thnh vin ca lp ngoi. Mt phng thc ca lp lng c
th truy xut n bin thnh vin private ca lp ngoi. Hn na
lp ni n trong lp ngoi so vi cc lp khc, n c th l thnh
vin kiu private ca lp ngoi.Lp lng c khai bo vi t
kho internal trc t kho class.
Vi d
public class A
{
Ti liu hng dn thc hnh Mn LTHDT vi C#
130
Nm 2008
internal class B
}
B.
BI TP MU
I. K tha
131
Nm 2008
132
Nm 2008
Console.Write("He so luong:");
hesoluong=double.Parse(Console.ReadLine());
}
public luong ()
{
luongcoban=450;
hesoluong=2.34;
}
public luong (double lcb,float hsl)
{
luongcoban=lcb ;
hesoluong =hsl ;
}
public void hien()
{
Console.WriteLine("Ho ten :{0}",hoten);
Console.WriteLine("He so luong:{0}",hesoluong );
}
public double tinhluong()
{
return luongcoban*hesoluong ;
}
}
class luongmoi:luong
{
private double hesophucap;
public luongmoi():base()
// Gi phng thc thit lp
khng tham s
{
ca lp c s
hesophucap=0.4;
}
public luongmoi(int lcb,float hsl,double
hspc):base(lcb,hsl)
{
// Gi phng thc thit lp 2
tham s
Ti liu hng dn thc hnh Mn LTHDT vi C#
133
hesophucap = hspc;
Nm 2008
ca lp c s
}
public new void nhap()
{
base.nhap();
Console.Write("He so phu cap:");
hesophucap =double.Parse(Console.ReadLine());
}
public new void hien()
{
base.hien();
Console.WriteLine("He so phu cap= {0}", hesophucap);
}
public new double tinhluong()
{
return base.tinhluong()*hesophucap ;
}
}
class tester
{
static void Main()
{
luongmoi A = new luongmoi();
A.nhap();
A.hien();
Console.WriteLine("Luong moi:{0}", A.tinhluong());
Console.ReadLine();
}
}
Kt qu sau khi thc hin chng trnh:
H tn : Nguyn Vn A
H s lng : 3.6
H s ph cp : 4.3
Lng mi : 6 966
Ti liu hng dn thc hnh Mn LTHDT vi C#
134
Nm 2008
135
Nm 2008
{
public new void hien()
}
b, Bi gii mu:
using System;
class ptb2
{
protected double a,b,c;
public void nhap()
{
Console.Write (" Nhap vao he so a =" );
a =double.Parse(Console.ReadLine());
Console.Write(" Nhap vao he so b =" );
b = double.Parse(Console.ReadLine());
Console.Write(" Nhap vao he so c =" );
c = double.Parse(Console.ReadLine());
}
public double delta()
{
return (b*b-4*a*c);
}
public void giai(out double x1,out double x2,out bool kt)
{
kt = true;
if (delta() < 0) { kt = false; x1 = x2 = 0; }
else
{
if (delta() == 0)
x1 = x2 = -b / (2 * a);
else
{
x1 = (-b + Math.Sqrt(delta())) / (2 * a);
x2 = (-b - Math.Sqrt(delta())) / (2 * a);
}
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
136
Nm 2008
}
public void hien()
{
double x1, x2;
bool kt;
giai(out x1,out x2,out kt);
if (kt == false) Console.WriteLine("Phuong trinh vo
nghiem");
else
if (x1 == x2) Console.WriteLine("Phuong trinh co
nghiem kepx1=x2={0}", x1);
else
{
Console.WriteLine("Phuong trinh co 2 nghiem phan
biet");
Console.WriteLine("x1={0}", x1);
Console.WriteLine("x2={0}", x2);
}
}
}
class pttp:ptb2
{
public new void hien()
{
double x1, x2;
bool kt;
base.giai(out x1,out x2,out kt);
if (kt==false )
Console.Write("Phuong trinh vo nghiem");
else
{
if ((x1 == x2 & x1 < 0))
Console.Write("Phuong trinh vo nghiem");
if((x1 == x2 & x1==0)|| (x1 == 0 & x2 < 0))
Console.Write("Phuong trinh co 1 nghiem
Ti liu hng dn thc hnh Mn LTHDT vi C#
137
Nm 2008
y1={0}",x1);
if ((x1 == x2 & x1 > 0))
{
Console.WriteLine("Phuong trinh co 2 nghiem
y1,y2");
Console.WriteLine("y1={0}", Math.Sqrt(x1));
Console.WriteLine("y2={0}", -Math.Sqrt(x1));
}
if (x1 == 0 & x2 > 0)
{
Console.WriteLine("Phuong trinh co 3 nghiem ");
Console.WriteLine("y1={0}", x1);
Console.WriteLine("y2={0}", -Math.Sqrt(x2));
Console.WriteLine("y3={0}", Math.Sqrt(x2));
}
if (x1 < 0 & x2 == 0)
Console.WriteLine("Phuong trinh co 1 nghiem y1=
{0}",x2);
if (x1 > 0 & x2 == 0)
{
Console.WriteLine("Phuong trinh co 3 nghiem");
Console.WriteLine("y1={0}", x2);
Console.WriteLine("y2={0}", -Math.Sqrt(x1));
Console.WriteLine("y3={0}", Math.Sqrt(x1));
}
if (x1 < 0 & x2 > 0)
Console.WriteLine("Phuong trinh co 2 nghiem");
if (x1 > 0 & x2 < 0)
{
Console.WriteLine("Phuong trinh co 2 nghiem");
Console.WriteLine("y1={0}", -Math.Sqrt(x1));
Console.WriteLine("y2={0}", Math.Sqrt(x1));
}
if (x1 > 0 & x2 > 0 & x1!= x2 )
{
Ti liu hng dn thc hnh Mn LTHDT vi C#
138
Nm 2008
2. Mc truy cp Protected
Bi 1
Xy dng lp hnh vung, tinh din tich cho lp . Dng k
thut tha k tinh th tich cho mt hnh lp phng.
a, Hng dn:
Ti liu hng dn thc hnh Mn LTHDT vi C#
139
Nm 2008
140
Nm 2008
a = 2;
}
public hinhvuong(float x)
{
a = x;
}
public void nhap()
{
Console.Write("Nhap canh cua hinh vuong:");
a=float.Parse(Console.ReadLine());
}
public float dientich()
{
return a*a;
}
public void hien()
{
Console.WriteLine("Thong tin can hien thi");
Console.WriteLine("Canh hinh vuong = {0}",a);
Console.WriteLine ("Dien tich cua hinh vuong=
{0}",dientich());
}
}
class hinhlp :hinhvuong
{
public hinhlp(): base()
{}
public hinhlp(float x): base(x)
{}
public float thetich()
{
return base.dientich() * a;
}
public new void hien()
{
Ti liu hng dn thc hnh Mn LTHDT vi C#
141
Nm 2008
base.hien();
Console.WriteLine("The tich cua hinhlp={0}", thetich());
}
}
class tester
{
static void Main()
{
hinhlp B = new hinhlp ();
B.nhap();
B.hien();
Console.ReadKey();
}
}
Kt qu sau khi chy chng trnh:
Nhp cnh ca hnh vung: 5
Thng tin hin th
Cnh hnh vung = 5
Din tich hnh vung = 25
Th tich hnh lp phng = 125
142
Nm 2008
143
Nm 2008
144
Nm 2008
145
Nm 2008
}
}
Kt qu sau khi chy chng trnh:
Nhp vo s cn i: 8
Nhp vo h cn i: 2
Kt qu chuyn i: 1000
146
Nm 2008
147
Nm 2008
148
Nm 2008
{
Console.Write("Nhap vao gia tri cua x=");
x = int.Parse(Console.ReadLine());
}
public void hien()
{
Console.WriteLine("Thong tin can hien thi");
Console.WriteLine("Gia tri cua x={0}", x);
}
}
Xy dng lp B k tha t lp c s A
using System;
using ClassLibrary1;
class ClassB:ClassA
{
internal int y;
public ClassB(): base()
{
y = 5;
}
public ClassB(int x, int y): base(x)
{
this.y= y;
}
public new void nhap()
{
base.nhap();
Console.Write("Nhap gia tri cua y=");
y = int.Parse(Console.ReadLine());
}
public new void hien()
{
base.hien();
Console.WriteLine("Gia tri cua y={0}", y);
Ti liu hng dn thc hnh Mn LTHDT vi C#
149
Nm 2008
150
Nm 2008
x = 3;
}
public ClassA(int x)
{
this.x = x;
}
}
}
class ClassB:ClassA
{
int y;
public ClassC(): base()
{
y = 6;
}
public ClassC(int x, int y): base(x)
{
this.y = y;
}
public new void nhap()
{
base.nhap();
Console.Write("Nhap gia tri cua y=");
y = int.Parse(Console.ReadLine());
}
public new void hien()
{
base.hien();
Console.WriteLine("Gia tri cua y={0}", y);
Console.WriteLine("Tong x + y = {0}", tong());
}
public int tong()
{
return x + y ;
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
151
Nm 2008
}
class tester
{
static void Main(string[] args)
{
ClassBD = new ClassB();
D.nhap();
D.hien();
Console.ReadLine();
}
}
Kt qu chng trnh
Nhp vo gi tr ca x=5
Nhp vo gi tr ca y=4
Thng tin cn hin th
Gi tr ca x=5
Gi tr ca y=4
Tng x+y=9
152
Nm 2008
153
Nm 2008
154
Nm 2008
{
stack a = new stack();
public bool kiemtra(string s)
{
int t;
for (int i = 0; i < s.Length; i++)
{
if (s[i] == '(')
a.push(Convert.ToInt32(s[i]));
if (s[i] == ')')
if (a.isempty()) return false;
else t=a.pop();
}
if (a.isempty())
return true;
else return false;
}
}
class Tester
{
static void Main()
{
string f;
Console.Write("Ban nhap vao mot chuoi :");
f = Console.ReadLine();
KTchuoi a = new KTchuoi();
if (a.kiemtra(f) == true)
Console.Write("Chuoi hop le !");
else Console.Write("Chuoi khong hop le !");
Console.ReadKey();
}
}
Kt qu sau khi chy chng trnh:
Ti liu hng dn thc hnh Mn LTHDT vi C#
155
Nm 2008
156
Nm 2008
157
Nm 2008
k =-1;
else {
if (a.namsinh == b.namsinh)
k= 0;
else k = 1;
}
return k;
}
}
class Danhsach
{
private int n;
private Hocvien[] ds;
public Danhsach(int n)
{
ds = new Hocvien[n];
}
public void nhapds()
{
Console.Write("nhap so hoc vien:");
n = int.Parse(Console.ReadLine());
ds = new Hocvien[n];
for (int i = 0; i < ds.Length; i++)
ds[i] = new Hocvien();
for (int i = 0; i < n; i++)
{
Console.WriteLine(" Hoc vien thu{0}", i + 1);
ds[i].nhap();
}
}
public void printlist()
{
Console.WriteLine("Danh sach cac hoc vien la");
Console.WriteLine("\tstt\tmshv\thoten\t\tnamsinh");
(int i = 0; i < ds.Length; i++)
Ti liu hng dn thc hnh Mn LTHDT vi C#
158
Nm 2008
{
Console.Write("\t{0}", i + 1);
ds[i].print();
}
}
public void sortList()
{
for (int i = 0; i < ds.Length-1; ++i)
{
Hocvien min = ds[i];
for (int j = i+1; j < ds.Length; ++j)
{
if (min.compare(ds[i], ds[j]) == 1)
{
min = ds[i];
ds[i] = ds[j];
ds[j] = min;
}
else
{
min = ds[i];
}
}
}
for (int i = 0; i < n; i++)
ds[i].print();
}
}
class tester
{
static void Main(string[] args)
{
Danhsach d = new Danhsach(3);
d.nhapds();
d.printlist();
Ti liu hng dn thc hnh Mn LTHDT vi C#
159
Nm 2008
Nmsinh
1987
1984
1987
1985
160
Nm 2008
161
Nm 2008
{
private float dhoa;
public new void nhap()
{
base.nhap();
Console.Write("Nhap diem hoa:");
dhoa=float.Parse(Console.ReadLine());
}
public new void hien()
{
base.hien();
Console.WriteLine("Diem hoa: {0}",dhoa );
}
}
class tester
{
static void Main(string[] args)
{
sinhvien a = new sinhvien();
a.nhap();
a.hien();
Console.ReadLine();
}
}
Kt qu sau khi chy chng trnh:
Chng trnh a ra dng thng bo li: Cannot derive from
sealed type hocsinh
Kt lun: Lp sinhvien khng th k tha cc thuc tinh v
phng thc t lp Sinh vin.Bi v lp hc sinh c bo v cm
k tha bng t kho Sealed.
III. Tinh a hnh.
Bi 1
Ti liu hng dn thc hnh Mn LTHDT vi C#
162
Nm 2008
163
Nm 2008
b, Bi gii mu:
using System;
class hinh
{
public virtual double getArea()
{
return getArea();
}
}
class hinhtron:hinh
{
private float r;
public hinhtron(float r)
{
this.r=r;
}
public override double getArea()
{
return r*r*3.14;
}
}
class hinhcn:hinh
{
private float cd,cr;
public hinhcn(float cd,float cr)
{
this.cd =cd;
this.cr =cr;
}
public override double getArea()
{
return cd*cr;
}
}
class tester
Ti liu hng dn thc hnh Mn LTHDT vi C#
164
Nm 2008
{
static void Main(string[] args)
{
hinh H = new hinh();
hinhcn hcn = new hinhcn(2,3);
hinhtron ht = new hinhtron(3);
H = ht;
Console.WriteLine("Dien tich hinh tron= {0}",
H.getArea());
H = hcn;
Console.WriteLine ("Dien tich hinh chu nhat= {0}",
H.getArea());
Console.ReadLine();
}
}
Kt qu sau khi chy chng trnh:
Din tich hnh trn = 28.26
Din tich hnh ch nht= 6
165
Nm 2008
166
Nm 2008
{
vt=v;
Console.WriteLine ("Vi tri cua chuong: {0}",vt);
Console.Write ("Nhap vao ten dong vat:");
ten=Console.ReadLine();
}
public virtual void hien()
{
Console.WriteLine("Vi tri cua chuong:{0}",vt);
Console.WriteLine("Ten dong vat:{0}",ten );
}
}
class cho:Dongvat
{
public override void nhap(int v)
{
Console.WriteLine("\nNhap thong tin cho con cho");
base.nhap(v);
}
public override void hien()
{
Console.WriteLine("Day la con cho");
base.hien();
}
}
class Meo:Dongvat
{
public override void nhap(int v)
{
Console.WriteLine("\nNhap thong tin cho con meo");
base.nhap(v);
}
public override void hien()
{
Console.WriteLine("Day la con meo");
Ti liu hng dn thc hnh Mn LTHDT vi C#
167
Nm 2008
base.hien();
}
}
class tester
{
static void Main(string[] args)
{
Dongvat[] ds = new Dongvat[20];
int i;
for (i = 0; i < ds.Length; ++i)
ds[i] = null;
ConsoleKeyInfo kt;
i=0;
do
{
Console.Write ("Chuong thu {0} ban nuoi cho(c)hay
meo(m): ",i);
kt = Console.ReadKey();
switch (char.ToUpper(kt.KeyChar))
{
case 'C':
ds[i] = new cho();
ds[i].nhap(i);
break;
case 'M':
ds[i] = new Meo();
ds[i].nhap(i);
break;
}
i++;
}
while ((int)kt.KeyChar != 13 && i < 20);
int vt;
Console.Write("Nhap vao vi tri chuong can kiem tra");
vt = int.Parse(Console.ReadLine());
Ti liu hng dn thc hnh Mn LTHDT vi C#
168
Nm 2008
if (ds[vt] == null)
Console.WriteLine("Chuong nay khong nuoi con gi");
else
ds[vt].hien();
Console.ReadKey();
}
}
}
Kt qu sau khi chy chng trnh:
Chung th 0 bn nui g ch(c) hay mo(m):c
Nhp thng tin cho ch
V tri ca chung l: 0
Nhp vo tn ng vt: Nic
Chung th 1 bn nui g ch(c)hay mo(m): m
Nhp thng tin cho mo
V tri chung l: 1
Nhp vo tn ng vt: Mp
Nhp vo v tri chung cn kim tra: 1
y l con mo
V tri chung l: 1
Tn ng vt: Mp
169
Nm 2008
170
Nm 2008
ten=Console.ReadLine();
}
public override void hien()
{
Console.WriteLine("Day la chuong nuoi cho");
Console.WriteLine("Vi tri cua chuong:{0}",vt);
Console.WriteLine("Ten cua con cho :{0}",ten );
}
}
class meo:Dongvat
{
public override void nhap(int v)
{
vt=v;
Console.WriteLine ("\nNhap thong tin cho con meo");
Console.WriteLine ("Vi tri cua chuong:{0}",vt);
Console.Write("Nhap ten cua con meo:");
ten=Console.ReadLine();
}
public override void hien()
{
Console.WriteLine("Day la chuong nuoi meo");
Console.WriteLine("Vi tri cua chuong:{0}",vt);
Console.WriteLine("Ten cua con meo :{0}",ten );
}
}
class tester
{
static void Main(string[] args)
{
Dongvat[] ds = new Dongvat[20];
int i;
for (i = 0; i < ds.Length; ++i)
ds[i] = null;
ConsoleKeyInfo kt;
Ti liu hng dn thc hnh Mn LTHDT vi C#
171
Nm 2008
i = 0;
do
{
Console.Write("Chuong thu {0} ban nuoi cho(c)hay
meo(m): ", i);
kt = Console.ReadKey();
switch (char.ToUpper(kt.KeyChar))
{
case 'C':
ds[i] = new cho();
ds[i].nhap(i);
break;
case 'M':
ds[i] = new meo();
ds[i].nhap(i);
break;
}
i++;
}
while ((int)kt.KeyChar != 13 && i < 20);
int vt;
Console.Write("Nhap vao vi tri chuong can kiem tra");
vt = int.Parse(Console.ReadLine());
if (ds[vt] == null)
Console.WriteLine("Chuong nay khong nuoi con gi");
else
ds[vt].hien();
Console.ReadKey();
}
}
}
Kt qu sau khi chy chng trnh:
Ging bi trn
172
Nm 2008
173
Nm 2008
b, Bi gii mu:
using System;
namespace loplong
{
class hinhcn
{
private int cdai,crong;
public hinhcn()
{
cdai=5;
crong=3;
}
public hinhcn(int cd, int cr)
{
cdai = cd;
crong = cr;
}
public void nhap()
{
Console.Write("nhap chieu dai:");
cdai=int.Parse(Console.ReadLine());
Console.Write("Nhap chieu rong:");
crong=int.Parse(Console.ReadLine());
}
public int dientich()
{
return cdai*crong ;
}
public void hien()
{
Console.WriteLine("Thong tin can hien thi");
Console.WriteLine("Chieu dai={0}",cdai );
Console.WriteLine("Chieu rong={0}",crong);
Console.WriteLine("Dien tich hinh cn ={0}",dientich());
Ti liu hng dn thc hnh Mn LTHDT vi C#
174
Nm 2008
}
internal class hinhhop
{
int cao;
public hinhhop()
{
cao=4;
}
public hinhhop(int cd,int cr,int c)
{
cao = c;
}
public int thetich(hinhcn f)
{
return f.dientich()*cao;
}
public void nhap(hinhcn f)
{
f.nhap();
Console.Write("Nhap chieu cao=");
cao = int.Parse(Console.ReadLine());
}
public void hien(hinhcn f)
{
f.hien();
Console.WriteLine("The tich hinh hop:{0}", thetich(f));
}
}
}
class tester
{
static void Main(string[] args)
{
hinhcn f = new hinhcn();
hinhcn.hinhhop A = new hinhcn.hinhhop();
Ti liu hng dn thc hnh Mn LTHDT vi C#
175
Nm 2008
A.nhap(f);
A.hien(f);
Console.ReadLine();
}
}
}
Kt qu sau khi chy chng trnh:
Nhp chiu di: 10
Nhp chiu rng: 7
Nhp chiu cao: 5
Thng tin hin th
Chiu di = 10
Chiu rng =7
Din tich hnh ch nht = 70
Th tich hnh hp =350
Kt lun
Vic xy dng lp lng c u im l c th truy xut cc thnh
vin private ca lp ngoi.Tuy nhin nu c nhiu lp c xy
dng lng nhau th chng trnh rt ri, bn c s kh hiu
hn.Bi ton ny ch ln xy dng khi c it lp, nu bi ton c
nhiu lp th chng ta ln xy dng mt lp c s sau k tha
xy dng cc lp khc. Khi xy dng lp lng bn trong cn ch
khai bo t kho Internal trc t kho Class.
C.
MT S CU HOI L THUYT:
Cu 1: C cn thit phi ch nh t kha override trong phng
thc ph quyt ca lp dn xut hay khng?
Tr li: C, chng ta phi khai bo r rng t kha override vi
phng thc ph quyt phng thc o (ca lp c s ) bn trong
176
Nm 2008
lp dn xut.
Cu 2: Lp tru tng l th no? C th to i tng cho lp
tru tng hay khng?
Tr li: Lp tru tng khng c s thc thi, cc phng thc
ca n c to ra ch l hnh thc, tc l ch c khai bo, do vy
phn nh ngha bt buc phi c thc hin cc lp dn xut t
lp tru tng ny. Do ch l lp tru tng, khng c s thc thi
nn chng ta khng th to th hin hay to i tng cho lp tru
tng ny.
Cu 3: C phi khi to mt lp th phi k tha t mt lp no
khng?
Tr li: Khng nht thit nh vy, tuy nhin trong C#, th tt c cc
lp c to iu phi dn xut t lp Object. Cho d chng c
c khai bo tng minh hay khng. Do Object l lp gc ca
tt c cc lp c xy dng trong C#. Mt iu th v l cc kiu
d liu gi tr nh kiu nguyn, thc, k t cng c dn xut t
Object
Cu 4: Lp lng bn trong mt lp l nh th ?
Tr li: Lp lng bn trong mt lp hay cn gi l lp ni
c khai bo vi t kha internal, cha bn trong phm vi ca
mt lp. Lp ni c th truy cp c cc thnh vin private ca
lp m n cha bn trong.
Cu 5: Chng trnh sau y c li, hy sa li bin dch v chy
chng trnh.Lnh no gy ra li v nguyn nhn gy li.
class A
{
private int x;
public A()
Ti liu hng dn thc hnh Mn LTHDT vi C#
177
Nm 2008
{
x=2;
}
public A(int x)
{
this.x=x;
}
}
class B:A
{
private int y;
public B():base()
{
y=3;
}
public B(int x,int y):base(x)
{
this.y=y;
}
public int tong()
{
return x + y;
}
}
class teater
{
static void Main(string[] args)
{
B h = new B(2,3);
Console.WriteLine("Gia tri cua tong:{0}", h.tong());
Console.ReadLine();
}
}
Tr li 5: Chng trnh trn khi bin dch c 1 li .A.x is
inaccessible due to its protection level.
Ti liu hng dn thc hnh Mn LTHDT vi C#
178
Nm 2008
Cu lnh gy ra li l: return x + y;
Nguyn nhn gy ra li: Lp B k tha thuc tinh x ca lp A. M
ta thy thuc tinh x ca lp A l private nn n ch c s dng
trong lp v khng cho php lp khc k tha.
Cch sa: Lp B mun k tha thuc tinh x ca lp A th trong lp
A ta xy dng thuc tinh x l protected.
Kt qu chng trnh: Gi tr ca tng=5
D.
CU HOI T TRA LI
Cu 1: Theo bn phng thc a hnh v phng thc tru tng :
a. Cng l mt phng thc o.
b. L phng thc o c ngha s dng ging nhau nhng
cch xy
dng
hai phng thc li khc nhau.
c. Hai phng thc ny thc cht l mt phng thc
Cu 2: Khi khai bo phng thc trong lp k tha m c tn trng
vi tn ca phng thc trong lp c s th:
a. Phi s dng t kho new che giu phng thc.
b. Khng cn thit phi s dng t kho new
c. Thay i bng cch khai bo tham s s dng ca phng
thc.
Cu 3: Mt phng thc o trong lp c s c nht thit phi
c ph quyt trong lp dn xut hay khng?
Cu 4: Lp tru tng c cn thit phi xy dng hay khng? Hy
cho mt v d v mt lp tru tng cho mt s lp.
Cu 5: Lp c lp l g? C th khai bo protected cho cc
thnh vin ca n c khng?
Cu 6: Lp Object cung cp nhng phng thc no m cc lp
khc thng xuyn k tha s dng.
Cu 7: Th no l boxing v unboxing? Hy cho bit hai vi d v
qu trnh ny?
Cu 8: nh ngha no sau y nh ngha r lp tru tng hp l
179
Nm 2008
class A
{
abstract void unfinished() {}
}
class B
{
abstract void unfinished();
}
abstract class C
{
abstract void unfinished();
}
public class abstract D
{
abstract void unfinished();
}
Cu 9: Chng trnh sau y c li, hy sa li bin dch v chy
chng trnh.Lnh no gy ra li v nguyn nhn gy li.
using System;
abstract public class Dongvat
{
protected string name;
public abstract void Who();
public Dongvat(string name)
{
this.name=name ;
}
}
class cho:Dongvat
{
private string color;
public cho(string name,string color):base(name)
{
Ti liu hng dn thc hnh Mn LTHDT vi C#
180
Nm 2008
this.color=color ;}
{
Console.WriteLine ("Toi la con cho {0} mau {1}",name
,color );
}
}
class meo:Dongvat
{
private int trongluong;
public meo(string name,int trongluong):base(name)
{
this.trongluong=trongluong ;
}
public override void Who()
{
Console.WriteLine ("Toi la con
meo{0}nang{1}",name,trongluong);
}
}
class tester
{
static void Main(string[] args)
{
Dongvat[] ds = new Dongvat[3];
ds[0] = new cho("John", "vang");
ds[1] = new meo("Muop", 2);
ds[2] = new Dongvat("Noname");
for (int i = 0; i < 3; i++)
{
ds[i].Who();
}
Console.ReadLine();
}
}
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
181
Nm 2008
BI TP T GIAI:
Bi 1
Xy dng lp Stack vi cc thao tc cn thit. T hy dn
xut t lp Stack i mt s nguyn dng n sang h m 16.
Hng dn
Bi ton gm c 2 i tng: Stack v i s
Cc thuc tinh v phng thc ca lp Stack
class Stack
//Lp c s
{
private int top;
int [] s;
public stack()
public Stack(int n)
public bool full()
// Kim tra Stack y
public bool empty() // Kim tra Stack trng
public void push(int x)
public void pop()
}
class Doiso
//Lp dn xut
{
private int a,n;
//a l h cn i, n l s cn i
public void nhap()
public void doi()
public void hien()
}
Lu : Bi ton ny yu cu ch cho php nhp h cn i l 16.
Cn li cc gi tr khc khng cho php nhp. Vy bn phi khng
ch cc gi tr ca h s a sao cho tho mn bi.
Bi 2 :
Ti liu hng dn thc hnh Mn LTHDT vi C#
182
Nm 2008
183
Nm 2008
+ sosanpham
+ Phng thc Nhap(), xuat(), tinhluong().
Cc thuc tinh v phng thc ca Class NVCN
+K tha thuc tinh ca Class nhanvien
+ songaycong
+ Phng thc Nhap(), xuat(), tinhluong()
Cc thuc tinh v phng thc ca Class NVQL
+K tha thuc tinh ca Class nhanvien
+ hesoluong, luongcoban
+ Phng thc Nhap(), xuat(), tinhluong()
Cc thuc tinh v phng thc ca Class DSNV
+ soluongnv, Nhan vien*[] ds
+ Phng thc: Nhap ds(), xuat ds(), xuatluong()
Lu : Bi ton ny cc lp u c phng thc tinh lng, xong
mi lp c cch tinh lng l khc nhau. Do vy ta nn xy dng
phng thc tinh lng lp c s (Class nhanvien) l phng
thc o, sau cc lp dn xut ta k tha li bng cch ghi
phng thc ..
Bi 4:
Xy dng lp MaTranVuong bng cch k tha t lp
MaTran c xy dng v b xung thm cc phng thc sau:
- getDeterminant tr v nh thc ca ma trn.
- duongCheoChinh tinh tng cc phn t trn ng cho
chnh
- duongCheoPhu tinh tng cc phn t trn ng cho
ph
- duongCheoChinhK tinh tng cc phn t trn ng
cho chinh th k
- duongCheoPhuK tinh tng cc phn t trn ng cho
ph th k
Bi 5:
a) Xy dng lp tru tng Hinh nh sau:
abstract class Hinh
{
abstract public float getArea();
Ti liu hng dn thc hnh Mn LTHDT vi C#
184
Nm 2008
}
b) Xy dng lp HinhVuong, HinhTron, HinhTamGiac,
HinhBinhHanh, HinhThoi bng cch k t lp Hinh v ghi
phng thc getArea tinh din tich ca cc hnh tng ng.
Hng dn
Bi ton gm c 6 i tng: class Hinh, class HinhVuong,
class HinhTron, class HinhBinhHanh, class Hinhthoi
Cc thuc tinh v phng thc ca cc lp:
abstract public class Hinh
{
abstract public float getArea();
}
class Hinhvuong:Hinh
{
float canh;
public Hinhvuong()
public Hinhvuong(foat a)
public override float getArea()
public void nhap()
public void hien()
}
class Hinhtron:Hinh
{
private float r;
public Hinhtron()
public Hinhtron(float r)
public override float getArea ()
}
class Hinhtamgiac:Hinh
{
private float cao,day
public Hinhtamgiac()
public Hinhtamgiac(float cao, float day)
public override float getArea()
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
185
Nm 2008
class Hinhbinhhanh:Hinh
{
private float a,b // a,b l 2 ng cho ca hnh bnh hnh
public Hinhbinhhanh()
public Hinhbinhhanh(float a, float b)
public override float getArea()
}
class HinhThoi:Hinh
{
private float a,b // a,b l 2 ng cho ca hnh thoi
public HinhThoi()
public HinhThoi(float a, float b)
public override float getArea()
}
Lu : Cc cng thc tinh din tich ca cc hnh
Tamgiac=1/2(day*cao)
Hinhbinhhanh=a*b
// a,b l 2 ng cho
Hinhthoi=1/2(a*b)
Bi 6:
Xy dng cc lp sau:
+ Lp NGI gm:
- Cc thuc tinh
Char hoten;
int ns;
- Cc phng thc
Hai hm khi to,Phng thc in()
+ Lp MNHC gm:
- Cc thuc tinh:
Char mon; // Tn mn hc.
int st; // s tit
- Cc phng thc
Hai hm khi to,Phng thc in()
+Lp GIAOVIN
- Cc thuc tinh
K tha t lp ngi
Ti liu hng dn thc hnh Mn LTHDT vi C#
186
Nm 2008
187
Nm 2008
188
Nm 2008
CHNG IV
GIAO DIN
Mc ch: Sau khi nghin cu chng ny ngi hc nm c
cc ni dung sau:
Hiu th no l mt giao din.
Cch thc xy dng v truy cp mt giao din
S thc thi nhiu giao din ca mt lp
S khc nhau gia giao din v lp tru tng
A. TM TT L THUYT
1. Khi nim v giao din
Giao din l tp cc hm khai bo sn m khng ci t. Cc lp
thc thi giao din c nhim v ci t cc hm ny.
Mc ich ca vic ci t giao din: Cho php mt lp dn xut
c th k tha thc thi nhiu giao din. iu ny khc phc
c hn ch ca lp tru tng l mt lp dn xut ch c th thc
thi mt lp tru tng.
2. Ci t mt giao din
C php nh ngha mt giao din nh sau:
[thuc tinh] [b sung truy cp] interface <tn giao din> [: danh
sch c s]
{
<phn thn giao din>
}
189
Nm 2008
190
Nm 2008
191
Nm 2008
{
void Read();
void Write(object obj);
int Status
{
get;
set;
}
}
// thc thi phng thc Write public void Write( object o)
public void Write( object o)
{
Console.WriteLine("Impleting the Write Method for
IStorable");
}
// to mt lp thc thi giao din IStorable public class Document
: IStorable
public class Document : IStorable
{
public Document( string s)
{
Console.WriteLine("Creating document with: {0}", s);
}
// thc thi phng thc Read()
public void Read()
{
Console.WriteLine("Implement the Read Method for
IStorable");
}
// thc thi phng thc Write public void Write( object o)
public void Write( object o)
{
Console.WriteLine("Impleting the Write Method for
IStorable");
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
192
Nm 2008
193
Nm 2008
194
Nm 2008
195
Nm 2008
}
public Nhanviensx(int hsl)
{
this.hsl=hsl ;
}
public virtual void nhap()
{
Console.Write("Nhap vao ho ten:");
ten=Console.ReadLine();
Console.Write("Nhap vao he so luong:");
hsl=float.Parse(Console.ReadLine());
}
public virtual void hien()
{
Console.WriteLine("Thong tin can hien thi");
Console.WriteLine("Ho ten nhan vien:{0}",ten );
Console.WriteLine("He so luong:{0}",hsl );
}
public virtual double luong()
{
return hsl*lcb ;
}
}
class tester
{
static void Main(string[] args)
{
Nhanviensx A = new Nhanviensx();
A.nhap();
A.hien();
Console.WriteLine("Luong cua nhan vien nay la:{0}",
A.luong());
Console.ReadLine();
}
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
196
Nm 2008
197
Nm 2008
198
Nm 2008
class dayso
{
public int[] a;
protected int n;
public dayso()
{
a = new int[5];
}
public dayso(int n)
{
a = new int[n];
}
public void nhap()
{
Console.Write("Nhap vao so phan tu cua day so:");
n = int.Parse(Console.ReadLine());
Console.WriteLine("Nhap vao thong tin cua day so:");
for (int i = 0; i < n; i++)
{
Console.Write("a[{0}]=", i);
a[i] = int.Parse(Console.ReadLine());
}
}
public void print()
{
for (int i = 0; i < n; i++)
Console.Write("{0}\t",a[i]);
Console.WriteLine();
}
}
interface sort
{
void sapxep();
}
class quicksort:dayso,sort
Ti liu hng dn thc hnh Mn LTHDT vi C#
199
Nm 2008
{
public void sapxep()
{
int i, j,x,tmp;
x=a[(n)/2];
i = n-1; j = n;
do
{
while (a[i] < x) i++;
while (a[j] > x) j--;
if (i <= j)
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++; j--;
}
} while (i < j);
}
}
class selectsort:dayso,sort
{
public void sapxep()
{
int min,tmp,j;
for (int i = 0; i < n - 1; i++)
{
min=i;
for (j = i + 1; j < n; j++)
if (a[j] < a[min])
min = j;
tmp = a[min];
a[min] = a[i];
a[i] = tmp;
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
200
Nm 2008
}
}
class inserttionsort:dayso,sort
{
public void sapxep()
{
int i,pos,k;
for (i = 0; i < n; i++)
{
k = a[i]; pos = i-1;
while ( pos >=0 && a[pos] > k)
{
a[pos + 1] = a[pos];
pos--;
}
a[pos + 1] = k;
}
}
}
class Tester
{
static void Main()
{
//sort a = new quicksort();
//selectsort a = new selectsort();
inserttionsort a = new inserttionsort();
a.nhap(); Console.Clear();
Console.WriteLine("Day truoc khi sap xep :");
a.print();
Console.WriteLine("Day sau khi sap xep :");
a.sapxep();
a.print();
Console.ReadKey();
}
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
201
Nm 2008
202
Nm 2008
}
class Document:Italk,
Istorable
{
public Document(string s)
void Istorable.Read() // Ci t phng thc Read() ca
Istorable
public void Write()
puclic void Italk()
void Italk.Read() // Ci t phng thc Read() ca ITalk
}
Lu : Chng ta phi p kiu thnh giao din gi Phng thc
Read() ca Istorable v Italk. Thc thi giao din mt cch tng
minh cho phng thc Read() bng cch gi c tn ca giao din.
b, Bi gii mu:
using System;
namespace bt
{
interface Istorable
{
void Read();
void Write();
}
interface ITalk
{
void ITalk();
void Read();
}
class Document:Istorable,ITalk
{
public Document(string s)
{
Console.WriteLine("Tao van ban {0}",s);
}
void Istorable.Read()
{
Ti liu hng dn thc hnh Mn LTHDT vi C#
203
Nm 2008
204
Nm 2008
}
Kt qu sau khi chy chng trnh:
To vn bn Bi tp C#
Thc thi Istorable.Read()
Thc thi Italk.Read()
Thc thi Istorable.Write()
Thc thi Italk.ITalk
C. CU HOI V TRA LI
Cu 1: So snh gia lp v giao din?
Tr li: Giao din khc vi lp mt s im sau: giao din
khng cung cp bt c s thc thi m ngun no c. iu ny s
c thc hin ti cc lp thc thi giao din. Mt giao din a
ra ch ni rng c cung cp mt s s xc nhn hng dn cho
nhng iu g xy ra v khng i vo chi tit. Mt iu khc
na l tt c cc thnh vin ca giao din c gi s l public
ngm nh. Nu chng ta c thay i thuc tnh truy cp ca
thnh vin trong giao din th s nhn c li.
Giao din ch cha nhng phng thc, thuc tnh, s kin, ch
mc. V khng cha d liu thnh vin, b khi dng, v b hy.
Chng cng khng cha bt c thnh vin static no c.
Cu 2: S khc nhau gia giao din v lp tru tng?
Tr li: S khc nhau c bn l s k tha. Mt lp c th k
tha nhiu giao din cng mt lc, nhng khng th k tha nhiu
hn mt lp tru tng.
Cu 3: Cc lp thc thi giao din s phi lm g?
Tr li: Cc lp thc thi giao din phi cung cp cc phn thc thi
chi tit cho cc phng thc, thuc tinh, ch mc, s kin c
khai bo trong giao din.
Cu 4: C bao nhiu cch gi mt phng thc c khai bo
trong giao din?
Ti liu hng dn thc hnh Mn LTHDT vi C#
205
Nm 2008
206
Nm 2008
{
@Deprecated
void open();
void openFrontDoor();
void openBackDoor();
}
Bi 2. Hon thnh chng trnh sau:
interface Closable
{
void close();
}
class File implements Closable
{
@Override
public void close()
{
//... close this file...
}
}
iu g s xy ra? Bn c th gii thich ti sao?
Bi 3: Hy vit mt giao din khai bo mt thuc tnh ID cha
chui gi tr. Vit mt lpEmployee thc thi giao din .
Bi 4: on m ngun sau y c li hy s li v hy cho bit ti
sao c li ny. Sau khi sa li hy vit mt lp Circle thc thi giao
din ny?
public interface osi
{
long with;
long height;
double area();
int side();
}
Bi 5: Chng trnh sau y c li hy sa li, bin dch v chy
li chng trnh. Hy gii thich ti sao chng trnh li li.
Ti liu hng dn thc hnh Mn LTHDT vi C#
207
Nm 2008
using system;
interface Ipoint
{
int x
{
get;
set;
}
int y
{
get;
set;
}
}
class MyPoint
{
private int myX;
private int myY;
public MyPoint(int x,int y)
{
myX=x;
myY=y;
}
public int x
{
get { return myX ;}
set { myX=value ;}
}
public int y
{
get
{return myY;}
set
{myY=value ;}
}
Ti liu hng dn thc hnh Mn LTHDT vi C#
208
Nm 2008
}
class tester
{
private static void printpoint(Ipoint p)
{
Console.WriteLine("x={0},y={1}", p.x, p.y);
}
static void Main()
{
MyPoint p = new MyPoint(2, 3);
Console.Write("My point ");
printpoint(p);
Ipoint p2 = new Ipoint();
printpoint(p2);
Console.ReadLine();
}
}
Bi 6: Trong cc cch khai bo sau cch khai bo giao din no l
ng. Cch khai bo no sai th hy sa li cho ng.
interface A
{
void print () {};
}
interface B
{
void print();
}
abstract interface C
{
print();
}
abstract interface D
{
abstract void print() {}
Ti liu hng dn thc hnh Mn LTHDT vi C#
209
Nm 2008
}
Bi 7: Xy dng mt giao din IDisplay c khai bo thuc tnh
Name kiu chui. Hy vit hai lp Dog v Cat thc thi giao din
IDisplay, cho bit thuc tnh Name l tn ca i tng.
210