Вы находитесь на странице: 1из 87

BI TP MN LP TRNH HNG I TNG

(OJBECT ORIENTED PROGRAMMING EXERCISES)


H: I HC

Bi tp Mn: Lp trnh hng i tng - Trang 1


Tun 1. LM QUEN VI NGN NG LP TRNH JAVA (3 tit thc hnh)

Chng 1. Tng quan v cch tip cn hng i tng


Chng 2. Nhng khi nim c bn ca lp trnh hng i tng
Chng 3. Gii thiu v Java
Mc tiu:
Lm quen vi ngn ng lp trnh Java
Lm quen vi cng c lp trnh Java (Eclipse hoc Jcreator/NetBeans)
Hiu c cu trc 1 chng trnh Java, cch bin dch v chy chng trnh dng ngn ng
lp trnh Java
Hiu v p dng c nhp xut d liu, cc ton t trong ngn ng lp trnh Java.
Hiu v p dng c cc cu trc iu khin, cu trc lp trong ngn ng lp trnh Java
Yu cu:
Tt c cc bi tp lu trong th mc: D:\MaSV_HoTen\Tuan01\
My tnh phi c ci t sn JDK (Java Development Kit)
My tnh phi c sn phn mm son tho h tr cho lp trnh hng i tng dng ngn ng
lp trnh Java (Eclipse/JCreator/NetBeans)
Tn tp tin .java phi cng tn vi tn lp.

PHN THIT LP MI TRNG LM VIC


Bi 1. Cu trc ca 1 chng trnh vit bng ngn ng lp trnh Java
package packageName; // 1. Khai bo tn gi nu cn

import java.util.Scanner; // 2. Khai bo th vin c sn nu cn dng

public class ClassName // 3. Khai bo tn lp


{
/* cc ghi ch lin quan */
int var; // Khai bo bin ca lp
public void methodName() // 4. Khai bo tn phng thc v tham s
{
/* phn thn ca phng thc */
// Cc lnh thc hin cho mc tiu phng thc
}
public static void main(String[] args) // 5. Hm chnh chy
{
/* hm chnh */
}
}

Bi 2. Thao tc bin dch v chy chng trnh Java trn Console.

Bi tp Mn: Lp trnh hng i tng - Trang 2


Dng Notepad (hoc Notepad++) son tho code v dng Console bin dch chy chng
trnh (javac v java ca JDK).
Thit lp bin mi trng chy java c ch command -line
Khi ng Windows Explorer, copy ng dn ti th mc bin khi ci t java

M System Properties, Chn th Advanced

Nhn nt Environment Variables


Bi tp Mn: Lp trnh hng i tng - Trang 3
Tm n bin Path, v nhn nt Edit . a con tr vo cui dng, g du ;. Ri paste ng dn ti
th mc bin khi ci t java vo.

Nhn nt OK lin tip ng cc ca s m ra.


M command-line, g vo javac, nhn enter. Nu nh ca s chy ra c dng nh hnh l OK.

Bi tp Mn: Lp trnh hng i tng - Trang 4


Nu ra thng bo kiu: 'javac' is not recognized as an internal or external command, operable program
or batch file, nh hnh.

Th coi nh thit lp sai, cn phi lm li.


Hoc thc hin cc bc sau:
Trong ca s console thc hin cc bc
B1: Set Path=%PATH%;C:\Program Files\Java\Jdk1.5\bin
B2: Chuyn v th mc D:\MaSV_HoTen\Tuan01\
B3: Bin dch (dng lnh javac TenTapTin.java, nu qu trnh bin dch khng c li s pht
sinh tp tin TenTapTin.class trong cng th mc) v chy chng trnh (dng lnh java
TenTapTin)

Bi 3. Thao tc to Project, to tp tin java, bin dch tp tin dng Jcreator 5.0 hoc Eclipse.
S dng Eclipse IDE
A. Khi ng Eclipse
1.Khi ng Eclipse JSE

Bi tp Mn: Lp trnh hng i tng - Trang 5


2.Chn Perspective

Chn Perspective Java(Default)

Bi tp Mn: Lp trnh hng i tng - Trang 6


ng Welcome screen. Kt qu

B. To Project trong Eclipse


1. To project mi: Menu File->New->Java Project

Bi tp Mn: Lp trnh hng i tng - Trang 7


Nhn Finish. Kt qu trong Project Explorer

2. Vit code:

Bi tp Mn: Lp trnh hng i tng - Trang 8


Lu NN to cc package lu tr cc lp java

t tn theo kiu: a.b.c trong cc k t l tn bt k. V d: chuong01.tuan01.bai01 iu c ngha


l Eclipse s to cho bn 3 th mc: chuong01\tuan01\bai01. Lu : cc gi lun c t tn bng
ch thng.

To lp mi bng cch nhn phi chut ln package cn thm lp vo, chn New Class

Bi tp Mn: Lp trnh hng i tng - Trang 9


Ch : Tn lp lun bt u bng 1 k t hoa. t theo kiu Title-Case
Bt u vit code. Eclipse h tr c ch code completion rt tt. Cc bn lun nh phm Ctrl-SpaceBar
Eclipse hin ln cc suggestion.

Mt s editing template hay dng:


G sysout sau nhn Ctrl-Spacebar s cho System.out.println();
G main sau nhn Ctrl-Spacebar s cho public static void main(String[] args) {}
tm hiu thm, vo menu Window->Reference

Bi tp Mn: Lp trnh hng i tng - Trang 10


Cc phm tt hay dng: Trong Eclipse, vo menu Help->Key Assitst hoc nhn t hp Ctrl-Shift-L
hin th.
3. Thc thi chng trnh:
Nhn chut phi ln lp cn chy, chn menu Run As-> Java Application.

Hoc nhn F11 chy tp tin hin ti, cn Ctrl+F11 bin dch v chy ton b project.
Mt vi vn thng gp:
1. Eclipse s t ng bin dch code v bo li.
Nu bn c li hay warning th bn tri ca dng li. V d nh sau:

Bi tp Mn: Lp trnh hng i tng - Trang 11


2. Vn g ting Vit(unicode) trong eclipse:
Java s dng bng m unicode nn vic g ting vit l OK. g c ting vit, m bo l project
ca bn phi c lu vi bng m UTF-8.
Cch lm nh sau: Nhn chut phi ln Project, chn Properties. Chn mc resources nh hnh

iu ny cho php project bn chn c s dng unicode.


cho tt c t project lc thit lp v sau s dng unicode ( khi mc cng mi project mi thit lp),
ta lm nh sau: Vo menu Window->References, chn mc General-> Workspace nh hnh

Bi tp Mn: Lp trnh hng i tng - Trang 12


Nhn Apply. T y, bt c project no to ra u h tr Unicode.
3. M Project trong Eclipse
Eclipse khng h tr m project trc tip nn bn khng c kiu double-click-for open thng thy,
m bn phi import project vo workspace nh sau:
Vo menu File->Import ri chn nh hnh

Bi tp Mn: Lp trnh hng i tng - Trang 13


Nhn Next. Sau nhn nt Browse tm n th mc cha project.

Chn Project cn Import ri nhn Finish.


4. Export file jar t chy(executable jar file) trong eclipse
Nhn chut phi ln Project cn export, chn Export.
Chn Runnable JAR file nh hnh. Nhn Next

Bi tp Mn: Lp trnh hng i tng - Trang 14


Chn Lauch configuration. Chn th mc cha cng nh tn file jar. Nhn Finish.

Thc thi jar file di dng command-line:

Nu Project ca bn c ch GUI th bn c th m file jar ca bn bng Java Plaform SE library nh


hnh.

Bi tp Mn: Lp trnh hng i tng - Trang 15


PHN LIN QUAN N NHP XUT
Bi 4. Vit chng trnh xut ra mn hnh dng ch Hello World!
Lu s dng xut ra mn hnh:
Sytstem.out.print(): xut ra mn hnh mt chui hay mt gi tr (khng xung dng)
Sytstem.out.println(): xut ra mn hnh mt chui hay mt gi tr (c xung dng)
Sytstem.out.printf(): xut ra mn hnh mt chui theo nh dng tng t nh ngn ng lp trnh
C++
C php: System.out.printf(format-string, [arg1, arg2, arg3, ]);
- %d, %f, %c, %s: s nguyn (byte, short, int, long), s thc (float, double)
- Du -: canh tri, mc nh canh phi.
- %0: fill s 0.
- Mt s k t c bit: \a, \b, \f, \n, \r, \t, \v, \\
- chnh xc ca s thc: %5.3f: chnh xc phn l ca s trong format-string l 3

Bi tp Mn: Lp trnh hng i tng - Trang 16


Bi 5. Vit chng trnh nhp vo tn ca mnh v xut ra mn hnh Hello + Tn.
Lu :
nhp d liu t bn phm, dng th vin Scanner bng cch
import java.util.Scanner;
Khai bo i tng
Scanner sc=new Scanner(System.in);
D liu nhp vo l s nguyn:
int a=sc.nextInt();
D liu nhp vo l s thc:
Bi tp Mn: Lp trnh hng i tng - Trang 17
double b=sc.nextDouble();
D liu nhp vo l chui:
String b=sc.nextLine();

PHN LIN QUAN N CC TON T


Bi 6. Cho on chng trnh sau:
Thao tc vi ton t s hc

Thao tc vi ton t ni chui

Thao tc vi ton t 1 ngi

Bi tp Mn: Lp trnh hng i tng - Trang 18


Thao tc vi ton t pre-increment v post-increment

Kt qu v gii thch?

Bi 7. Cho on chng trnh sau:


Thao tc vi cc ton t quan h, ton t so snh trong ngn ng lp trnh Java.

Bi tp Mn: Lp trnh hng i tng - Trang 19


Kt qu v gii thch?

Bi 8. Cho on chng trnh sau:


Thao tc vi ton t iu kin

PHN CU TRC LP V CU TRC IU KHIN


Bi 9. V d v cu trc iu khin
Cu trc if-else, switch case

Bi tp Mn: Lp trnh hng i tng - Trang 20


Bi tp Mn: Lp trnh hng i tng - Trang 21
Cu trc while, do while v for

Pht sinh ngu nhin s s dng lp Random. Lp Random nm trong gi java.util.* c 1 s phng
thc:

Method Produces
boolean
A true or false value
nextBoolean();
int nextInt() An integral value between Integer.MIN_VALUE andInteger.MAX_VALUE
long nextLong() A long integral value between Long.MIN_VALUEand Long.MAX_VALUE
float nextFloat() A decimal number between 0.0 (included) and 1.0 (excluded)
double
A decimal number between 0.0 (included) and 1.0 (excluded)
nextDouble()

Bi tp Mn: Lp trnh hng i tng - Trang 22


Pht sinh s ngu nhin nm trong mt vng (min, max)
int min = 65;
int max = 80;

Random r = new Random();


int i1 = r.nextInt(max - min + 1) + min;

Lu : Nu r.nextInt(max)s tr v gi tr gia 0 v max.

Bi 10. Vit chng trnh in ra tng ca 10 s chn u tin (s dng vng lp for hoc while)

Bi 11. Vit chng trnh in ra nhng s l t 1 n 99.

Bi 12. Vit chng trnh xut ra tng cc s l bi s ca 7 (t 1 n 100)

Bi 13. Vit chng trnh in ra tng 1+2+3.+n vi n c nhp t tham s command line

Bi 14. Vit chng trnh in ra tng 1+3+5.+n nu n l s chn, 2+4+6+.n nu n l s l. Gi tr


n c nhp vo t tham s command line

Bi 15. Vit chng trnh in ra gi tr ln nht v nh nht trong mt dy cc gi tr user nhp vo


t tham s command line.

Bi 16. Vit chng trnh gii phng trnh bc 1 vi h s a, b c nhp vo bi user t tham s
command line.

Bi 17. Vit chng trnh c mt gi tr nguyn t bn phm v in ra s l s chn, l hoc zero

Bi 18. Vit chng trnh in ra bi s ca 3 t 300 n 3.

Bi 19. Vit chng trnh in ra s ln k t a xut hin trong mt chui.

Bi tp Mn: Lp trnh hng i tng - Trang 23


Bi 20. Vit hm m s lng k t l s c trong chui s. Chui s c nhp t bn phm.
Dng m ASCII kim tra hoc dng class Character: Character.isDigit(k t) kim k
t c phi l s hay khng .

Bi 21. Vit hm tch chui gc thnh chui khc (dng StringTokenizer).


VD: chui gc S = Bai Tap Mon Lap Trinh Java, chui sau khi tch l
Bai
Tap
Mon
Lap
Trinh
Java

Bi 22. Vit chng trnh kim tra s nhp vo c phi l s nguyn t hay khng

Bi 23. Vit chng trnh tm USCLN ca 2 s nhp vo.

Bi 24. Vit chng trnh tnh tng N s nguyn.

Bi 25. Tnh tng cc s nguyn t nh hn N

Bi 26. Tnh tng N s nguyn t u tin

Bi 27. Vit chng trnh nhp vo s nguyn n v thc hin:


Xut ra mn hnh n s u tin ca chui Fibonaci (c hai gi tr u l 1 v 1)

Bi 28. Vit chng trnh in ra nhng hnh sau: (mi hnh s dng nhng vng lp khc nhau)
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *

Bi tp Mn: Lp trnh hng i tng - Trang 24


* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *

* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *

Bi 29. Vit chng trnh nhp vo M v N, xut ra cc hnh sau: (dng cu trc lp)
a.
*
**
***
****
*****
******
******* *****

b
*******
*******
*******
*******
*******
*******
*******

c.

Bi tp Mn: Lp trnh hng i tng - Trang 25


*
***
*****
*******
*********
***********
*************
***************
*****************
*******************

d.

*
***
*****
*******
*********
***********
*************
***************
*****************
*******************

Bi tp Mn: Lp trnh hng i tng - Trang 26


Kiu d liu cn bn trong Java (Primary Data Type)

Kiu d
Bit Phm vi biu din gi tr M t
liu

S liu kiu byte l mt loi in hnh dng


byte 8 -128 n 127 lu tr mt gi tri bng mt byte. Chng c
s dng rng ri khi x l mt file vn bn

Kiu Char s dng lu tn hoc cc d liu


char 16 \u0000 to u\ffff
k t .V d tn ngI lao ng

D liu boolean dng lu cc gi tr ng


boolean 1 True hoc False hoc sai V d : Ngi lao ng c p ng
c yu cu ca cng ty hay khng ?

Kiu short dng lu cc s c gi tr nh


short 16 -32768 n 32767
di 32767.V d s lng ngi lao ng.

Kiu int dng lu mt s c gi tr ln n


-2,147,483,648 n
int 32 2,147,483,648.V d tng lng m cng ty
+2,147,483,648
phi tr cho nhn vin.

Kiu long c s dng lu mt s c gi tr


-9,223,372,036854,775,808 n
long 64 rt ln n 9,223,372,036854,775,808 .V d
+9,223,372,036854,775,808
dn s ca mt nc

-3.40292347E+38 n Kiu float dng lu cc s thp phn n


float 32
+3.40292347E+38 3.40292347E+38 V d : gi thnh sn phm

-1,79769313486231570E+308 Kiu double dng lu cc s thp phn c


double 64 n gi tr ln n1,79769313486231570E+308 V
+1,79769313486231570E+308 d gi tr tn dng ca ngn hng nh nc.

Kiu d liu tham chiu (reference)

Kiu d liu M t

Mng (Array) Tp hp cc d liu cng kiu. V d : tn sinh vin

Tp hp cc bin v cc phng thc.V d : lp Sinhvin cha ton b cc chi


Lp (Class)
tit ca mt sinh vin v cc phng thc thc thi trn cc chi tit .

Giao din
L mt lp tru tng
(Interface)

Bi tp Mn: Lp trnh hng i tng - Trang 27


Tun 2. LP V I TNG

Chng 1. Tng quan v cch tip cn hng i tng


Chng 2. Nhng khi nim c bn ca lp trnh hng i tng
Chng 3. Gii thiu v Java
Mc tiu:
Hiu v p dng c cch vit cc lp vi cc thuc tnh, phng thc bng ngn ng lp
trnh Java
Hiu v p dng c cch s dng Object v Class Diagram ( mc n gin trong UML)
Yu cu:
Tt c cc bi tp lu trong th mc: D:\MaSV_HoTen\Tuan02\
My tnh phi c ci t sn JDK (Java Development Kit)
My tnh phi c sn phn mm son tho h tr cho lp trnh hng i tng dng ngn ng
lp trnh Java (Eclipse/JCreator/NetBeans)
Tn tp tin .java phi cng tn vi tn lp.

nh ngha 1 lp trong UML2

Cch truy xut (visibility) gm public, private v protected

public +

private -

protected #
package ~

Bi tp Mn: Lp trnh hng i tng - Trang 28


Bi 1. Vit chng trnh tnh din tch, chu vi hnh ch nht.
- Hy vit lp HinhChuNhat gm c:
Attributes : chiu di, chiu rng.
Phng thc thit lp (set), v ly (get) thng tin chiu di, chiu rng.
Phng thc tnh din tch, chu vi.
Phng thc toString gm cc thng tin di, rng, din tch, chu vi.
- Xy dng lp cha hm main cho phn kim nghim. Di rng c th nhp t bn phm.

Bi 2. Vit chng trnh OOP qun l sinh vin n gin: Nhp, xut thng tin, tnh im TB.
- Vit lp Sinh vin nh sau:
Attributes (private):
M sinh vin l s nguyn.
H tn: chui k t.
im LT, im TH : float
Constructor:
Constructor mc nh ( khi to i tng vi cc thng tin kiu s l 0, kiu chui l
chui rng).
Constructor th hai nhn y thng tin khi to gi tr cho tt c cc bin instance.
Methods:
Cc getter v setter cho mi thuc tnh.
Tnh im trung bnh.
Phng thc toString din t i tng dng chui.
Bi tp Mn: Lp trnh hng i tng - Trang 29
- Xy dng class cha hm main: to 3 i tng sinh vin sv1, sv2, sv3, trong :
sv1 cha thng tin ca chnh mnh (to bng constructor thng s, thng tin bit ri
khi nhp t bn phm).
sv2 l thng tin ngi bn thn nht ca em (to bng constructor thng s, thng tin
bit ri khi nhp t bn phm).
sv3 to bng constructor mc nh. Nhp cc thng tin cho sv3 t bn phm ri sau
dng cc setter gn vo cho cc thuc tnh tng ng.
In bng danh sch sinh vin gm 4 ct l MSSV, h tn, im LT, im TH, im TB
(bng c 3 dng cho 3 sinh vin).
HD: phng thc xut ca i tng sinh vin in thng tin trn mt dng c nh dng. S dng
System.out.printf(chui nh dng, i s 1, i s 2, .); Trong chui nh dng ging
c++, v d:
%-30s: chui, chim 30 k t, du tr canh l tri.
%5.2f : s thc, chim 5 k t, bao gm 2 k s l.
K t nh dng:
s : chui
d: s nguyn (byte, short, int, long)
f: s thc (float, double)
b: boolean

Bi 3. S giao thng cn theo di vic ng k xe ca ngi dn. Da vo thng tin tr gi xe v dung


tch xylanh ca xe, s giao thng cng tnh mc thu phi ng trc b khi mua xe nh sau:
- Di 100cc, 1% tr gi xe.
- T 100 n 200cc, 3% tr gi xe.
- Trn 200cc, 5% tr gi xe.
Hy thit k v ci t class Vehicle vi cc attributes v methods ph hp. Class phi c cc
constructor v phi bo m tnh encapsulation.
Xy dng class cha hm main. Hm main in ra menu la chn cc cng vic:
1. Nhp thng tin v to cc i tng xe1, xe2, xe3
2. Xut bng k khai tin thu trc b ca cc xe.
3. Thot.
Bi tp Mn: Lp trnh hng i tng - Trang 30
Mu kt xut ca chng trnh:

Bi 4. Ngn hng ABC mun lu tr thng tin ca mi ti khon nh sau:


Mi ti khon cha cc thng tin:
S ti khon ( Kiu long),
Tn ti khon (kiu chui),
S tin trong ti khon (kiu double)
(a). Thit k lp Account lu tr cc thng tin, lp bao gm cc phng thc sau:
Constructor: C 2 constructor ( mc nh v y tham s)
Cc phng thc get, set cho tng thuc tnh
Phng thc toString tr v chui cha ton b thng tin ti khon, yu cu nh dng tin
t.
(b). Thm cc thng tin sau vo lp Account
Hng s li sut c gi tr khi to 0.035
Constructor c 2 i s: s ti khon, tn ti khon. Constructor ny s khi to s tin mc nh
l 50.
Phng thc np tin vo ti khon: Ly s tin hin ti trong ti khon + s tin np vo
Phng thc rt tin: Ly s tin hin ti trong ti khon (s tin mun rt+ph rt tin)
Phng thc o hn: Mi ln n k o hn th s tin trong ti khon = s tin trong ti
khon + s tin trong ti khon * LAISUAT
Phng thc chuyn khon t ti khon ny sang ti khon khc
Ch : Mi thao tc phi kim tra s tin np, rt, chuyn c hp l hay khng? (VD: tin
nhp vo <0, tin rt nhiu hn tin trong ti khon th thng bo khng hp l v yu cu nhp li)

Bi 5. Mt phn s gm c 2 thuc tnh l t s (numerator) v mu s (denominator). Hy thit k


class Phn s (Rational) thc hin cc chc nng sau:
- Ti gin phn s (reduce)
- Nghch o phn s (reciprocal)
- Cng 2 phn s (add)
Bi tp Mn: Lp trnh hng i tng - Trang 31
- Tr 2 phn s (subtract)
- Nhn 2 phn s (multiply)
- Chia 2 phn s (divide)
- So snh 2 phn s, s dng sai s 0.0001(tolerance) so snh.

Bi 6. Vit lp HangThucPham m t mt hng ha l hng thc phm trong kho ca mt siu th, c
cc thuc tnh: m hng (khng cho php sa, khng c rng), tn hng (khng c
rng), n gi (>0), ngy sn xut v ngy ht hn (ngy khng c rng, ngy ht hn phi
sau ngy sn xut).
Rng buc cht ch cc rng buc trn cc trng d liu. Nu d liu khng hp l th gn gi tr
mc nh cho php tng ng ca trng .
- To 1 constructor c y tham s, 1 constructor c tham s l m hng.
- Vit cc phng thc setters/getters.
- Vit phng thc kim tra mt hng thc phm ht hn cha?
- Phng thc toString, tr v chui cha thng tin ca hng thc phm. Trong : nh dng
n gi c phn cch hng nghn. nh dng kiu ngy l dd/MM/yyyy.
Vit lp cho phn kim nghim.

Bi 7. a. Vit chng trnh xy dng i tng Sinh vin gm c cc thuc tnh sau:
o M sinh vin l s nguyn,
o H tn: chui k t,
o a ch: chui k t,
o S in thoi: l s bao gm 7 ch s
- Cc thuc tnh khai bo private, nh ngha cc phng thc get/set cho tng thuc tnh.
- Vit cc constructor khi to i tng (constructor mc nh, constructor c tham s).
- Override phng thc toString ca lp Object.
b. Xy dng lp cho php nhp vo N sinh vin (dng mng). Xut danh sch trn ra mn hnh
theo th t tng dn ca m sinh vin.

Bi 8. a. Vit chng trnh xy dng i tng CD gm c cc thuc tnh sau:

Bi tp Mn: Lp trnh hng i tng - Trang 32


o M CD l s nguyn,
o Ta CD: chui k t,
o Ca s: chui k t,
o S bi ht: s nguyn (>0)
o Gi thnh : s thc (>0)
- Cc thuc tnh khai bo private, nh ngha cc phng thc get/set cho tng thuc tnh.
- Vit cc constructor khi to i tng CD.
- Override phng thc toString ca lp Object.
b. Xy dng lp lu danh sch cc CD (dng mng).
- Phng thc thm 1 CD vo danh sch, thm thnh cng nu khng trng m CD v kch
thc mng cn cho php.
- Tnh s lng CD c trong danh sch.
- Tnh tng gi thnh ca cc CD.
- Phng thc sp xp danh sch gim dn theo gi thnh.
- Phng thc sp xp danh sch tng dn theo ta CD.
- Phng thc xut ton b danh sch.
c. Vit lp cho phn kim nghim. Dng menu case thc hin cc chc nng theo yu cu.

Bi tp Mn: Lp trnh hng i tng - Trang 33


Tun 3.
Tun 4. CC KHI NIM C BN K THA V A HNH

Chng 4. K tha v a hnh trn Java


Mc tiu:
Hiu v p dng c cch vit code k tha v a hnh trn Java.
Hiu v p dng c cch s dng m hnh lp vi m t k tha.
Yu cu:
Tt c cc bi tp lu trong th mc: D:\MaSV_HoTen\Tuan03-04\
My tnh phi c ci t sn JDK (Java Development Kit)
My tnh phi c sn phn mm son tho h tr cho lp trnh hng i tng dng ngn ng
lp trnh Java (Eclipse/JCreator/NetBeans)
Tn tp tin .java phi cng tn vi tn lp.

Bi 1. Cng ty du lch V qun l thng tin l cc chuyn xe. Thng tin ca 2 loi chuyn xe:

Chuyn xe ni thnh: M s chuyn, H tn ti x, s xe, s tuyn, s km i c, doanh thu.


Chuyn xe ngoi thnh: M s chuyn, H tn ti x, s xe, ni n, s ngy i c, doanh thu.
Thc hin cc yu cu sau:
Xy dng cc lp vi chc nng tha k.
Vit chng trnh qun l cc chuyn xe theo dng cy tha k vi cc phng thc sau:
- Nhp, xut danh sch cc chuyn xe (danh sch c th dng cu trc mng).
- Tnh tng doanh thu cho tng loi xe.
Hng dn:
B1. Xy dng lp Chuyn xe bao gm cc thuc tnh chung cho c chuyn xe ngoi thnh v chuyn
xe ni thnh: m chuyn xe, tn ti x, s xe, doanh thu.
import java.util.Scanner;

public class ChuyenXe


{
protected String Macx, NameTX, SoX;
protected double DoanhThu;
Scanner in = new Scanner(System.in);

protected void setMacx(String macx) {


Macx = macx;
}

protected String getMacx() {


return Macx;
}

Bi tp Mn: Lp trnh hng i tng - Trang 34


protected void setNameTX(String nameTX) {
NameTX = nameTX;
}

protected String getNameTX() {


return NameTX;
}

protected void setSoX(String soX) {


SoX = soX;
}

protected String getSoX() {


return SoX;
}

protected void setDoanhThu(double doanhThu) {


DoanhThu = doanhThu;
}

protected double getDoanhThu() {


return DoanhThu;
}

protected ChuyenXe()
{
this.Macx="";
this.NameTX="";
this.SoX="";
this.DoanhThu=0;
}

protected ChuyenXe(String ma, String name, String sx, double dt)


{
this.Macx=ma;
this.NameTX=name;
this.SoX=sx;
this.DoanhThu=dt;
}

protected void nhap()


{
System.out.println("Nhap MaSo Chuyen: ");
this.Macx=in.nextLine();
System.out.println("Ho Ten Tai Xe: ");
this.NameTX=in.nextLine();
System.out.println("So Xe: ");
this.SoX=in.nextLine();
System.out.println("Doanh Thu: ");
this.DoanhThu=in.nextDouble();
}

public String toString()


{
Bi tp Mn: Lp trnh hng i tng - Trang 35
return "\nMS chuyen: " + this.Macx + "\nName Tai Xe: " + this.NameTX
+ "\nSo Xe: " + this.SoX;
}
}

B2. Xy dng lp Chuyn xe Ngoi thnh tha k lp Chuyn xe bao gm thuc tnh: ni n, s
ngy.
import java.util.Scanner;
class NgoaiThanh extends ChuyenXe
{
private String NoiDen;
private int SoNgay;
Scanner in = new Scanner(System.in);

public void setNoiDen(String noiDen) {


NoiDen = noiDen;
}
public String getNoiDen() {
return NoiDen;
}
public void setSoNgay(int soNgay) {
SoNgay = soNgay;
}
public int getSoNgay() {
return SoNgay;
}

public NgoaiThanh()
{
super();
this.SoNgay=0;
this.NoiDen="";
}

public NgoaiThanh(String ma, String name, String sx, double dt, String nd,
int sn)
{
super(ma, name, sx, dt);
this.SoNgay=sn;
this.NoiDen=nd;
}

public void nhap()


{
super.nhap();
System.out.println("Noi Den: ");
this.NoiDen=in.nextLine();
System.out.println("So Ngay: ");
this.SoNgay=in.nextInt();
}

public String toString()

Bi tp Mn: Lp trnh hng i tng - Trang 36


{
return "Chuyen Xe Ngoai Thanh" + super.toString()
+ "\nNoi Den: " + this.NoiDen + "\nSo Ngay: " + this.SoNgay
+ "\nDoanh Thu: " + this.DoanhThu;
}
}

B3. Xy dng lp Chuyn xe Ni thnh tha k lp Chuyn xe bao gm thuc tnh: s km, s tuyn.
import java.util.Scanner;
class NoiThanh extends ChuyenXe
{
private double SoKm;
private String SoTuyen;
Scanner in = new Scanner(System.in);

public NoiThanh()
{
super();
this.SoTuyen="";
this.SoKm=0;
}

public NoiThanh(String ma, String name, String sx, double dt, String st,
double skm)
{
super(ma, name, sx, dt);
this.SoTuyen=st;
this.SoKm=skm;
}

public void setSoKm(double soKm) {


SoKm = soKm;
}

public double getSoKm() {


return SoKm;
}

public void setSoTuyen(String soTuyen) {


SoTuyen = soTuyen;
}

public String getSoTuyen() {


return SoTuyen;
}

public void nhap()


{
super.nhap();
System.out.println("Nhap So Tuyen: ");
this.SoTuyen=in.nextLine();
System.out.println("So Km: ");
this.SoKm=in.nextDouble();
Bi tp Mn: Lp trnh hng i tng - Trang 37
}

public String toString()


{
return "Chuyen Xe Noi Thanh " + super.toString()
+ "\n So Tuyen: " + this.SoTuyen + "\nSo Km: " + this.SoKm
+ "\nDoanh Thu: " + this.DoanhThu;
}
}

B4: Xy dng lp qun l danh sch cc chuyn xe (dng cu trc mng)


public class ListChuyenXe
{
private ChuyenXe[] CX = new ChuyenXe[100];
private int countCX;
private double sum1=0, sum2=0;

public void ListCX()


{
countCX=0;
for(int i=0; i<100; i++)
{
CX[i] = new ChuyenXe();
}
}

public void listcx(int temp)


{
if(countCX>100)
System.out.println("Khong the them du lieu!");
else
{
if(temp==1)
{
CX[countCX] = new NoiThanh();
NoiThanh noit = new NoiThanh();
noit.nhap();
CX[countCX]=noit;
sum1+=noit.getDoanhThu();
}
else
{
CX[countCX] = new NgoaiThanh();
NgoaiThanh ngoait = new NgoaiThanh();
ngoait.nhap();
CX[countCX]=ngoait;
sum2+=ngoait.getDoanhThu();
}
countCX++;
}
}

public void xuattt()


Bi tp Mn: Lp trnh hng i tng - Trang 38
{
for(int i=0 ; i<countCX; i++)
{
System.out.println("------------/---------------/------------");
System.out.println(CX[i].toString());
}
System.out.println("----------------Doanh Thu-----------------");
System.out.println("| Chuyen Xe Noi Thanh: " + sum1 + "|");
System.out.println("| Chuyen Xe Ngoai Thanh: " + sum2 + "|");
System.out.println("------------------------------------------");
}

B5. Xy dng lp qun l thng tin cho php nhp xut v tnh doanh thu cho tng xe.
import java.util.Scanner;
public class QLChuyenXe
{
public static void main(String[] args)
{
int x;
Scanner a = new Scanner(System.in);

ListChuyenXe dscx = new ListChuyenXe();


do
{
System.out.println("\n\t-----------------------------------");
System.out.println("\t0. Exit");
System.out.println("\t1. Them Chuyen Xe Noi Thanh");
System.out.println("\t2. Them Chuyen Xe Ngoai Thanh");
System.out.println("\t3. Hien thi danh muc Chuyen Xe");
System.out.println("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
x = a.nextInt();
System.out.println("------>>");
switch(x)
{
case 1:
dscx.listcx(1);
break;
case 2:
dscx.listcx(2);
break;
case 3:
dscx.xuattt();
break;
}
} while(x!=0);
System.out.println("");
}
}

Bi tp Mn: Lp trnh hng i tng - Trang 39


Bi 2. Th vin X qun l danh sch cc loi sch . Thng tin v cc loi sch:

Sch gio khoa: M sch, ngy nhp (ngy, thng, nm), n gi, s lng, nh xut bn, tnh
trng (mi, c).
Nu tnh trng sch l mi th: thnh tin = s lng * n gi.
Nu tnh trng sch l c th: thnh tin = s lng * n gi * 50%
Sch tham kho: M sch, ngy nhp (ngy, thng, nm), n gi, s lng, nh xut bn, thu.
Thnh tin = s lng * n gi +thu
Thc hin cc yu cu sau:
Xy dng cc lp vi chc nng tha k.
Nhp xut danh sch cc loi sch.
Tnh tng thnh tin cho tng loi.
Tnh trung bnh cng n gi ca cc sch tham kho.
Xut ra cc sch gio khoa ca nh xut bn X.

Bi 3. Xy dng chng trnh qun l danh sch cc giao dch. H thng qun l 2 loi giao dch:

Giao dch vng: M giao dch, ngy giao dch (ngy, thng, nm), n gi, s lng, loi vng.
Thnh tin c tnh nh sau:
thnh tin = s lng * n gi.
Giao dch tin t: M giao dch, ngy giao dch (ngy, thng, nm), n gi, s lng, t gi,
loi tin t c 3 loi: tin Vit Nam, tin USD, tin Euro. Thnh tin c tnh nh sau:
- Nu l tin USD hoc Euro th: thnh tin = s lng * n gi* t gi
- Nu l tin VN th: thnh tin = s lng * n gi
Thc hin cc yu cu sau:
Xy dng cc lp vi chc nng tha k.
Nhp xut danh sch cc giao dch.
Tnh tng s lng cho tng loi.
Tnh trung bnh thnh tin ca giao dch tin t.
Xut ra cc giao dch c n gi > 1 t.
Hng dn:
B1. Xy dng lp Giao dch bao gm cc thuc tnh chung cho c giao dch vng v giao dch ngoi t:
m giao dch, s lng, ngy giao dch, n gi, thnh tin.
import java.util.Scanner;

public class GiaoDich


{
protected int MaGD, SoLuong;
Bi tp Mn: Lp trnh hng i tng - Trang 40
protected String NgayGD;
protected double DonGia, ThanhTien;
Scanner in = new Scanner(System.in);

protected GiaoDich()
{
this.MaGD=0;
this.NgayGD="";
this.DonGia=0;
this.SoLuong=0;
this.ThanhTien=0;
}

protected GiaoDich(int ma, int sl, String ngay, double dgia, double ttien)
{
this.MaGD=ma;
this.NgayGD=ngay;
this.DonGia=dgia;
this.SoLuong=sl;
this.ThanhTien=ttien;
}

protected int getMaGD() {


return MaGD;
}
protected void setMaGD(int maGD) {
MaGD = maGD;
}
protected int getSoLuong() {
return SoLuong;
}
protected void setSoLuong(int soLuong) {
SoLuong = soLuong;
}
protected String getNgayGD() {
return NgayGD;
}
protected void setNgayGD(String ngayGD) {
NgayGD = ngayGD;
}
protected double getDonGia() {
return DonGia;
}
protected void setDonGia(double donGia) {
DonGia = donGia;
}
protected double getThanhTien() {
return ThanhTien;
}

protected void setThanhTien(double thanhTien) {


ThanhTien = thanhTien;
}

protected void nhap()


Bi tp Mn: Lp trnh hng i tng - Trang 41
{
System.out.println("Ma Giao Dich: ");
MaGD = in.nextInt();
System.out.println("Ngay Giao Dich: ");
NgayGD = in.next();
System.out.println("Don Gia: ");
DonGia = in.nextDouble();
System.out.println("So Luong: ");
SoLuong = in.nextInt();
}

public String toString()


{
return " [MaGD=" + MaGD + ", SoLuong=" + SoLuong + ", NgayGD="
+ NgayGD + ", DonGia=" + DonGia;
}
}

B2. Xy dng lp Giao dch vng tha k lp Giao dch bao gm thuc tnh: loi vng.
class GiaoDichVang extends GiaoDich
{
private String LoaiVang;

public GiaoDichVang()
{
super();
this.LoaiVang="";
}

public GiaoDichVang(int ma, int sl, String ngay, double dgia, double ttien,
String lvang)
{
super(ma, sl, ngay, dgia, ttien);
this.LoaiVang=lvang;
}

public String getLoaiVang() {


return LoaiVang;
}

public void setLoaiVang(String loaiVang) {


LoaiVang = loaiVang;
}

public void nhap()


{
super.nhap();
System.out.println("Loai Vang: ");
LoaiVang = in.next();
}

public double TTien()


{
Bi tp Mn: Lp trnh hng i tng - Trang 42
return this.ThanhTien=this.DonGia*this.SoLuong;
}

public String toString()


{
return "Giao Dich Vang: " + super.toString() + ", LoaiVang: " +
LoaiVang
+ ", ThanhTien: " + ThanhTien + "]";
}
}

B3. Xy dng lp Ngoi t tha k lp Giao dch bao gm thuc tnh: t gi v loi tin t (USD,
Euro, Vit Nam).
class GiaoDichTienTe extends GiaoDich
{
private float TiGia;
private int LoaiTienTe;

public GiaoDichTienTe()
{
super();
this.TiGia=0;
this.LoaiTienTe=0;
}

public GiaoDichTienTe(int ma, int sl, String ngay, double dgia, double
ttien, float tgia, int loai)
{
super(ma, sl, ngay, dgia, ttien);
this.TiGia=tgia;
this.LoaiTienTe=loai;
}

public float getTiGia() {


return TiGia;
}
public void setTiGia(float tiGia) {
TiGia = tiGia;
}
public int getLoaiTienTe() {
return LoaiTienTe;
}
public void setLoaiTienTe(int loaiTienTe) {
LoaiTienTe = loaiTienTe;
}

public void nhap()


{
super.nhap();
System.out.println("Ti Gia: ");
TiGia=in.nextFloat();
System.out.println("Loai Tien Te: ");

Bi tp Mn: Lp trnh hng i tng - Trang 43


LoaiTienTe=in.nextInt();
}

public double TTien()


{
if(LoaiTienTe==1)
return this.ThanhTien=this.DonGia*this.SoLuong;
else
return this.ThanhTien=this.DonGia*this.SoLuong*this.TiGia;
}

public String toString()


{
String temp;
if(LoaiTienTe==1)
temp="VND";
else if(LoaiTienTe==2)
temp="USD";
else
temp="EURO";
return "Giao Dich Tien Te: " + super.toString() + "' Ti Gia: " + TiGia
+ ", Loai Tien Te: " + temp + ", ThanhTien: " + ThanhTien +
"]";
}
}

B4: Xy dng lp qun l danh sch cc giao dch (dng cu trc mng)
public class ListGD
{
GiaoDich gd[] = new GiaoDich[100];
private int CountGD, sum1=0, sum2=0, dem=0, sumtien=0;
public ListGD()
{
CountGD=0;
for(int i=0; i<100; i++)
gd[i] = new GiaoDich();
}
public void ThemGD(int temp)
{
if(CountGD>100)
System.out.println("Bo nho full, ko the them moi!");
else
{
if(temp==1)
{
gd[CountGD] = new GiaoDichVang();
GiaoDichVang gdv = new GiaoDichVang();
gdv.nhap();
gdv.ThanhTien=gdv.TTien();
gd[CountGD] = gdv;
sum1+=gdv.SoLuong;
}
else
Bi tp Mn: Lp trnh hng i tng - Trang 44
{
gd[CountGD] = new GiaoDichTienTe();
GiaoDichTienTe gdtt = new GiaoDichTienTe();
gdtt.nhap();
gdtt.ThanhTien=gdtt.TTien();
gd[CountGD] = gdtt;
sumtien+=gdtt.ThanhTien;
sum2+=gdtt.SoLuong;
dem++;
}
CountGD++;
}
}
public void HienThiDS()
{
for(int i=0; i<CountGD; i++)
{
System.out.println("\n----So TT: " + (i+1));
System.out.println(gd[i].toString());
}
}
// Tong so luong cua giao dich
public void TongSL()
{
System.out.println("|-> Tong So Luong cua Giao Dich Vang: " + sum1 +
" <-|");
System.out.println("|-> Tong So Luong cua Giao Dich Tien Te:" + sum2
+ " <-|");
}

public void TrungBinhGDTT()


{
System.out.println("|-> Trung Binh Thanh Tien Giao Dich Tien Te: "
+ (sumtien/dem) + " <-|");
}
// xuat danh sach giao dich 1 ty
public void GiaoDich1ty()
{
int d=0;
for(int i=0; i<CountGD; i++)
{
if(gd[i].DonGia>1000)
{
System.out.println(gd[i].toString());
d++;
}
}
if(d==0)
System.out.println("Khong co Thong Tin!");
}
}
B5. Xy dng lp qun l thng tin cho giao dch.
import java.util.Scanner;

Bi tp Mn: Lp trnh hng i tng - Trang 45


public class QLGD
{
public static void main(String[] args)
{
ListGD lgd =new ListGD();
Scanner in = new Scanner(System.in);
int x;
do
{
System.out.println("\n\t\t----------------------------------");
System.out.println("\t\t|0. Thoat ung dung\t\t\t\t |");
System.out.println("\t\t|1. Them Giao Dich Vang\t\t\t\t |");
System.out.println("\t\t|2. Them Giao Dich Tien Te\t\t\t |");
System.out.println("\t\t|3. Hien Thi Danh Sach Giao Dich\t\t |");
System.out.println("\t\t|4. Xem Tong So Luong cua cac Giao Dich\t\t
|");
System.out.println("\t\t|5. Xem Trung Binh Cua Giao Dich Tien Te\t
|");
System.out.println("\t\t|6. Hien Thi Danh Sach Giao Dich co Don Gia
> 1 ngan|");
System.out.println("\t\t--------------------------------------");
x=in.nextInt();
switch(x)
{
case 1:
lgd.ThemGD(1);
break;
case 2:
lgd.ThemGD(2);
break;
case 3:
lgd.HienThiDS();
break;
case 4:
lgd.TongSL();
break;
case 5:
lgd.TrungBinhGDTT();
break;
case 6:
lgd.GiaoDich1ty();
break;
}
}while(x!=0);
System.out.println("");
}
}

Bi tp Mn: Lp trnh hng i tng - Trang 46


Bi 4. Xy dng chng trnh qun l danh sch cc giao dch nh t. Thng tin bao gm:

Giao dch t: M giao dch, ngy giao dch (ngy, thng, nm), n gi, loi t (loi A, B, C),
din tch.
- Nu l loi B, C th: thnh tin = din tch * n gi.
- Nu l loi A th: thnh tin = din tch * n gi * 1.5
Giao dch nh: M giao dch, ngy giao dch (ngy, thng, nm), n gi, loi nh (cao cp,
thng), a ch, din tch.
- Nu l loi nh cao cp th: thnh tin = din tch * n gi.
- Nu l loi thng th: thnh tin = din tch * n gi * 90%
Thc hin cc yu cu sau:
Xy dng cc lp vi chc nng tha k.
Nhp xut danh sch cc giao dch.
Tnh tng s lng cho tng loi.
Tnh trung bnh thnh tin ca giao dch t.
Xut ra cc giao dch ca thng 9 nm 2013.

Bi 5. Xy dng chng trnh qun l danh sch ho n tin in ca khch hng. Thng tin bao
gm cc loi khch hng :

Khch hng Vit Nam: m khch hng, h tn, ngy ra ho n (ngy, thng, nm), i tng
khch hng (sinh hot, kinh doanh, sn xut): s lng (s KW tiu th), n gi, nh mc.
Thnh tin c tnh nh sau:
- Nu s lng <= nh mc th: thnh tin = s lng * n gi.
- Ngc li th: thnh tin = s lng * n gi * nh mc + s lng KW vt nh mc *
n gi * 2.5.
Khch hng nc ngoi: m khch hng, h tn, ngy ra ho n (ngy, thng, nm), quc tch,
s lng, n gi. Thnh tin c tnh = s lng * n gi.
Thc hin cc yu cu sau:
Xy dng cc lp vi chc nng tha k.
Nhp xut danh sch cc ha n khch hng.
Tnh tng s lng cho tng loi khch hng.
Tnh trung bnh thnh tin ca khch hng ngi nc ngoi.
Xut ra cc ho n trong thng 09 nm 2013 (ca c 2 loi khch hng).

Bi tp Mn: Lp trnh hng i tng - Trang 47


Hng dn:
B1. Xy dng lp Khch hng bao gm cc thuc tnh chung cho c Khch hng nc ngoi v Khch
hng Vit Nam. Gm cc thuc tnh: m khch hng, s lng, n gi, thnh tin, ngy ca ha n
v h tn khch hng.
import java.util.Scanner;

public class KhachHang


{
protected int MaKH, SoLuong;
protected double DonGia, ThanhTien;
protected String NgayHD, HoTenKH;
Scanner in =new Scanner(System.in);

protected KhachHang()
{
this.MaKH=0;
this.DonGia=0;
this.NgayHD="";
this.HoTenKH="";
this.SoLuong=0;
}

protected KhachHang(int ma, double dgia, String ngay, String hoten, int sl,
double ttien)
{
this.MaKH=ma;
this.DonGia=dgia;
this.NgayHD=ngay;
this.HoTenKH=hoten;
this.SoLuong=sl;
this.ThanhTien=ttien;
}

protected int getMaKH() {


return MaKH;
}
protected void setMaKH(int maKH) {
MaKH = maKH;
}
protected double getDonGia() {
return DonGia;
}
protected void setDonGia(double donGia) {
DonGia = donGia;
}
protected String getNgayHD() {
return NgayHD;
}
protected void setNgayHD(String ngayHD) {
NgayHD = ngayHD;
}
Bi tp Mn: Lp trnh hng i tng - Trang 48
protected String getHoTenKH() {
return HoTenKH;
}

protected void setHoTenKH(String hoTenKH) {


HoTenKH = hoTenKH;
}
protected int getSoLuong() {
return SoLuong;
}

protected void setSoLuong(int sl) {


SoLuong = sl;
}
protected double getThanhTien() {
return ThanhTien;
}

protected void setThanhTien(double thanhTien) {


ThanhTien = thanhTien;
}

protected void nhap()


{
System.out.println("Nhap Ma Khach Hang: ");
MaKH = in.nextInt();
System.out.println("Ho va Ten Khach Hang: ");
HoTenKH = in.next();
System.out.println("Ngay Lap Hoa Don: ");
NgayHD = in.next();
System.out.println("So Luong(KW): ");
SoLuong = in.nextInt();
System.out.println("Don Gia: ");
DonGia = in.nextDouble();
}

public String toString() {


return "[MaKH: " + MaKH + ", HoTenKH: " + HoTenKH + ", NgayHD: " +
NgayHD
+ ", DonGia: " + DonGia + ", SoLuong: " +SoLuong;
}
}

B2. Xy dng lp Khch hng nc ngoi tha k lp Khch hng bao gm thuc tnh: quc tch.
class KhachHangNuocNgoai extends KhachHang
{
private String QuocTich;

public KhachHangNuocNgoai()
{
super();
this.QuocTich="";
}
Bi tp Mn: Lp trnh hng i tng - Trang 49
public KhachHangNuocNgoai(int ma, double dgia, String ngay, String hoten,
int sl, double ttien, String qt)
{
super(ma, dgia, ngay, hoten, sl, ttien);
this.QuocTich=qt;
}

public String getQuocTich() {


return QuocTich;
}

public void setQuocTich(String quocTich) {


QuocTich = quocTich;
}

public void nhap()


{
super.nhap();
System.out.println("Quoc Tich: ");
QuocTich = in.next();
}

public double TTien()


{
return this.ThanhTien = this.SoLuong*this.DonGia;
}

public String toString()


{
return "Khach Hang Nuoc Ngoai: " + super.toString() + ", QuocTich: " +
QuocTich
+ ", ThanhTien: " + ThanhTien;
}
}

B3. Xy dng lp Khch hng Vit Nam tha k lp Khch hng bao gm thuc tnh: loi khch hng,
nh mc.
class KhachHangViet extends KhachHang
{
private int LoaiKH, DinhMuc;

public KhachHangViet()
{
super();
this.LoaiKH=0;
this.DinhMuc=0;
}

public KhachHangViet(int ma, double dgia, String ngay, String hoten, int sl,
double ttien, int loai, int dm)
{
super(ma, dgia, ngay, hoten, sl, ttien);

Bi tp Mn: Lp trnh hng i tng - Trang 50


this.LoaiKH = loai;
this.DinhMuc = dm;
}
public int getLoaiKH() {
return LoaiKH;
}
public void setLoaiKH(int loaiKH) {
LoaiKH = loaiKH;
}

public int getDinhMuc() {


return DinhMuc;
}

public void setDinhMuc(int dinhMuc) {


DinhMuc = dinhMuc;
}

public void nhap()


{
super.nhap();
System.out.println("Loai Khach Hang (1=SinhHoat, 2=KinhDoanh,
3=SanXuat)");
LoaiKH = in.nextInt();
System.out.println("Dinh Muc: ");
DinhMuc = in.nextInt();
}

public double TTien()


{
if(SoLuong<=DinhMuc)
return this.ThanhTien=this.DonGia*this.SoLuong;
else
return this.ThanhTien=this.DinhMuc*this.DonGia + (this.SoLuong-
this.DinhMuc)*this.DonGia*2.5;
}

public String toString()


{
String temp;
if(LoaiKH==1)
temp="Sinh Hoat";
else if(LoaiKH==2)
temp="Kinh Doanh";
else
temp="San Xuat";
return "Khach Hang Viet: " + super.toString() + ", LoaiKH: " + temp
+ ", Dinh Muc: " + DinhMuc + ", Thanh Tien: " + ThanhTien;
}
}
B4: Xy dng lp qun l danh sch cc khch hng (dng cu trc mng)
public class KhachHangList
{

Bi tp Mn: Lp trnh hng i tng - Trang 51


private KhachHang kh[] = new KhachHang[100];
private int CountKH, sum1=0, sum2=0, dem=0, sumtien=0;

public KhachHangList()
{
CountKH=0;
for(int i=0; i<100; i++)
kh[i] = new KhachHang();
}

public void ThemKH(int temp)


{
if(CountKH>100)
System.out.println("Bo Nho Da Day, ko the them!");
else
{
if(temp==1)
{
kh[CountKH] = new KhachHangViet();
KhachHangViet khv = new KhachHangViet();
khv.nhap();
khv.ThanhTien = khv.TTien();
kh[CountKH]=khv;
sum1+=khv.SoLuong;
}
else
{
kh[CountKH] = new KhachHangNuocNgoai();
KhachHangNuocNgoai khnn = new KhachHangNuocNgoai();
khnn.nhap();
khnn.ThanhTien = khnn.TTien();
kh[CountKH] = khnn;
sum2 += khnn.SoLuong;
sumtien += khnn.ThanhTien;
dem++;
}
CountKH++;
}
}

public void HienThiKH()


{
for(int i=0; i<CountKH; i++)
{
System.out.println("\nSo TT: " + (i+1));
System.out.println(kh[i].toString());
}
}

public void TongSL()


{
System.out.println(":::->> Tong So Luong(KW) Dien cua KH Viet Nam: " +
sum1);
System.out.println(":::->> Tong So Luong(KW) Dien cua KH Nuoc Ngoai: "
+ sum2);
Bi tp Mn: Lp trnh hng i tng - Trang 52
}

public void TrungBinh()


{
System.out.println("|-->> Trung Binh Thanh Tien cua KH Nuoc Ngoai: " +
(sumtien/dem));
}
}
B5. Xy dng lp qun l thng tin cho php nhp xut v tnh trung bnh thnh tin.
import java.util.Scanner;
public class KhachHang_CTQuanLy
{
public static void main(String[] args)
{
KhachHangList lkh = new KhachHangList();
Scanner in = new Scanner(System.in);
int x;

do
{
System.out.println("\n\t\t------------------------------------");
System.out.println("\t\t|0. Thoat ung dung\t\t\t\t |");
System.out.println("\t\t|1. Them Khach Hang Viet\t\t\t |");
System.out.println("\t\t|2. Them Khach Hang Nuoc Ngoai\t\t\t |");
System.out.println("\t\t|3. Hien Thi Danh Sach Khach Hang\t\t |");
System.out.println("\t\t|4. Xem Tong (KW)cua cac KH\t\t |");
System.out.println("\t\t|5. Xem TB Thanh Tien cua KH NN\t |");
System.out.println("\t\t--------------------------------------");
x=in.nextInt();
System.out.println("======>>");
switch(x)
{
case 1:
lkh.ThemKH(1);
break;
case 2:
lkh.ThemKH(2);
break;
case 3:
lkh.HienThiKH();
break;
case 4:
lkh.TongSL();
break;
case 5:
lkh.TrungBinh();
break;
}
}while(x!=0);
System.out.println("");
}
}

Bi tp Mn: Lp trnh hng i tng - Trang 53


Bi 6. Mt khch sn X cn qun l cc ha n ca khch hng thu phng. Ha n c 2 loi: ha
n theo gi, ha n theo ngy . Thng tin chung ca chi tit ha n l: M ha n, ngy ha
n (ngy, thng, nm), Tn khch hng, m phng, n gi. Thng tin ring ca tng loi ha n
gm:

Ha n theo gi cn c s gi thu. Thnh tin = s gi thu * n gi. Nu trng hp s gi


> 24 ting v < 30 ting th cng ch tnh 24 gi. Nu trng hp s gi l > 30 ting th khng
dng loi ha n theo gi.
Ha n theo ngy s c s ngy thu. Thnh tin = s ngy thu * n gi. Nu s ngy >7 th
gim 20% n gi cho nhng ngy cn li.
Thc hin cc yu cu sau:
Xy dng cc lp vi chc nng tha k.
Nhp xut danh sch cc ha n thu phng.
Tnh tng s lng cho tng loi thu phng.
Tnh trung bnh thnh tin ca ha n thu phng trong thng 9/2013.

Bi 7. (Yu cu chung: c nh access modifier (private, protected, public) cho tng thuc tnh/
phng thc mi lp, ci t getter/setter, ci t constructor mc nh v constructor c thng s
y ).
Gi s cn xy dng chng trnh qun l dng cho mt hc vin nghin cu ging dy v ng dng.
i tng qun l bao gm cc sinh vin ang theo hc, cc nhn vin ang lm vic ti hc vin, cc
khch hng n giao dch mua bn sn phm ng dng. Da vo mt s t tnh ca tng i tng,
ngi qun l cn a ra cch thc nh gi khc nhau.
Vy hy xy dng cc lp sau:
- Lp Person: bao gm cc thuc tnh h tn, a ch, phng thc toString.
- Cc lp Student, Employee, Customer (m t di y) tha k lp Person.
o Lp Student: bao gm cc thuc tnh im mn hc 1, im mn hc 2, v cc phng
thc: tnh im TB, nh gi, overriding phng thc toString tr v bng im sinh vin
(gm thng tin thuc tnh v im TB).

Bi tp Mn: Lp trnh hng i tng - Trang 54


o Lp Employee: bao gm thuc tnh heSoLng, v cc phng thc: tnh lng, nh gi,
overriding phng thc toString tr v bng lng cho nhn vin (gm thng tin thuc tnh
i tng v tin lng).
o Lp Customer: bao gm thuc tnh tn cng ty, tr gi ha n, nh gi, v phng thc
toString tr v thng tin ha n cho khch hng (gm cc thuc tnh ca i tng).
- Lp c 1 bin danh sch lu cc sinh vin, nhn vin, khch hng (dng 1 bin array
Person), bin lu tng s ngi c trong danh sch, constructor mc nh khi to array vi dung
lng cho trc, phng thc thm mt ngi vo danh sch (thng s Person), xa 1 ngi khi
danh sch (nhn thng s l h tn ca ngi cn xa), sp xp danh sch theo th t h tn,
phng thc xut danh sch. Khi danh sch y th t ng tng dung lng dy ln 50%.
- Vit lp vi phng thc main cho phn kim nghim. Giao tip vi ngi dng bng menu (th
hin tnh a hnh polymorphism bng cch cho php la chn nhp thng tin l sinh vin, nhn
vin hay khch hng).

Bi 8. Hng ha qun l trong kho ca mt siu th gm c hng thc phm, hng snh s v hng
in my.
Mi loi hng u c m hng (khng c sa, khng c trng), tn hng (khng c rng), s
lng tn (>=0), n gi (>0).
Hng thc phm th cn quan tm n thng tin ngy sn xut, ngy ht hn (ngy ht hn phi sau
hoc l ngy sn xut) v nh cung cp.
Hng in my cn bit thi gian bo hnh bao nhiu thng (>=0), cng sut bao nhiu KW (>0).
Hng snh s th cn bit thng tin v nh sn xut v ngy nhp kho.
Ngoi ra, ngi qun l cn quan tm n s lng tn kho v cc yu t khc ca tng loi hng ha
nh gi mc bn bun, tin VAT tng loi hng ha. Bit rng VAT ca hng in my v snh
s l 10%, VAT ca hng thc phm l 5%.
a) Da vo cc thng tin trn, hy xc nh:
- Cc lp c th c. Lp no l lp tru tng (abstract class), lp no l lp c th .
- Cc thuc tnh cho tng lp.
- Cc phng thc cho tng lp (phng thc no l phng thc tru tng (abstract method),
danh sch cc tham s c th c cho tng phng thc v kiu tr v ca phng thc).
- Thit k m hnh class (xy dng cy tha k, cc giao din nu c).
Bi tp Mn: Lp trnh hng i tng - Trang 55
b) Dng java IDE, to mt project. Thc hin ci t tng minh cho mi loi hng c th trn. Trong
, nh gi mc bn bun th:
o Hng in my, nu s lng tn kho <3 th c nh gi l bn c.
o Hng thc phm, nu vn cn tn kho v b ht hn th nh gi l kh bn.
o Hng snh s, nu s lng tn kho >50 v thi gian lu kho >10 ngy th nh gi l bn
chm.
o Cc trng hp cn li xem nh khng nh gi.
- Hy vit lp qun l danh sch hng ha. Dng Array lu tr danh sch hng ha.
o To constructor khi to danh sch.
o Vit phng thc thm mt hng ha vo danh sch (thm thnh cng nu khng b trng
m hng, th hin tnh a hnh polymorphism bng cch cho php la chn nhp thng
tin)
o Vit phng thc in ton b danh sch cc hng ha.
- To lp cho phn th nghim, vi menu la chn thc hin cc chc nng theo yu cu.
-
Bi 9. Vi 1 tp mini cc loi xe trong th gii thc cho bn di:

Yu cu qun l:
- Thng tin tng loi xe.
- Tnh tin thu cho tng chic xe da trn gi tr xe nh sau:
o Xe p: Khng ng thu.
o Xe my: VAT=10% v thu trc b 5%.
o Xe t khch: Thu tiu th c bit 30% (s ch >=5); 50% (s ch<5), thu VAT=10%,
thu trc b 20%.

Bi tp Mn: Lp trnh hng i tng - Trang 56


o Xe t ti: VAT=10%, thu trc b 2%.
Yu cu sinh vin:
- Dng kin thc m hnh ha d liu trong lp trnh hng i tng xy dng cc lp.
- S dng 1 CASE tool (Computer Aided Software Engineering) thit k m hnh cy phn cp
cc lp. Mi quan h gia cc lp v cc interface.
- Generate source code t m hnh trn sang ngn ng lp trnh Java.
- Hin thc tng minh chng trnh.

Bi 10. Lp Th g ti co gi: bao gm cc thuc tnh tn, a ch v cc phng thc nhp


tn, nhp a ch.

Cc lp Sinh vin, Nhn vin, Khch hng (m t di y) tha k lp Th g ti co gi.


Lp Sinh vin: bao gm cc thuc tnh im mn hc 1, im mn hc 2, v cc phng thc
nhp im, tnh tng im, phng thc thay i thng tin ca sinh vin truyn vo tham s l
sinh vin (truyn tham bin ) , phng thc cho php la chn cch thay i 0: thay i im
mn 1, -1 thay i im mn 2, im cc mn c nhp t bn phm.
Lp Nhn vin: bao gm cc thuc tnh lng, chc v, v cc phng thc nhp chc v, tnh
lng, phng thc thay i thng tin ca nhn vin truyn vo tham s l nhn vin, phng
thc cho php la chn cch thay i 0: thay i lng, -1 thay i chc v, cc thng tin c
nhp t bn phm.
Lp Khch hng: bao gm cc thuc tnh kiu xe bn, v cc phng thc nhp kiu xe, xut
ha n.
Hy nh ngha cc lp trn v lp Hin th thng tin. Lp Hin th thng tin cho php khai bo
i tng thuc lp Th g ti co gi, th hin tnh a hnh (polymorphism) bng cch cho
php la chn nhp thng tin l sinh vin, nhn vin hay khch hng.

Bi 11. qun l thng tin v sinh vin ca trng HCN, thng tin v sinh vin c t chc
nh sau:

Sinh vin trung cp (trung cp 2 nm)


Sinh vin cao ng
Sinh vin i hc
Sinh vin lin kt (Austraulia, US)
a. Xc nh cc thng tin, d liu chung, ring.

Bi tp Mn: Lp trnh hng i tng - Trang 57


b. nh ngha cc lp (cc thuc tnh, v phng thc) v m hnh phn cp cc lp
c. Vit lp cho php nhp v hin th thng tin v sinh vin.

Bi 12. To lp tru tng (abstract class) Shape vi 3 phng thc tru tng draw() , erase(
), and move(int x, int y ). To cc lp con nh lit k bng di y ng thi ghi (overriding)
cc phng thc tru tng, cc phng thc ny in cu thng bo ra console.

Class Superclass Subclass


Shape - Circle, Quad, Triangle, Polygon
Circle Shape -
Quad Shape Rectangle
Rectangle Quad -
Triangle Shape -
Polygon Shape -

Vit lp Drawing c phng thc drawShape(Shape theShape), phng thc c tham s l i


tng Shape. Trong phng thc gi ti draw() ca tng i tng Shape.

Bi 13. Cho m hnh nh sau

Bi tp Mn: Lp trnh hng i tng - Trang 58


a. S dng m hnh lp trn cho cy phn cp ca cc i tng Account, hy to cc
phng thc thi hnh phn thit k ny. Cung cp cc on m lnh thc thi cc
phng thc.
b. Vit chng trnh kim tra trong lp BankingServices, to cc i tng thuc cc lp c th
v kim tra cc phng thc.

Bi tp Mn: Lp trnh hng i tng - Trang 59


Tun 5.
Tun 6. TP HP (COLLECTIONS) V MNG

Chng 5. Tp hp v mng trn Java


Mc tiu:
Hiu v p dng c cch thao tc trn mng
Hiu v p dng c cch thao tc trn tp hp
- Khai bo v khi to tp hp
- Cc thao tc thm, xa, sa, duyt trn tp hp
- Cc thut ton sp xp, tm kim trn tp hp
Yu cu:
Tt c cc bi tp lu trong th mc: D:\MaSV_HoTen\Tuan05-06\
My tnh phi c ci t sn JDK (Java Development Kit)
My tnh phi c sn phn mm son tho h tr cho lp trnh hng i tng dng ngn ng
lp trnh Java (Eclipse/JCreator/NetBeans)
Tn tp tin .java phi cng tn vi tn lp.

Bi 1. Cng ty TrueLove:
a) Cng ty TrueLove cn lu tn ca cc nhn vin ca mnh. Mi thng mt nhn vin s c chn
ngu nhin nhn mt qu tng. Hy dng tuyn tp vit chng trnh qun l danh sch nhn
vin.
b) Cng ty TrueLove cn t tn cho sn phm mi, tn sn phm c chn t tn ca nhn vin, v
vy tn khng c trng, tn ch c dng c 1 ln. Hy dng tuyn tp vit chng trnh
cung cp tn cho sn phm.
c) Cng ty TrueLove mun dng tn ph bin nht cho sn phm ca h, tn ph bin l tn ging
nhau nhiu nht. Hy dng tuyn tp vit chng trnh cung cp tn cho sn phm.
d) Cng ty TrueLove mun cho nhn vin i du lch, chnh sch c to ra l u tin cho nhng
ngi ng k trc. Hy dng tuyn tp vit chng trnh ng k du lch.
e) Cng ty TrueLove mun to danh sch cc khch hng theo th t tng dn theo doanh s. Hy
dng tuyn tp vit chng trnh qun l danh sch khch hng.

Bi 2. Phng hc c qun l trong mt trng i hc gm: phng hc l thuyt, phng my tnh v


phng th nghim .
Bi tp Mn: Lp trnh hng i tng - Trang 60
Mi phng hc u c m phng, dy nh, din tch, s bng n.
Phng hc l thuyt th cn quan tm xem c my chiu khng.
Phng my tnh th cn bit l trang b bao nhiu my tnh.
Phng th nghim th thm thng tin chuyn ngnh, sc cha, c bn ra khng (ra dng c th
nghim / ra tay).
Ngoi ra, ngi qun l cn phi xem xt phng hc c t chun khng.
Dng java IDE, to mt project c t tn theo quy nh sau: TnLp_TnSV_MSSV.
- Thc hin ci t tng minh cho mi loi phng c th trn.
- Phng hc t chun nu: Tt c cc phng u phi nh sng (trung bnh 10m2 - 1 bng n),
v
o Phng l thuyt, nu c my chiu.
o Phng my tnh, nu trung bnh 1.5m2 t mt my.
o Phng th nghim, nu c bn ra i km.
- Hy vit lp qun l danh sch phng hc. Dng mt List (ArrayList, LinkedList, Vector) lu
tr danh sch phng hc.
o To constructor khi to danh sch.
o Vit phng thc thm mt phng hc vo danh sch (thm thnh cng nu khng b trng
m phng).
o Vit phng thc tm kim mt phng hc no khi bit m phng.
o Vit phng thc in ton b danh sch cc phng hc.
o Vit cc phng thc in danh sch cc phng hc t chun.
o Vit phng thc sp xp danh sch tng dn theo ct dy nh.
o Vit phng thc sp xp danh sch gim dn theo ct din tch.
o Vit phng thc sp xp danh sch tng dn theo ct s bng n.
o Vit phng thc cp nht s my tnh cho mt phng my tnh no khi bit m
phng.
o Vit phng thc xa mt phng hc no khi bit m phng. Lu khi test chng
trnh, khi xa cn phi xc minh rng c chc chn xa khng?
o Vit phng thc in ra tng s phng hc.
o Vit cc phng thc in danh sch cc phng my c 60 my.
- To lp cho phn th nghim, vi menu la chn thc hin cc chc nng theo yu cu.
Bi tp Mn: Lp trnh hng i tng - Trang 61
Bi 3. Qun l khch hng xp hng mua v ti nh ga. Thng tin lu tr cho khch hng gm: s
CMND khc hng (String), Tn khch hng, Ga n, gi tin (double).
H thng menu gm cc mc:
o Thm mt khch hng mi vo hng i mua v.
o Bn mt v cho khch hng. Ch bn cho ngi ng k trc.
o Hin th danh sch khch hng.
o Hy mt khch hng ra khi danh sch. (khch hng khng mua v na).
o Thng k tnh hnh bn v
o Lu danh sch vo file
o Hin th danh sch cc ga ang ch mua v.
o Hin th danh sch cc ga ang ch mua v v s v tng ng cho ga.
Lu :
o S khch hng trong danh sch hin ti l s khch ang ch, nhng cha c v. Khi mt
khch hng mua v, th loi khch hng ny ra khi danh sch ch mua v.
o Vic mua v phi c th t: ai vo trc th mua v trc (FIFO).
o Mi khi khch hng mua c v phi lu li khch hng ny dng cho vic thng k.
o Mi khi thm mt khc hng mi, nu S CMND khch hng c th khng to phn t
mi m ch cp nht li ga v gi tin n cho khc hng .
o Mc thng k tnh hnh: cho bit cn bao nhiu khch hng ch nhn v, bao nhiu khch
hng nhn v, tng s tin thu v l bao nhiu.
o Vic lu danh sch: ch lu cc khch hng ch mua v. Cc khch hng nhn v xem
nh kt s trong ngy khng cn lu li.
o Khi chng trnh va c chy, lp tc t ng np ton b danh sch khch hng t file
(cch khch hng cha c v).
o Khi hin th danh sch cc ga n ang ch mua v, ch hin th tn ga mt ln. (V d:
gi s 10 khch hng nhng ng k i n 2 ga, th ch hin th 2 hng).

Bi 4. Vit chng trnh to 2 tp hp cc s nguyn (Set). Tnh giao, hi, hiu 2 tp trn, xut ra kt
qu tng dn.
Hng dn: - Dng TreeSet
Bi tp Mn: Lp trnh hng i tng - Trang 62
a.addAll(b) tp a hi tp b
a. retainAll(b) tp a giao tp b
a. removeAll(b) tp a tr tp b
Bi 5. S dng ArrayList biu din mt vi chc nng ca interface Collection . Chng trnh
thc hin s dng 2 mng Color trong ArrayLists v dng Iterator loi b cc phn t
trong mng th 2 ca tp hp ArrayList t mng th nht ca tp hp ArrayList.

Bi 6. Vit lp m t cc ton t trn danh sch lin kt s LinkedList. Chng trnh to 2


LinkedList cha thng tin l cc chui String. Cc phn t ca danh sch List ny c a
vo danh sch kia. Cc chui trong danh sch c chuyn sang ch hoa, xo cc phn t.

Bi 7. Vit chng trnh tra cu danh b in thoi, s dng cu trc collection bt k cho ph hp
lu tr thng tin ca danh b v d dng thc hin cng vic:
- Tra cu theo a ch .
- Tra cu theo s in thoi, 1 a ch c th ng k nhiu s in thoi c nh.

Bi tp Mn: Lp trnh hng i tng - Trang 63


Tun 7.
Tun 8. LP TRNH GENERICS

Chng 5. Lp trnh Generics


Mc tiu:
Hiu v p dng c cc kiu Generic, phng thc Generic
Hiu v p dng c Generic theo lp
Yu cu:
Tt c cc bi tp lu trong th mc: D:\MaSV_HoTen\Tuan07-08\
My tnh phi c ci t sn JDK (Java Development Kit)
My tnh phi c sn phn mm son tho h tr cho lp trnh hng i tng dng ngn ng
lp trnh Java (Eclipse/JCreator/NetBeans)
Trong ci t Generic s dng
E - Element (used extensively by the Java Collections Framework)
K - Key
N - Number
T Type, S,U,V etc. - 2nd, 3rd, 4th types
V - Value
Bi 1. Vit 1 lp chung, constructor cho php khi to d liu bt k (xt trng hp va l s va l
chui).
Hng dn:
To lp Generic
class GenericClass<T>
{
T ob;
GenericClass(T o)
{
ob = o;
}
T getob()
{
return ob;
}
void showType()
{
System.out.println("Kieu cua T la " + ob.getClass().getName());
}
}

To lp kim tra

Bi tp Mn: Lp trnh hng i tng - Trang 64


public class GenericClassTest
{
public static void main(String args[])
{
// Tao i tng cho GenericClass lu tr cc s Integer.
GenericClass<Integer> iOb = new GenericClass<Integer>(88);
iOb.showType();

// Khng cn p kiu
int v = iOb.getob();
System.out.println("gia tri: " + v);

// Tao i tng cho GenericClass lu tr cc chui String.


GenericClass<String> strOb = new GenericClass<String>("Generics Test");
strOb.showType();

String str = strOb.getob();


System.out.println("gia tri: " + str);
}
}
}

Generic Term Meaning


Set<E> Generic Type , E is called formal parameter.
Loi Generic, E c gi l tham s hnh thc.
Set<Integer> Parametrized type , Integer is actual parameter here
Tham s ha loi, Integer l tham s thc.
<T extends Comparable> Bounded type parameter
<T super Comparable> Bounded type parameter
Set<?> Unbounded wildcard
<? extends T> Bounded wildcard type
<? Super T> Bounded wildcards
Set Raw type
<T extends Comparable<T>> Recursive type bound

Bi 2. To lp Generic vi 2 loi tham s.


Hng dn:
To lp vi 2 loi tham s
class TwoGenerics<T, V>
{
T ob1;
V ob2;
TwoGenerics(T o1, V o2)
{
ob1 = o1;
ob2 = o2;
Bi tp Mn: Lp trnh hng i tng - Trang 65
}
void showTypes()
{
System.out.println("Loai cua T la "
+ ob1.getClass().getName());
System.out.println("Loai cua V la "
+ ob2.getClass().getName());
}
T getob1()
{
return ob1;
}
V getob2()
{
return ob2;
}
}

To lp kim tra
public class TwoGenericsTest
{
public static void main(String args[])
{
TwoGenerics<Integer, String> tgObj =
new TwoGenerics<Integer, String>(88, "Generics");
tgObj.showTypes();

int v = tgObj.getob1();
System.out.println("gia tri: " + v);

String str = tgObj.getob2();


System.out.println("gia tri: " + str);
}
}

Bi 3. Thao tc vi Generic lng nhau (nested generic type). To mt danh sch List lu tr danh sch
cc danh sch (chui).
Hng dn:
import java.util.ArrayList;
import java.util.List;

public class ListOfLists


{
public static void main(String[] args)
{
List<String> listOfStrings = new ArrayList<String>();
listOfStrings.add("Hello again");
List<List<String>> listOfLists =
new ArrayList<List<String>>();
listOfLists.add(listOfStrings);

Bi tp Mn: Lp trnh hng i tng - Trang 66


String s = listOfLists.get(0).get(0);
// t thm thng tin khc
System.out.println(s); // ket qua "Hello again"
}
}

Bi 4. S dng interface Generic Comparable. To mt lp Person bao gm 2 thuc tnh h v tn


implements interface Comparable.
To lp Person implements Generic Comparable
import java.util.Arrays;
class Person implements Comparable<Person>
{
private String firstName;
private String surname;
public Person(String firstName, String surname)
{
this.firstName = firstName;
this.surname = surname;
}
public String toString()
{
return firstName + " " + surname;
}
public int compareTo(Person person)
{
int result = surname.compareTo(person.surname);
return result == 0 ? firstName.compareTo(((Person) person).firstName)
: result;
}
}

To lp kim tra.
public class PersonTest
{
public static void main(String[] args)
{
Person[] authors = {
new Person("D", "S"),
new Person("J", "G"),
new Person("T", "C"),
new Person("C", "S"),
new Person("P", "C"),
new Person("B", "B") };

Arrays.sort(authors); // Sp xp s dng phng thc Comparable

System.out.println("\Sau khi sap xep:");


for (Person author : authors)
{
Bi tp Mn: Lp trnh hng i tng - Trang 67
System.out.println(author);
}

Person[] people = {
new Person("C", "S"),
new Person("N", "K"),
new Person("T", "C"),
new Person("C", "D") };
int index = 0;
System.out.println("\nTim kiem:");

for (Person person : people)


{
index = Arrays.binarySearch(authors, person);
if (index >= 0)
{
System.out.println(person +
" tai vi tri index " + index);
}
else
{
System.out.println(person +
" khong tim thay. Gia tri tra ve: " + index);
}
}
}
}

Bi 5. Thit k 1 lp hot ng nh mt l th vin cho cc loi Media sau: sch, video v bo ch.
Yu cu vit c 2 cch: thng thng v Generic.
Hng dn:
Cch vit thng thng
import java.util.List;
import java.util.ArrayList;

public class Library


{
private List resources = new ArrayList();
public void addMedia(Media x)
{
resources.add(x);
}
public Media retrieveLast()
{
int size = resources.size();
if (size > 0)
{
return (Media)resources.get(size - 1);
}
return null;

Bi tp Mn: Lp trnh hng i tng - Trang 68


}
}

interface Media
{
}

interface Book extends Media


{
}

interface Video extends Media


{
}

interface Newspaper extends Media


{
}

Cch vit theo Generic


public class LibraryGeneric<E extends Media>
{
private List<E> resources = new ArrayList<E>();
public void addMedia(E x)
{
resources.add(x);
}
public E retrieveLast()
{
int size = resources.size();
if (size > 0)
{
return resources.get(size - 1);
}
return null;
}
}

Bi 6. Vit phng thc Generic tnh max, min trong mt tp hp. S dng cch vit c dng
wildcard.
Hng dn:
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;

class ComparatorsEx
{
public static <T> T max(Collection<? extends T> coll,
Comparator<? super T> cmp)
Bi tp Mn: Lp trnh hng i tng - Trang 69
{
T candidate = coll.iterator().next();
for (T elt : coll)
{
if (cmp.compare(candidate, elt) < 0)
{
candidate = elt;
}
}
return candidate;
}

public static <T extends Comparable<? super T>>


T max(Collection<? extends T> coll)
{
return max(coll, ComparatorsEx.<T> naturalOrder());
}

public static <T> T min(Collection<? extends T> coll,


Comparator<? super T> cmp)
{
return max(coll, reverseOrder(cmp));
}

public static <T extends Comparable<? super T>>


T min(Collection<? extends T> coll)
{
return max(coll, ComparatorsEx.<T> reverseOrder());
}

public static <T extends Comparable<? super T>>


Comparator<T> naturalOrder()
{
return new Comparator<T>()
{
public int compare(T o1, T o2)
{
return o1.compareTo(o2);
}
};
}

public static <T> Comparator<T> reverseOrder(final Comparator<T> cmp)


{
return new Comparator<T>() {
public int compare(T o1, T o2)
{
return cmp.compare(o2, o1);
}
};
}

public static <T extends Comparable<? super T>>


Comparator<T> reverseOrder()
{
Bi tp Mn: Lp trnh hng i tng - Trang 70
return new Comparator<T>() {
public int compare(T o1, T o2)
{
return o2.compareTo(o1);
}
};
}
}

public class ComparatorsExampleTest


{
public static void main(String[] args)
{
Comparator<String> sizeOrder = new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.length() < s2.length() ? -1 : s1.length() > s2.length() ? 1 :
s1.compareTo(s2);
}
};
Collection<String> strings = Arrays.asList("AAA", "aaa", "CCC", "f");

System.out.println(ComparatorsEx.max(strings));
System.out.println(ComparatorsEx.min(strings));
System.out.println(ComparatorsEx.max(strings,sizeOrder));
System.out.println(ComparatorsEx.min(strings,sizeOrder));
}
}

Bi 7. Vit phng thc Generic cho php in ra mng cc phn t, phng thc ny cho php in
phn t mng ca nhiu kiu d liu khc nhau.
Hng dn:
public class PrintArrayGeneric
{
// phng thc Generic
public static <E> void printArray(E[] inputArray)
{
// hin th cc phn t mng
for (E element : inputArray)
System.out.printf("%s ", element);

System.out.println();
}

public static void main(String args[])


{
// 3 mng d liu khc nhau: Integer, Double, Character
Integer[] integerArray = { 1, 2, 3, 4, 5, 6 };
Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 };
Character[] characterArray = { 'H', 'E', 'L', 'L', 'O' };

System.out.println("Mang so nguyen:");
Bi tp Mn: Lp trnh hng i tng - Trang 71
printArray(integerArray); // tham s l mng s nguyn
System.out.println("\nMang doubleArray co noi dung:");
printArray(doubleArray); // tham s l mng Double
System.out.println("\nMang characterArray co noi dung:");
printArray(characterArray); // tham s l mng k t
}
}

Bi 8. S dng Generic tham s, dng k t i din wildcard ?. Vit phng thc Generic cho
php in ra mng cc phn t, phng thc s dng tham s Generic.
Hng dn:
import java.util.ArrayList;
import java.util.List;

public class GenericParameter


{
public static void printList (List<?> list)
{
for (Object element : list)
{
System.out.println(element);
}
}
public static void main(String[] args)
{
List<String> list1 = new ArrayList<String>();

list1.add ("Hello");
list1.add ("World");
printList (list1);

List<Integer> list2 = new ArrayList<Integer>();


list2.add(100);
list2.add(200);
printList(list2);
}
}

Bi 9. S dng bounded wildcard trong phng thc. Vit phng thc Generic cho php tnh
trung bnh cc gi tr trong mng.
Hng dn:
C php: GenericType<? extends upperBoundType>
import java.util.ArrayList;
import java.util.List;

public class BoundedWildcard


Bi tp Mn: Lp trnh hng i tng - Trang 72
{
public static double getAverage(List<? extends Number> numberList)
{
double total = 0.0;
for (Number number : numberList)
{
total += number.doubleValue();
}
return total / numberList.size();
}

public static void main(String[] args)


{
List<Integer> integerList = new ArrayList<Integer>();
integerList.add(3);
integerList.add(30);
integerList.add(300);
System.out.println(getAverage(integerList)); // KQ?

List<Double> doubleList = new ArrayList<Double>();


doubleList.add(3.0);
doubleList.add(33.0);
System.out.println(getAverage(doubleList)); // KQ?
}
}

Bi 10. S dng bounded type trong lp. Vit lp Generic cho php tnh trung bnh cc gi
tr trong mng s (s nguyn/s thc).
Hng dn:
class Stats<T extends Number>
{
T[] nums;
Stats(T[] o)
{
nums = o;
}
double average()
{
double sum = 0.0;

for(int i=0; i < nums.length; i++)


sum += nums[i].doubleValue();

return sum / nums.length;


}
}

public class BoundedType


{
public static void main(String args[])
{
Bi tp Mn: Lp trnh hng i tng - Trang 73
Integer inums[] = { 1, 2, 3, 4, 5 };
Stats<Integer> iob = new Stats<Integer>(inums);
double v = iob.average();
System.out.println("Trung binh iob: " + v);

Double dnums[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };


Stats<Double> dob = new Stats<Double>(dnums);
double w = dob.average();
System.out.println("Trung binh dob: " + w);
}
}

Bi 11. S dng bounded type trong lp v wildcard ?. Vit lp Generic cho php tnh
trung bnh cc gi tr trong mng v so snh gi tr trung bnh.
Hng dn:
Vit lp GenericStats dng bounded type v phng thc so snh 2 i tng thuc lp
GenericStats dng wildcard.
class GenericStats<T extends Number>
{
T[] nums;

GenericStats(T[] obj)
{
nums = obj;
}

double average()
{
double sum = 0.0;
for(int i=0; i < nums.length; i++)
{
sum += nums[i].doubleValue();
}
return sum / nums.length;
}

boolean sameAvg(GenericStats<?> ob)


{
if(average() == ob.average())
return true;

return false;
}
}
Vit lp kim tra
public class GenericStatsTest
{
Bi tp Mn: Lp trnh hng i tng - Trang 74
public static void main(String args[])
{
Integer inums[] = { 1, 2, 3, 4, 5 };
GenericStats<Integer> iob = new GenericStats<Integer>(inums);
double v = iob.average();
System.out.println("Trung binh cua iob " + v);

Double dnums[] = { 1.1, 2.2, 3.3, 4.4, 5.5 };


GenericStats<Double> dob = new GenericStats<Double>(dnums);
double w = dob.average();
System.out.println("Trung binh cua dob " + w);

Float fnums[] = { 1.0F, 2.0F, 3.0F, 4.0F, 5.0F };


GenericStats<Float> fob = new GenericStats<Float>(fnums);
double x = fob.average();
System.out.println("Trung binh cua fob " + x);

System.out.print("Trung binh cua iob va dob ");


if(iob.sameAvg(dob))
{
System.out.println("giong nhau.");
}
else
{
System.out.println("khac nhau.");
}

System.out.print("Trung binh cua iob va fob ");


if(iob.sameAvg(fob))
{
System.out.println("giong nhau.");
}
else
{
System.out.println("khac nhau.");
}
}
}

Bi 12. Vit phng thc override trong lp Generic. Xt trng hp lp B tha k lp A v vit
override phng thc trong lp A.
class Gen<T>
{
T ob;
Gen(T o)
{
ob = o;
}

T getObject()
{
Bi tp Mn: Lp trnh hng i tng - Trang 75
System.out.println("Gen's getObject(): " );
return ob;
}
}

class Gen2<T> extends Gen<T>


{

Gen2(T o)
{
super(o);
}
T getObject()
{
System.out.println("Gen2's getObject(): ");
return ob;
}
}

public class OverrideGenericMethods


{
public static void main(String[] arg)
{
Gen<Integer> intObject = new Gen<Integer>(88);
Gen2<Long> longObject = new Gen2<Long>(99L);

intObject.getObject();
longObject.getObject();
}

Lu : Thao tc p kiu trong Generic. Ch c th p kiu mt i tng thuc lp sang i tng ca


lp khc trong trng hp tng thch v tham s l nh nhau.
class Gen<T>
{
T ob;

Gen(T o)
{
ob = o;
}

T getObject()
{
return ob;
}
}

class Gen2<T> extends Gen<T>


{
Gen2(T o)

Bi tp Mn: Lp trnh hng i tng - Trang 76


{
super(o);
}
}

public class CastGeneric


{
public static void main(String args[])
{
Gen<Integer> intObject = new Gen<Integer>(88);
Gen2<Long> longObject = new Gen2<Long>(99L);

//longObject = (Gen2<Long>)intObject;

}
}

Bi 13. Thao tc vi Generic Interface. Vit Interface vi 2 phng thc max, min tnh max,
min trong mt tp hp. Lp thc thi interface phi nh ngha chi tit vic x l ca 2 phng thc
ny.
C php chung
1. type-param-list is a comma-separated list of type parameters.
2. When a generic interface is implemented, you must specify the type arguments

interface interface-name<type-param-list> { // ...

class class-name<type-param-list>
implements interface-name<type-param-list> {

interface MinMax<T extends Comparable<T>>


{
T min();

T max();
}

class MyClass<T extends Comparable<T>> implements MinMax<T>


{
T[] vals;

MyClass(T[] o)
{
vals = o;
}

Bi tp Mn: Lp trnh hng i tng - Trang 77


public T min()
{
T v = vals[0];

for (int i = 1; i < vals.length; i++)


if (vals[i].compareTo(v) < 0)
v = vals[i];

return v;
}

public T max()
{
T v = vals[0];

for (int i = 1; i < vals.length; i++)


if (vals[i].compareTo(v) > 0)
v = vals[i];

return v;
}
}

public class GenericInterfaceTest


{
public static void main(String args[])
{
Integer inums[] = { 3, 6, 2, 8, 6 };
Character chs[] = { 'A', 'r', 'V', 'w' };

MyClass<Integer> iob = new MyClass<Integer>(inums);


MyClass<Character> cob = new MyClass<Character>(chs);

System.out.println("Max value in inums: " + iob.max());


System.out.println("Min value in inums: " + iob.min());

System.out.println("Max value in chs: " + cob.max());


System.out.println("Min value in chs: " + cob.min());
}
}

Bi 14. Bi tp v Collection dng TreeMap:


Vit 1 lp m t 1 t ting Anh bao gm t, ngha, loi t, v phn ghi ch, lp cn override
phng thc toString, equals v phng thc so snh 2 t compareTo khng phn bit ch
thng hoa.
Lp t in bao gm cc phung thc:
- Thm t in mi
- Tra t in

Bi tp Mn: Lp trnh hng i tng - Trang 78


- toString() in ra tt c cc t trong t in
Lp kim tra cho php nhp vo cc t v tra cu cc t
Hng dn:
Lp t bao gm cc thuc tnh(t, ngha, loi t, ghi ch), phng thc get/set, constructors, phng
thc so snh equals, toString
public class EVWordClass implements Comparable
{
private String word; private String mean;
private String type; private String notes;

public EVWordClass()
{
this("","","","");
}

public EVWordClass(String word, String mean, String type, String notes)


{
this.word = word;
this.mean = mean;
this.type = type;
this.notes = notes;
}

public String getMean()


{
return mean;
}
public void setMean(String mean)
{
this.mean = mean;
}
public String getNotes()
{
return notes;
}
public void setNotes(String notes)
{
this.notes = notes;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getWord() {
return word;

}
Bi tp Mn: Lp trnh hng i tng - Trang 79
public void setWord(String word) {
this.word = word;
}

public boolean equals(Object obj)


{
EVWordClass w = (EVWordClass)obj;
return word.equalsIgnoreCase(w.getWord());
}

public String toString()


{
return word + "; " + type + "; " + mean + "; " + notes;
}

public int compareTo(Object o)


{
return this.word.compareToIgnoreCase(((EVWordClass)o).getWord());
}
}
Lp t in s dng Collections TreeMap
import java.util.TreeMap;
public class EVDictionary
{
public TreeMap<String,EVWordClass> dic;

// Tao TreeMap bao gom tu va


public EVDictionary()
{
dic = new TreeMap<String,EVWordClass>();
}

// Them tu moi vao tu dien


public boolean addWord(EVWordClass word)
{
if(dic.put(word.getWord().toLowerCase(),word) != null)
return false;
return true;
}

// Tra tu
public EVWordClass lookup(String word)
{
return dic.get(word);
}

public String toString()


{
String ret = "";
for(EVWordClass w:dic.values())
ret += w.toString()+"\n";
return ret;
}
}
Bi tp Mn: Lp trnh hng i tng - Trang 80
Lp kim tra chng trnh
public class EVDictionaryTest
{
public static void main(String[] args)
{
EVDictionary dic = new EVDictionary();
for(int i=1; i<10; i++)
{
dic.addWord(new EVWordClass("Word" + i, "", "Tu thu " + i, ""));
}

System.out.println(dic);

//Them tu
EVWordClass w = new EVWordClass("Word2", "", "Tu thu ", "");

if(!dic.addWord(w))
System.out.println("Khong them duoc!");

//Tra tu
EVWordClass l = dic.lookup("word2");
if(l != null)
System.out.println(l.toString());
}

Bi 15. Mt qun bi trong b bi gm hai thuc tnh loi bi (c, r, chun, bch) v th t qun
bi(2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A). Dng Generic.
Vit cc lp sau:
- Lp m t qun bi
- Lp to b bi 52 qun bi khng trng nhau vi phng thc l xo bi (dng
shuffle())
- Lp kim tra

Hng dn:
Lp m t qun bi
public class Card
{
private int face;
private int suit;
public Card()
{
Bi tp Mn: Lp trnh hng i tng - Trang 81
this.face = (int)(Math.random()*4);
this.suit = (int)(Math.random()*13);
}
public int getFace()
{
return face;
}
public void setFace(int face)
{
this.face = face;
}
public int getSuit()
{
return suit;
}
public void setSuit(int suit)
{
this.suit = suit;
}

public boolean equals(Object obj)


{
Card c = (Card)obj;
return (this.suit == c.getSuit() && this.face == c.getFace());
}
// Ham override

public String toString()


{
String ret = "";
switch(suit)
{
case 0: ret = "At";break;
case 1: ret = "Hai";break;
case 2: ret = "Ba";break;
case 3: ret = "Bon";break;
case 4: ret = "Nam";break;
case 5: ret = "Sau";break;
case 6: ret = "Bay";break;
case 7: ret = "Tam";break;
case 8: ret = "Chin";break;
case 9: ret = "Muoi";break;
case 10: ret = "J";break;
case 11: ret = "Q";break;
case 12: ret = "K";break;
}
switch(face)
{
case 0: ret += " Co";break;
case 1: ret += " Ro";break;
case 2: ret += " Chuon";break;
case 3: ret += " Bich";break;
}
return ret;
}
Bi tp Mn: Lp trnh hng i tng - Trang 82
}

Lp m t b bi
import java.util.ArrayList;
import java.util.Collections;

public class Card_Pack


{
private ArrayList<Card> pack;
public Card_Pack()
{
pack = new ArrayList<Card>();
int count =0;
do
{
Card c = new Card();
if(!pack.contains(c))
{
pack.add(c);
count ++;
}
}while(count<52);
}

public void shuffleCardPack()


{
Collections.shuffle(pack);
}
public String toString()
{
String ret = "";
for(Card c:pack)
ret += c.toString() + "\n";
return ret;
}
}

Lp kim tra chng trnh


public class CardTesting
{
public static void main(String[] args)
{
Card_Pack cp=new Card_Pack();
System.out.println(cp);

System.out.println("\nBAI SAU KHI XAO: \n");

cp.shuffleCardPack();
System.out.println(cp);
}

Bi tp Mn: Lp trnh hng i tng - Trang 83


}

Tun 9. THAO TC NHP XUT D LIU LU TR TP TIN

Chng 7. Nhp xut trn Java


Mc tiu:
Hiu v p dng c ng m tp tin, th mc
Hiu v p dng c cc thao tc vi tp tin, th mc
Yu cu:
Tt c cc bi tp lu trong th mc: D:\MaSV_HoTen\Tuan09\
My tnh phi c ci t sn JDK (Java Development Kit)
My tnh phi c sn phn mm son tho h tr cho lp trnh hng i tng dng ngn ng
lp trnh Java (Eclipse/JCreator/NetBeans)

Bi 1. Vit chng trnh nhp vo mt chui v in ra chui nghch o ca chui nhp (Dng
BufferedReader v InputStreamReader).

Bi 2. Hin th ni dung ca mt file tn test.txt lu ti D:\test.txt


Dng BufferedInputStream thao tc c tp tin.
import java.io.*;

public class BufferedFileApp


{
public static void main(String args[]) throws IOException
{
BufferedInputStream bStream = new BufferedInputStream(
new FileInputStream("D:\\test.txt"));
int ch=0;
while ((ch=bStream.read())!= -1)
{
System.out.print((char)ch);
}
bStream.close();
}
}

Bi 3. Copy ni dung mt file text n mt file text khc. (Dng


BufferedInputStream/BufferedOutputStream Hoc dng FileInputStream/FileOutputStream)

Bi tp Mn: Lp trnh hng i tng - Trang 84


import java.io.*;

public class CopyFileApp


{
public static void main(String args[]) throws IOException
{
if (args.length!=2)
{
System.out.println("Usage : java CopyFileApp <SrcFile> <DestFile>");
return;
}

String SourceFile=args[0]; // tp tin ngun


String DestFile =args[1]; // tp tin copy
// To b m c d liu t tp tin ngun
BufferedInputStream inFile = new BufferedInputStream(
new FileInputStream(SourceFile));
// Ly kch thc tp tin ngun
int FileSize = inFile.available();
// To b m ghi d liu vo tp tin ch
BufferedOutputStream outFile = new BufferedOutputStream(
new FileOutputStream(DestFile));
// Chuyn d liu
int ch=0;
while ((ch=inFile.read())!= -1)
{
outFile.write(ch);
}

System.out.println(FileSize + " bytes da duoc copy xong.");

inFile.close();
outFile.close();
}
}

Bi 4. Dng DataOutputStream v DataInputStram ghi v c nhng kiu d liu khc nhau trn
file.

Bi 5. Lit k danh sch cc th mc con v tp tin ca 1 th mc. Nu th mc, hin th thm <DIR>
pha trc ca tn.
import java.io.*;
public class FileApp
{
public static void main(String args[])
{
Bi tp Mn: Lp trnh hng i tng - Trang 85
File curDir=new File("C:\\");
String[] dirs=curDir.list();

for (int i=0; i<dirs.length; i++)


{
File f=new File("C:\\"+dirs[i]);
if (f.isDirectory())
{
System.out.println("<DIR> "+dirs[i]);
}
else
{
System.out.println(" "+dirs[i]);
}
}
}
}

Bi 6. Truy cp ngu nhin trn file, vit chng trnh ghi 6 s kiu double xung file, ri c ln theo
th t ngu nhin

Bi 7. Thc hin c ghi i tng dng ObjectInputStream v ObjectOutputStream.


import java.io.*;
import java.util.*;
public class ObjectWriteExApp
{
public static void main(String args[])
throws IOException
{
ObjectOutputStream oStream = new ObjectOutputStream(
new FileOutputStream("Container.txt"));

// ghi i tng String


oStream.writeObject(new String("Hello World"));
// ghi i tng Fruit
oStream.writeObject(new Fruit("Orange",10));
oStream.writeObject(new Fruit("Apple",5));
// ghi i tng Date
oStream.writeObject(new Date());
System.out.println("Ghi 4 doi tuong vao tap tin Container.txt");
}
}

class Fruit implements Serializable


{
String name="";
int weight=0;

public Fruit(String n,int w){


name =n;
Bi tp Mn: Lp trnh hng i tng - Trang 86
weight=w;
}

private void writeObject(ObjectOutputStream out)


throws IOException{
out.writeObject("X "+name);
out.writeInt(weight-1);
}

private void readObject(ObjectInputStream in)


throws IOException,ClassNotFoundException{
name =(String)in.readObject();
weight=in.readInt();
}
public String toString()
{
return (name +" "+ weight+" g");
}
}

Bi 8. Dng BufferedReader c tng k t t Console. Vic c kt thc khi gp du chm (du


chm kt thc chng trnh).

Bi 9. Dng BufferedReader c chui k t t Console. Chng trnh kt thc khi gp chui c l


chui stop.

Bi 10. nh ngha lp lu tr thng tin ca sinh vin. Cho php nhp d liu sinh vin v lu
tr thnh file data.dat. c d liu t tp tin, a vo mng v hin th kt qu. Thng tin ca
SV bao gm m, h tn, a ch, s in thoi v im trung bnh ca nm hc va qua.

Bi tp Mn: Lp trnh hng i tng - Trang 87

Вам также может понравиться