You are on page 1of 86

Bi ging JavaCore ting Vit

Ging vin: Trn Trung Hiu Ti liu lin quan xem ti: http://fita.hua.edu.vn/tthieu/

CHNG 1 1.1 1.2 1.3

TNG QUAN NGN NG LP TRNH JAVA................................................... 4

LCH S RA I CA JAVA ........................................................................................................... 4 MT S C TNH CA JAVA ........................................................................................................ 4 CNG NGH JAVA ...................................................................................................................... 7 1.3.1 Gii thiu ...................................................................................................................... 7 1.3.2 Cc dng cng ngh Java .............................................................................................. 7 1.3.3 Cc dng ng dng ca Java ......................................................................................... 7 1.3.4 B cng c pht trin ng dng Java ............................................................................. 9 1.3.5 My o Java ................................................................................................................ 10 1.3.5.1 Quy trnh bin dch, thng dch ca Java...................................................................... 10 1.3.5.2 My o Java ................................................................................................................ 11 1.3.6 Mi trng pht trin tch hp ..................................................................................... 11 1.4 HNG DN CI T ................................................................................................................. 12 CHNG 2 2.1 2.2 CC CU TRC LP TRNH CN BN TRONG JAVA ..................................14

VIT MT CHNG TRNH JAVA N GIN ................................................................................. 14 CU TRC MT CHNG TRNH JAVA C BN ............................................................................. 15 2.2.1 Kin trc ca Java....................................................................................................... 15 2.2.2 Cc bc pht trin mt chng trnh Java.................................................................. 16 2.2.3 Cu trc mt chng trnh c bn................................................................................ 16 2.3 HNG, BIN, KIU D LIU, TON T ........................................................................................... 17 2.3.1 T kha ....................................................................................................................... 17 2.3.2 nh danh (indentifier) ................................................................................................ 17 2.3.3 Bin (Variable) ............................................................................................................ 17 2.3.4 Cc kiu d liu (data types)........................................................................................ 18 2.3.4.1 Kiu d liu c s........................................................................................................ 19 2.3.4.2 p kiu ........................................................................................................................ 20 2.3.5 Hng ........................................................................................................................... 21 2.3.6 Ton t........................................................................................................................ 21 2.4 CC CU TRC IU KHIN TRONG JAVA ................................................................................... 23 2.4.1 Mnh if-else ............................................................................................................ 24 2.4.2 Mnh switch-case .................................................................................................... 25 2.4.3 Vng lp for................................................................................................................. 26 2.4.4 Vng lp while............................................................................................................. 26 2.4.5 Vng lp do-while........................................................................................................ 26 2.5 NHP D LIU T BN PHM ....................................................................................................... 27 2.6 BI TP CHNG 2 .................................................................................................................. 28 CHNG 3 3.1 3.2 3.3 3.4 3.5 3.6 LP V I TNG.......................................................................................29

KHI NIM .............................................................................................................................. 29 KHAI BO LP ......................................................................................................................... 29 THUC TNH CA LP ................................................................................................................ 30 PHNG THC CA LP ............................................................................................................ 33 CH NH TRUY XUT LP ......................................................................................................... 35 TO I TNG ........................................................................................................................ 36 3.6.1 Constructor ................................................................................................................. 36 3.6.2 Bin this ...................................................................................................................... 37 3.7 GI PACKAGE ...................................................................................................................... 38 3.7.1 Package....................................................................................................................... 38 3.7.2 Class importation ........................................................................................................ 38 3.7.3 Qui cch t tn........................................................................................................... 40 3.8 BI TP CHNG 3 .................................................................................................................. 40 CHNG 4 C IM HNG I TNG TRONG JAVA.............................................40

TNH NG GI ....................................................................................................................... 40 TNH K THA .......................................................................................................................... 43 4.2.1 Tnh k tha................................................................................................................. 43 4.2.2 Np chng phng thc ............................................................................................... 45 4.2.3 Ghi phng thc ..................................................................................................... 45 4.2.4 Trng n.................................................................................................................... 48 4.2.5 Class Object ................................................................................................................ 49 4.3 TNH A HNH ......................................................................................................................... 49 4.4 LP TRU TNG, LP V SINH & GIAO TIP .............................................................................. 53 4.4.1 Lp tru tng Abstract class ................................................................................... 53 4.4.2 Lp v sinh Final class ............................................................................................. 54 4.4.3 Giao tip - Interface..................................................................................................... 54 4.5 BI TP CHNG 4 .................................................................................................................. 58 4.1 4.2 CHNG 5 5.1 5.2 5.3 MNG V XU.................................................................................................58

MNG ..................................................................................................................................... 58 XU ....................................................................................................................................... 60 BI TP CHNG 5 .................................................................................................................. 61 CN BN V LP TRNH GIAO DIN .............................................................61

CHNG 6 6.1

CN BN V LP TRNH GIAO DIN ............................................................................................. 61 6.1.1 Gii thiu thit k GUI trong Java ............................................................................... 61 6.1.2 Cc thnh phn c bn Components.......................................................................... 62 6.1.2.1 Nhn Label ............................................................................................................... 63 6.1.2.2 Nt nhn Button........................................................................................................ 64 6.1.2.3 vn bn Text Field................................................................................................. 65 6.1.2.4 La chn Choice....................................................................................................... 67 6.1.3 i tng khung cha Container .............................................................................. 68 6.1.3.1 Frame.......................................................................................................................... 68 6.1.3.2 Panel........................................................................................................................... 70 6.1.4 B qun l trnh by Layout Manager ....................................................................... 71 6.1.4.1 Flow Layout ................................................................................................................ 71 6.1.4.2 Border Layout.............................................................................................................. 72 6.1.4.3 Grid Layout ................................................................................................................. 73 6.1.4.4 GridBag Layout ........................................................................................................... 74 6.1.4.5 Null Layout.................................................................................................................. 76 6.2 APPLET ................................................................................................................................... 78 6.2.1 C bn v Applet ......................................................................................................... 78 6.2.2 Chuyn t mt ng dng ha sang Applet................................................................ 80 6.2.3 i tng ha Graphics.......................................................................................... 81 6.3 BI TP CHNG 6 .................................................................................................................. 85 THAM KHO THM .........................................................................................85

CHNG 7 7.1 7.2 7.3 7.4 7.5

SWING .................................................................................................................................... 85 X L S KIN TRONG LP TRNH GIAO DIN ............................................................................... 85 X L NGOI L........................................................................................................................ 85 LP TRNH C S D LIU .......................................................................................................... 85 BI TP CHNG 7 .................................................................................................................. 85

CHNG 1 JAVA

TNG QUAN NGN NG LP TRNH

1.1 Lch s ra i ca Java Cui nm 1990, James Gosling v cc cng s c cng ty Sun Microsystems giao nhim v xy dng phn mm lp trnh cho cc mt hng in t dn dng nhm mc ch ci chng trnh vo cc b x l ca cc thit b nh VCR, l nng, PDA (personal data assistant). Lc u Gosling v cc cng s nh chn ngn ng C++ nhng thy rng C++ c nhng hn ch. Chng trnh vit bng C++ khi chuyn sang chy trn mt h thng my c b vi x l khc th i hi phi bin dch li. Gosling quyt nh xy dng hn mt ngn ng mi da trn nn ngn ng C,C++ v t tn l Oak (cy si, v phng lm vic ca Gosling nhn ra mt cy si). Oak i hi phi c lp cu trc nn (phn cng, OS) do thit b c th do nhiu nh sn xut khc nhau (Platform independent). 1993, Internet v Web bng n, Sun chuyn Oak thnh mt mi trng lp trnh Internet vi tn d n l Java. 1995: Oak i tn vi tn chnh thc l Java. Java l tn mt hn o c trng nhiu c ph m nhm nghin cu pht trin tham quan v lm vic. Mc ch ca Java pht trin ng dng cho cc thit b in t thng minh, to cc trang web c ni dung ng (applet). Hin nay Java c s dng pht trin nhiu loi ng dng khc nhau nh c s d liu, mng, Internet, games, vin thng, 1.2 Mt s c tnh ca Java n gin( simple): Java tng t nh C++ nhng b bt cc c tnh phc tp ca C++ nh qun l b nh, pointer, overload ton t, khng dng include, b struct, union. Java c k tha t C++, v c loi b i cc tnh nng kh nht ca C++ nn java d s dng hn Tnh kh chuyn (portable): ca java do chng trnh bin dch to ra m byte (bytecodes) khng ph thuc h thng my s dng. Bytecodes l tp hp cc cu lnh tng t nh lnh m my (machine code), n c to ra khi mt chng trnh Java c bin dch xong

MT S C TNH CA JAVA
Minh ha tnh kh chuyn

Tnh hng i tng (OO): - Hng i tng trong Java tng t nh C++ nhng Java l mt ngn ng lp trnh hng i tng hon ton, khng th vit mt ng dng hng th tc trong Java - Tt c mi th cp n trong Java u lin quan n cc i tng c nh ngha trc, thm ch hm chnh (hm main) ca mt chng trnh vit bng Java cng phi t bn trong mt lp. - Hng i tng trong Java khng c tnh a k tha (multi inheritance) nh trong C++ m thay vo Java a ra khi nim interface h tr tnh a k tha. Phn tn (distributed): nhm n phn b ng dng trn mng, ng dng c lp platform. C th l Java c h tr cng ngh lp trnh RMI, CORBA, JavaBean. Cc cng ngh ny cho php s dng li cc lp to ra, triu gi cc phng thc (method) hoc cc i tng t mt my xa. a tiu trnh (multithread): c tnh ny ca Java cho php to nhiu tin trnh, tiu trnh c th chy song song cng mt thi im v c th tng tc vi nhau. Tnh an ton (secure): Kim tra an ton code trc khi thc thi, c nhiu mc kim tra bo mt Mi trng thc thi an ton - Mc 1: Mc ngn ng, nh tnh bao gi d liu ca OOP, khng cho php truy cp trc tip b nh m phi thng qua method.

- Mc 2: Mc Compiler, kim tra an ton cho code trc khi bin dch. - Mc 3: Mc Interpreter, trc khi bytecode c thc thi, c kim tra an ton. - Mc 4: Mc Class, cc class trc khi np c kim tra an ton. Bin dch v thng dch: - Java l mt ngn ng lp trnh c kh nng bin dch v kh nng thng dch. - Chng trnh ngun vit bng ngn ng lp trnh Java c ui *.java u tin c bin dch thnh tp tin c ui *.class v sau s c trnh thng dch thng dch thnh m my. - Java class file c th c dng bt k flatform no (Write Once Run Anywhere). - Cc file ti nguyn trnh bin dch javac class file c lp thit b - Class file trnh thng dch java m my thc thi, khng cn lin kt (link)

MT S C TNH CA JAVA
Minh ha bin dch v thng dch

Chng trnh Java Compiler Chng trnh Bytecode c lp platform

Java Runtime Interpreter/ JVM thc thi Javabytecode IBM Macintosh Sparc
14

Gii phng b nh (Garbage Collection) - Java cung cp mt tin trnh mc h thng theo di vic cp pht b nh - Garbage Collection

- nh du v gii phng cc vng nh khng cn c s dng. - c tin hnh t ng. - C ch hot ng ph thuc vo cc phin bn my o. 1.3 Cng ngh Java
1.3.1 Gii thiu

Cng ngh Java pht trin mnh m nh vo Sun Microsystem cung cp nhiu cng c, th vin lp trnh phong ph h tr cho vic pht trin nhiu loi ng dng khc nhau. Java bao gm: - Ngn ng lp trnh - Mi trng pht trin - Mi trng thc thi v trin khai
1.3.2 Cc dng cng ngh Java

Desktop applications - J2SE - Phin bn chun Java 2 Standard Edition. J2SE h tr vit cc ng dng n, ng dng client-server. - Java Applications: ng dng Java thng thng trn desktop - Java Applets: ng dng nhng hot ng trong trnh duyt web Server applications - J2EE - Nn tng Java 2, phin bn doanh nghip - Java 2 Enterprise Edition. H tr pht trin cc ng dng thng mi. - Chy trn my ch ln vi sc mnh x l v dung lng b nh ln, h tr gn lin vi servlet, jsp v XML. Mobile (embedded) applications J2ME - Phin bn thu nh - Java 2 Micro Edition. - H tr vit cc ng dng trn cc thit b di ng, khng dy, thit b nhng,
1.3.3 Cc dng ng dng ca Java

Dng Java ta c th vit cc dng ng dng sau: - ng dng c lp (console application) - ng dng Applets - ng dng giao din (GUI application) - ng dng Web (Servlet v Jsp) - ng dng nhng (embedded application) - ng dng c s d liu (database application) - Games.

ng dng c lp (console application): - ng dng Console l ng dng nhp xut ch vn bn tng t nh mn hnh Console ca h iu hnh MS-DOS. - Lai chng trnh ng dng ny thch hp vi nhng ai bc u lm quen vi ngn ng lp trnh java. - Cc ng dng kiu Console thng c dng minh ha cc v d c bn lin quan n c php ngn ng, cc thut ton, v cc chng trnh ng dng khng cn thit n giao din ngi dng ha. ng dng Applets: - Java Applet l loi ng dng c th nhng v chy trong trang web ca mt trnh duyt web. - T khi internet mi ra i, Java Applet cung cp mt kh nng lp trnh mnh m cho cc trang web. - Nhng gn y khi cc chng trnh duyt web pht trin vi kh nng lp trnh bng VB Script, Java Script, HTML, DHTML, XML, cng vi s canh tranh khc lit gia Microsoft v Sun lm cho Java Applet lu m. V cho n by gi gn nh cc lp trnh vin u khng cn mn m vi Java Applet na. ng dng giao din (GUI application): - Vic pht trin cc chng trnh ng dng c giao din ngi dng ha trc quan ging nh nhng chng trnh c vit dng ngn ng lp trnh VC++ hay Visual Basic c java gii quyt bng th vin AWT v JFC. - JFC (Swing) l th vin rt phong ph v h tr mnh m hn nhiu so vi AWT. JFC gip cho ngi lp trnh c th to ra mt giao din trc quan ca bt k ng dng no ng dng Web: - Java h tr mnh m i vi vic pht trin cc ng dng Web thng qua cng ngh J2EE (Java 2 Enterprise Edition). - Cng ngh J2EE hon ton c th to ra cc ng dng Web mt cch hiu qu khng thua km cng ngh .NET m Microsft ang qung co. - Cng ngh vit web hin c ca Java l Servlet v Jsp, ngoi ra cn c s h tr ca lp trnh Socket, Java Bean, RMI v CORBA, EJB. ng dng nhng:

- Java Sun a ra cng ngh J2ME (The Java 2 Platform, Micro Edition J2ME) h tr pht trin cc chng trnh, phn mm nhng. - J2ME cung cp mt mi trng cho nhng chng trnh ng dng c th chy c trn cc thit b c nhn nh: in thai di ng (MIDlet), my tnh b ti PDA hay Palm, cng nh cc thit b nhng khc. ng dng c s d liu: - Java cng h tr lp trnh kt ni v tng tc c vi hu ht cc h quan tr CSDL ni ting nh Oracle, SQL Server, MSAccess, MySQL, Games: - Lp trnh Games bng Java c pht trin mnh m. Dng Java c th vit c games cho my destop v cc thit b di ng.
1.3.4 B cng c pht trin ng dng Java

JDK (Java Development Kit): B cng c pht trin ng dng Java bao gm 4 thnh phn: ClasseS, Compiler, Debugger, Java Runtime Environment. - JDK 1.0 1996 - JDK 1.1 1997 - JDK 1.2 1998 - JDK 1.3 2000 - Java 1.4 2002 - Java 5 (1.5) 2004 - Java 6 2006 Bao gm: - javac Chng trnh dch chuyn m ngun sang bytecode - java B thng dch: Thc thi java application - appletviewer B thng dch: Thc thi java applet m khng cn s dng trnh duyt nh Nestcape, FireFox hay IE, v.v. - javadoc B to ti liu dng HTML t m ngun v ch thch - jdb B g li (java debugger) - javap Trnh dch ngc bytecode - jar Dng ng gi lu tr cc module vit bng Java (to ra file ui .jar), l phng php tin li phn phi nhng chng trnh Java.

1.3.5 My o Java 1.3.5.1 Quy trnh bin dch, thng dch ca Java

JVM JAVA VIRTUAL MACHINE


KIU DCH CA CC TRNH BIN DCH NGN NG C

29

- Trnh bin dch chuyn m ngun thnh tp cc lnh khng ph thuc vo phn cng c th. - Trnh thng dch trn mi my chuyn tp lnh ny thnh chng trnh thc thi - My o to ra mt mi trng thc thi cc lnh bng cch: - Np cc file .class - Qun l b nh - Dn rc

1.3.5.2 My o Java

JVM JAVA VIRTUAL MACHINE


Java Source (*.java) Java Compiler (javac) Java Object (*.class)

M i tng c xc minh v np vo my o Java Chng trnh c x l bi trnh thng dch Java Virtual Machine Java Interpreter (java) Trnh thng dch kim sot tt c cc truyn thng vi OS ca my tnh thc Computer Operating System
31

- JVM l mt phn mm da trn c s my tnh o. JVM cng c xem nh l mt h iu hnh thu nh. - My o ph thuc vo Platform (phn cng, OS), n cung cp mi trng thc thi cho Java (c lp vi platform). - N thit lp cho cc m Java bin dch c mt ci nhn trong sut (trasparence) v cc phn cng bn di.
1.3.6 Mi trng pht trin tch hp

IDE (integrated development environment): trong phn mm my tnh, IDE ch n mt b cc cng c phn mm son tho, bin dch, lin kt, g ri, vv V d nh b Visual Studio ca Microsoft. IDE gip pht trin ng dng nhanh chng v hiu qu hn. n gin ha qu trnh pht trin phn mm Mt s IDE dnh cho lp trnh Java l: - JCreator - NetBeans - Eclipse - TextPad - BlueJ - Java Studio ca Sun -

1.4 Hng dn ci t Cc phn mm cn chun b: - JDK 1.6 (jdk-6u11-windows-i586-p) - JDK DOC 1.6 (jdk-6u10-docs) (click vo index.html tra cu th vin Java) http://java.sun.com/javase/downloads/index.jsp - BlueJ version 3.0.1 (C s UML sinh t ng) http://www.bluej.org/download/download.html - Nu khng dng mt IDE nh BlueJ son tho, dch v thc thi th ta c th dng trnh son tho vn bn nh NotePad son tho Trnh t ci t - Ci JDK 1.6 - Thit lp bin mi trng PATH - BlueJ 3.0.1 Ci t: Phn ny hng dn ci t trn h iu hnh window XP - To th mc C:\Java ci. Nu khng th JDK ci ngm nh vo C:\Program Files\Java\jdk1.6.0_11 - Nhp p vo source JDK 1.6 ci. - Thit lp bin mi trng PATH ch n th mc BIN ca th mc m ta mi ci JDK.

THIT LP BIN MI TRNG PATH


Trong Windows XP, nhp Start/run g vo sysedit. Trong ca s AUTOEXEC.BAT g chui set PATH= ch n th mc BIN ca JDK mi ci t. V d: set PATH=C:\Program Files\Java\jdk1.6.0_11\bin Sau save v ng ca s sysedit li ri khi ng li my.

KIM TRA KT QU CI JDK


M cmd ca WindowsXP, g hai lnh java ri javac. Nu c kt qu nh sau th vic ci t JDK thnh cng

39

CHNG 2 CC CU TRC LP TRNH CN BN TRONG JAVA


2.1 Vit mt chng trnh Java n gin G on m chng trnh sau vo trnh son tho notepad: public class HelloWorld{ public static void main(String[] args){ // Display Hello World! message System.out.println(Hello World!); } } Lu file: Lu tn class trng tn file, file c phn m rng l java HelloWorld.java Lu vo th mc Java trn D M cmd ca WindowsXP ln. Thc hin 2 bc sau: - Dch file source code ra m bytecode: javac HelloWorld.java Nu dch thnh cng mt file HelloWorld.class xut hin cha cc m bytecode - Chy chng trnh bi my o java HelloWorld

Cc bc chy chng trnh Java s dng NotePad v cmd ca Window

Ch : Bn cn t bin mi trng path theo hng dn trong chng 1 cmd nhn dng cc lnh javac, java. 2.2 Cu trc mt chng trnh java c bn
2.2.1 Kin trc ca Java

Java Platform - Java Virtual Machine (Java VM) - Java Application Programming Interface (Java API)

Th vin lp Java: b JDK bao gm rt nhiu lp chun c xy dng sn. Lp trnh vin thng s dng cc lp chun pht trin ng dng. Cc gi chun ca Java: - java.lang - java.applet - java.awt - java.io - java.util - java.net - java.awt.event - java.rmi - java.security - java.sql

2.2.2 Cc bc pht trin mt chng trnh Java

2.2.3 Cu trc mt chng trnh c bn

// Ten file: HelloWorld.java /* Tac gia: Nguyen Van An */ public class HelloWorld { // Phuong thuc main, diem bat dau cua chuong trinh public static void main(String[] args){ System.out.println(HelloWorld !); }// Ket thuc phuong thuc main }// Ket thuc class HelloWorld Chng trnh trn bao gm nhng im cn ch sau: - Tn class cha hm main phi ging tn file (HelloWorld) - T kha khai bo lp class, mi chng trnh phi c t nht mt khai bo lp - Phng thc main s c gi u tin, mi chng trnh thc thi phi c mt phng thc main. Phng thc main c 3 b t c t sau: o public: ch ra rng phng thc main l cng cng c th gi bi bt k i tng no o static: ch ra rng phng thc main l mt phng thc lp

o void: ch ra rng phng thc main khng tr li bt k gi tr no M u kt thc ca class, phng thc (main) bng cc du m, ng ngoc nhn {} Cc cu lnh lun kt thc bng du chm phy (;) Cc du ch thch ca chng trnh: //, /*..*/, /***/ Cc t kha trong Java l case sensitive, bn khng c ty tin thay i gia dng ch hoa v thng: public, class, static, void, String, System,

2.3 Hng, bin, kiu d liu, ton t


2.3.1 T kha

- T kha cho cc kiu d liu c bn : byte, short, int, long, float, double, char, boolean. - T kha cho pht biu lp: do, while, for, break, continue. - T kha cho pht biu r nhnh: if, else, switch, case, default, break. - T kha c t c tnh mt method: private, public, protected, final, static, abstract, synchronized. - Hng (literal): true, false, null. - T kha lin quan n method: return, void. - T kho lin quan n package: package, import. - T kha cho vic qun l li: try, catch, finally, throw, throws. - T kha lin quan n i tng: new, extends, implements, class, instanceof, this, super
2.3.2 nh danh (indentifier)

- nh danh l dng biu din tn ca bin, ca phng thc, ca lp. - Trong Java, nh danh c th s dng k t ch, k t s v k t du. - K t u tin phi l k t ch, du gch di (_), hoc du dollar ($). - C s phn bit gia k t ch hoa v ch thng. V d: Hello, _prime, var8, tvLang
2.3.3 Bin (Variable)

- Bin l vng nh dng lu tr cc gi tr ca chng trnh.

- Mi bin gn lin vi mt kiu d liu v mt nh danh duy nht gi l tn bin. - Tn bin thng thng l mt chui cc k t (Unicode), k s. - Tn bin phi bt u bng mt ch ci, mt du gch di hay du dollar. - Tn bin khng c trng vi cc t kha (xem li cc t kha trong java). - Tn bin khng c khong trng gia tn. - Trong java, bin c th c khai bo bt k ni u trong chng trnh Cch khai bo <kiu_d_liu> <tn_bin>; <kiu_d_liu> <tn_bin> = <gi_tr>; Gn gi tr cho bin <tn_bin> = <gi_tr>; Bin cng cng (ton cc): l bin c th truy xut khp ni trong chng trnh, thng c khai bo dng t kha public, hoc t chng trong mt class. Bin cc b: l bin ch c th truy xut trong khi lnh n khai bo
2.3.4 Cc kiu d liu (data types)

Java bao gm cc kiu d liu sau: - Kiu d liu c s (Primitive data type) o Kiu d liu c s ca Java bao gm cc nhm sau: s nguyn, s thc, k t, kiu logic - Kiu d liu tham chiu hay dn xut (reference data type) o Kiu d liu tham chiu l cc kiu d liu i tng. V d nh: String, Byte, Character, Double, Boolean, Integer, Long, Short, Font, v cc lp do ngi dng nh ngha

2.3.4.1 Kiu d liu c s

Kiu s nguyn: Kiu byte short int long Kch thc 8 bits 16 bits 32 bits 64 bits Khong gi tr -128127 -3276832767 -231231 1 -263263 1

Bn kiu s nguyn khc nhau l: byte, short, int, long Kiu mc nh ca cc s nguyn l kiu int Khng c kiu s nguyn khng du Khng th chuyn bin kiu int v kiu boolean nh trong ngn ng C/C++ VD: int x = 0; long y=100; int a=1,b,c;

Kiu s thc: Kiu float double

Kch thc 32 bits 64 bits

Khong gi tr -3.4e383.4e38 -1.7e3081.7e308

Kiu boolean: Nhn gi tr true hoc false. Gi tr mc nh l false, khng th chuyn thnh kiu nguyn v ngc li Kiu char: Kiu k t theo chun Unicode Biu din cc k t trong b m Unicode 216 = 65536 k t khc nhau : t '\u0000' n '\uFFFF' Mt s hng k t:

2.3.4.2 p kiu

Khi gp phi s khng tng thch kiu d liu chng ta phi tin hnh chuyn i kiu d liu cho bin hoc biu thc Chuyn i gia cc kiu d liu c s:

Ch : Nu chuyn kiu theo chiu mi tn nt t, kt qu nhn c c th khng chnh xc Ton t p kiu: <tn bin> = (kiu_d_liu) <tn_bin>; float fNum = 2.2; int iCount = (int) fNum p kiu rng (widening conversion): t kiu nh sang kiu ln (khng mt mt thng tin) p kiu hp (narrow conversion): t kiu ln sang kiu nh (c kh nng mt mt thng tin)
2.3.5 Hng

Hng l mt gi tr bt bin trong chng trnh Tn hng c t theo qui c ging nh tn bin Tip v ng: l, L, f, F, d, D int i=1; long i=1L; Hng k t: l mt k t n nm gia 2 du nhy n. Hng chui: l tp hp cc k t c t gia hai du nhy kp . Mt hng chui khng c k t no l mt hng chui rng. V d: Hello World Lu : Hng chui khng phi l mt kiu d liu c s nhng vn c khai bo v s dng trong cc chng trnh
2.3.6 Ton t

Ton t s hc:

Ton t quan h v logic:

Ton t gn:

Ton t iu kin: <iu kin> ? <biu thc 1> : < biu thc 2> int x = 10; int y = 20; int Z = (x<y) ? 30 : 40; u tin ca cc php ton: u tin ca cc php ton trong ngn ng Java cng gn ging nh ngn ng C/C++. Th t u tin t tri qua phi v t trn xung di nh bng sau:

Mt v d v php ton: import java.lang.*; import java.io.*; class VariableDemo { public static void main(String[] args) { int x = 10; int y = 20; int z = x+y; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = x + y =" + z); System.out.println("So nho hon la so:" + Math.min(x,y)); char c = 80; System.out.println("ky tu c la: " + c); } } 2.4 Cc cu trc iu khin trong Java iu khin r nhnh: - Mnh if-else - Mnh switch-case Vng lp (Loops): - Vng lp for

- Vng lp while - Vng lp do-while


2.4.1 Mnh if-else

Dng 1: if (iu_kin) lnh if(iu_kin) { // khoi lenh lnh1 lnh2 } Dng 2: if (iu_kin) lnh1 else lnh2 Dng 3: if(iu_kin){ }else if(iu_kin){ }else if(iu_kin){ } }else{ } V d: Chng trnh kim tra xem ngy hin ti c phi ch nht hay khng import java.util.Date; public class TestIf { public static void main( String args[ ] ){ Date today = new Date(); if( today.getDay() == 0 ){ System.out.println(Hom nay la chu nhat\n); } else{ System.out.println(Hom nay khong la chu nhat\n" ); } } }

2.4.2 Mnh switch-case

switch (choice) { case 1: ... break; case 2: ... break; case 3: ... break; case 4: ... break; default: // bad input ... break; } Ch : V d: import javax.swing.JOptionPane; public class TestSwitch { public static void main(String[] args) { char c; String str=JOptionPane.showInputDialog(null,"Nhap vao ky tu?"); c = str.charAt(0); switch(c) { case 'a': case 'e': case 'i': case 'o': case 'u': System.out.println("Ky tu nay la nguyen am"); break; default:

System.out.println("Ky tu nay la phu am"); } System.exit(0); // kt thc chng trnh } }


2.4.3 Vng lp for

for(<khi to>; <iu kin lp>; <bc nhy>) <khi lnh>; V d: Chng trnh tnh tng cc s l t 1 n 100 public class TestFor { public static void main(String[] args) { int tong = 0; for(int i=1; i<=100; i+=2) tong+=i; System.out.println(tong); } }
2.4.4 Vng lp while

while (<biu thc boolean>) <khi lnh>; V d: on m tnh tng cc s l t 1 n 100 int tong = 0, i = 1; while (i<=100) { tong+=i; i+=2; } System.out.println(tong);
2.4.5 Vng lp do-while

do { <khi lnh>; } while <biu thc boolean>;

V d: on m tnh tng cc s l t 1 n 100 int tong = 0, i=1; do { tong+=i; i+=2; } while (i<=100); System.out.println(tong); 2.5 Nhp d liu t bn phm C mt s cch khc nhau nhp d liu t bn phm, sau y xin a ra mt cch s dng class Scanner trong gi tin ch java.util nh sau: - Khi to i tng Scanner gn vi lung chun input System.in Scanner in = new Scanner(System.in); - S dng cc method khc nhau ca Scanner c d liu input o c mt dng d liu input: System.out.print("What is your name? "); String name = in.nextLine(); o c d liu kiu s nguyn: System.out.print("How old are you? "); int age = in.nextInt(); Cc method khc: nextShort(), nextFloat(), nextDouble(),nextBoolean() .v.v. V d: Chng trnh cho php nhp tn, tui. In ra li cho v d on tui nm sau ca ngi import java.util.*; public class InputTest{ public static void main(String[] args){ Scanner in = new Scanner(System.in); // get first input System.out.print("What is your name? "); String name = in.nextLine(); // get second input System.out.print("How old are you? "); int age = in.nextInt();

// display output on console System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1)); } } Vic nhp k t t bn phm c mt cch n gin hn s dng Scanner, xem v d sau: import java.io.*; class InputChar { public static void main(String args[]) { char ch = ; try{ ch = (char) System.in.read(); } catch(Exception e){ System.out.println(Nhp li!); } System.out.println(Ky tu vua nhap: + ch); } } 2.6 Bi tp chng 2 Bi tp 1: Vit chng trnh in ra h tn, ngy sinh ca mnh trn 2 dng, thm cc ch thch v class, tc gi, cc dng code Bi tp 2: Vit chng trnh nhp vo im bi thi ca mt sinh vin. Xp loi cn c theo tiu ch sau: im >= 90: loi A 80<=im<90: loi B 70<=im<80: loi C 60<=im<70: loi D im <60: loi F Bi tp 3: Vit chng trnh nhp vo t bn phm 2 s thc. Cho php la chn tnh tng, hiu, tch, thng ca 2 s

CHNG 3
M u

LP V I TNG

- T khi ra i cho n nay lp trnh hng i tng (OOP) chng t c sc mnh v vai tr ca n trong cc n tin hc - Lp trnh OOP l mt phng php mnh m v hiu qu xy dng nn nhng chng trnh ng dng trn my tnh - phn ny chng ta tm hiu cc vn c bn ca lp trnh hng i tng trong Java thng qua vic to cc lp, cc i tng v cc tnh cht ca chng 3.1 Khi nim - Lp c xem nh mt khun mu (template) ca i tng. N bao gm cc thuc tnh (properties) ca i tng v cc phng thc (method) tc ng ln cc thuc tnh. o V d: Lp SinhVien c cc thuc tnh MSV, im, hnh kim, c cc phng thc hc tp, thc hnh, gii tr .v.v. - i tng l mt th hin (class instance) ca lp. Mi i tng c mt lp nh ngha cc d liu v hnh vi ca n. o V d: Mi bn sinh vin c th l mt th hin (hay i tng) ca lp SinhVien 3.2 Khai bo lp class <ClassName> { <kiu d liu> <field_1>; <kiu d liu> <field_2>; constructor method_1 method_2 } class: l t kha ca java ClassName: l tn chng ta t cho lp field_1, field_2: cc thuc tnh (cc bin, hay cc thnh phn d liu ca lp) constructor: l phng thc xy dng, khi to i tng ca lp.

method_1, method_2: l cc phng thc (c th gi l hm) th hin cc thao tc x l, tc ng ln cc thuc tnh ca lp. V d: class Pencil { public String color = red; public int length; public float diameter; public static long nextID = 0; public void setColor (String newColor) { color = newColor; } } 3.3 Thuc tnh ca lp class <ClassName> { // khai bo nhng thuc tnh ca lp <tin t> <kiu d liu> field1; // } Trong - Kiu d liu c th l kiu d liu c s hoc kiu d liu i tng tham chiu o boolean, char, byte, short, int, long, float, double - Tin t bao gm: o Ch nh truy xut thuc tnh lp + cc b ngha loi thuc tnh nu c (Cc b ngha loi thuc tnh c th l static hoc final hoc c 2) - Sau tn trng c th c km theo gi tr khi to Ch nh truy xut thuc tnh lp - private: C th truy cp thuc tnh ny ch bn trong lp khai bo - package (~ khng c ch nh truy xut): C th truy cp t cc lp trong cng gi (package) v trong bn thn lp khai bo - protected: C th truy cp t cc lp trong cng gi, cc lp tha k v bn thn lp khai bo

- public: C th c truy cp t bt k mt lp no V d: public class Pencil { public String color = red; public int length; public float diameter; private float price; public static long nextID = 0; public void setPrice (float newPrice) { price = newPrice; } } public class CreatePencil { public static void main (String args[]){ Pencil p1 = new Pencil(); p1.price = 0.5f; } } %> javac Pencil.java %> javac CreatePencil.java CreatePencil.java:4: price has private access in Pencil p1.price = 0.5f Cc b ngha loi thuc tnh - static o Ch mt bn duy nht ca thuc tnh static c tn ti, chia s gia cc i tng ca cng lp cha thuc tnh ny o C th c truy cp trc tip trong bn thn lp khai bo (truy cp trong hm main) o Nu truy cp t bn ngoi lp khai bo, phi km theo tn lp trc tn thuc tnh System.out.println(Pencil.nextID); hay thng qua mt i tng ph thuc vo lp khai bo o T bn ngoi lp, cc thuc tnh non-static phi c truy cp thng qua tham chiu i tng V d:

public class CreatePencil { public static void main (String args[]){ Pencil p1 = new Pencil(); Pencil.nextID++; System.out.println(p1.nextID); //Result? 1 Pencil p2 = new Pencil(); Pencil.nextID++; System.out.println(p2.nextID); //Result? 2 System.out.println(p1.nextID); //Result? Still 2 } } Ch : y ch l mt v d minh ha cho thuc tnh static, n khng phi l mt thit k tt - final o Khi c khi to, gi tr khng th thay i o Thng c s dng cho cc hng s o Thuc tnh static + final phi c khi to ngay khi khai bo o Thuc tnh non-static + final phi c khi to ngay khi mt i tng ca lp c to ra Khi to gi tr thuc tnh Khng nht thit l hng s, ta c th khi to gi tr cho mi bin nu c quyn Nu khng khi to, gi tr khi to mc nh s ph thuc vo loi thuc tnh Type Initial Value boolean false char \u0000 byte, short, int, long 0 float +0.0f double +0.0 object reference null

3.4 Phng thc ca lp Khai bo phng thc lp <Tin t> <kiu tr v> <Tn phng thc> (<danh sch i s>) { <khi lnh>; } xc nh quyn truy xut ca cc i tng khc i vi cc phng thc ca lp ngi ta thng dng cc tin t sau: - Cc ch nh truy xut ca phng thc (cng ngha vi thuc tnh): public, protected, private - Cc b ngha loi phng thc: static, final, abstract, synchronized, native, volatile <kiu tr v>: c th l kiu void, kiu c s hay mt lp. <Tn phng thc>: t theo qui c ging tn bin. <danh sch i s>: c th rng Cc b ngha loi phng thc: - static: Phng thc dng chung cho tt c cc th hin ca lp, ch c th truy cp n cc thuc tnh hoc phng thc static trong cng lp - final: phng thc c thuc tnh ny khng c ghi (overridden) trong cc lp tha k - abstract: phng thc khng cn ci t, s c ci t trong cc lp tha k o VD: abstract void sampleMethod( ); Li gi phng thc: - S dng ton t (.) o reference.method(arguments) - Vi phng thc static o Bn ngoi class, tham chiu reference c th l tn class hoc tham chiu i tng ca class o Bn trong class, khng cn tham chiu reference - Vi phng thc non-static: o reference phi l tham chiu i tng Gi tr ca cc i s truyn vo trong li gi phng thc: Khi i s khng phi l mt tham chiu i tng, n truyn vo mt bn copy gi tr ca i s:

V d: public void method1 (int a) { a = 6; } public void method2 ( ) { int b = 3; method1(b); // now b = ? b = 3 } Khi i s l mt tham chiu i tng, n truyn vo mt bn copy ca tham chiu ti i tng V d: class PassRef{ public static void main(String[] args) { Pencil plainPencil = new Pencil("PLAIN"); System.out.println("original color: " + plainPencil.color); paintRed(plainPencil); // truyen vao tham chieu doi tuong System.out.println("new color: " + plainPencil.color); } public static void paintRed(Pencil p) { p.color = "RED"; // doi mau thanh do p = null; // sau do tro toi null } } Kt qu chy: Original color: PLAIN New color: RED Qu trnh hot ng: - i tng Pencil vi mu plain c to ra, bin plainPencil tham chiu n n - In ra mu ban u ca i tng Pencil c to ra - Thc hin gi hm paintRed i sang mu . Hm ny hot ng nh sau: o Copy mt bn ca tham chiu i tng plainPencil sang bin p lm i s truyn vo hm (lc ny c 2 tham chiu ti i tng Pencil)

o Thc hin i mu ca i tng va c to ra thnh RED thng qua tham chiu p o Tham chiu p c gn gi tr NULL, lc ny khng tr vo i tng Pencil na - In ra mu ca i tng sau khi i mu (RED) Np chng phng thc (method overloading) Mt class c th c nhiu cch thc c cng tn nhng khc nhau v danh sch i s public class Pencil { ... public void setPrice (float newPrice) { price = newPrice; } public void setPrice (Pencil p) { price = p.getPrice(); } } Trnh dch phn bit s khc nhau ca 2 danh sch i s bng cch so snh s i s, kiu ca cc i s trong 2 danh sch (c phn bit th t) 3.5 Ch nh truy xut lp Mt lp cng c th c cc ch nh truy xut i trc tn lp - public o C th truy xut t bt k u o Khng c t kha ny, lp ch c th truy cp trong phm vi cng gi - abstract o Lp ny c thit k nhm to ra mt lp c cc c tnh tng qut, n nh ngha cc thuc tnh chung cho cc lp con ca n o Khng th to i tng (th hin) cho nhng lp abstract - final o Lp khng th c tha k

3.6 To i tng V d Class: class Student { private long idNum; private String name = empty; private String address; private static long nextID = 0; } To i tng mi: Student std = new Student(); Trong Java, mt i tng c to ra bng cch s dng phng thc new
3.6.1 Constructor

L mt phng thc c bit ca lp. Dng gi t ng khi khi to mt th hin (i tng) ca lp, c th dng khi gn nhng gi tr mc nh - Khng c gi tr tr v, c th c hoc khng c tham s - Phi c cng tn vi lp v c gi n khi dng t kha new - Nu mt lp khng c constructor, Java cung cp mt constructor mc nh, nhng thuc tnh ca lp s c khi to gi tr mc nh (kiu s = 0, logic = false, i tng = null) Ch : Thng thng an ton, d kim sot v lm ch m ngun mi lp nn khai bo mt constructor V d class Student { private long idNum; private String name= empty; private String address; // bien static chia se giua cac doi tuong cua lop Student private static long nextID = 0; Student( ) { // gan gia tri nextID cho idNum, sau do tang nextID len 1 idNum = nextID++; } Student(String studentName, String addr) { this( ); name = studentName;

address = addr; } } Xem xt trc cha c bt k i tng Student no c to ra. Xem xt hai trng hp sau: TH1: Student std = new Student() Khi constructor khng c tham s Student() c gi khi to cc gi tr cho i tng Student: idNum = 0, name = empty, address = null, nextID = 1 TH2: Student std = new Student(Hai, null); Student std1 = new Student(Hau, Hung Yen); Trong trng hp ny ta to ra hai i tng Student s dng constructor c tham s u vo. Cc gi tr c khi to nh sau: i tng c tham chiu bi std: idNum = 0, name = Hai, address = null, nextID = 1 i tng c tham chiu bi std1: idNum = 1 (gi tr nextID hin ti), name = Hau, address = Hung Yen, nextID = 2 (gi tr nextID sau khi tng)
3.6.2 Bin this

- Bin this c s dng nh mt tham chiu n i tng hin ti - Trong mt constructor c th dng bin this gi mt contructor khc. N phi c t trong dng u tin ca contructor s dng n. (Xem v d v constructor) - Bin this khng th c s dng trong mt phng thc static (??) V d: class Student { private long idNum; private String name; private String address; private static long nextID = 0; private static LinkedList studentList = new LinkedList(); ... Student(String name, String address) { this.name = name; this.address = address;

} ... private void inQueue() { studentList.add(this); // Them vao danh sach lien ket } ... } 3.7 Gi Package
3.7.1 Package

Tp hp cc class c th c t chc thnh cc nhm khc nhau gi l gi (package) Mt s gi trong th vin chun Java nh java.lang, java.util L do chnh ca vic s dng gi l m bo tnh duy nht ca tn lp Cc lp c cng tn c th c t cc gi khc nhau Cch t tn gi: hostname.com -> com.hostname Khai bo package v v tr t file source code thm mt class vo mt package lm theo 2 bc: Khai bo tn gi trn cng ca file source code package com.hostname.corejava; public class Employee { ... } t file source code vo th mc con theo ng dn c ch ra tn gi. y file Employee.java c lu tr trong th mc con: ../com/hostname/corejava/

3.7.2 Class importation

Hai cch truy cp mt class c thuc tnh public m thuc mt package khc Khai bo y tn gi trc tn class Vd:

java.util.Date today = new java.util.Date( ); import package bng cch s dng cu lnh import pha trn cng ca source code, sau cu lnh khai bo package. Khi khng cn khai bo tn gi trc tn class trong li gi import ch mt class t gi java.util import java.util.Date; Date today = new Date( ); import tt c cc class trong gi java.util (khng bao gm cc gi con sub package) import java.util.*; Date today = new Date( ); V d: package vn.edu.hua.javacore; import javax.swing.*; public class SampleClass { MenuEvent c; } Dch chng trnh: javac SampleClass.java Kt qu dch: SampleClass.java:4: cannot find symbol Symbol : class MenuEvent Location: class SampleClass MenuEvent c; ^ 1 error ?? MenuEvent l class trong package javax.swing.event, l subpackage ca gi javax.swing. V vy cn khai bo: import javax.swing.event.*; Trng hp 2 lp cng tn c t hai gi khc nhau V d: import java.util.*; import java.sql.*; Date today = new Date( ); //ERROR:java.util.Date //or java.sql.Date? Nu ch cn s dng class Date mt trong 2 gi, import thm class import java.util.*;

import java.sql.*; import java.util.Date; Date today = new Date( ); // java.util.Date Nu cn s dng class Date c 2 gi, s dng mt khai bo y tn gi trc tn class import java.util.*; import java.sql.*; java.sql.Date today = new java.sql.Date( ); java.util.Date nextDay = new java.util.Date( );
3.7.3 Qui cch t tn

Qui cch t tn (naming convention) l nhng cch t tn c s dng rng ri nh mt template chung. Bn nn tun th chng trnh d c, d qun cho bn thn v cc lp trnh vin khc khi c code. - Package names: Cc ch ci vit thng o E.g. java.util, java.net, java.io . . . - Class names: Vit hoa tt c cc ch ci u ca mi t o E.g. File, Math, DemoJavaCore . . . o Trnh xung t vi tn gi, cc t kha chun - Variable, field & method names: Tng t tn lp, vit thng i vi ch ci u tin o E.g. x, out, abs, firstName, lastName, getFirstName(), setFirstName() . . . - Constant names: Vit hoa tt c cc ch ci o E.g. PI . . . 3.8 Bi tp chng 3

CHNG 4 JAVA

C IM HNG I TNG TRONG

4.1 Tnh ng gi Xem xt cc v d sau y: V d 1: public class Student { public long idNum; public String name = empty;

public String address; public static long nextID = 0; Student( ) { idNum = nextID++; } Student(String studentName, String addr) { this( ); name = studentName; address = addr; } } Problem: Tt c cc thuc tnh l public, c th c chnh sa bi tt c cc lp khc truy cp n. V d 2: Ci tin v d 1, tt c cc thuc tnh c thay i t public -> private public class Student { private long idNum; private String name = empty; private String address; private static long nextID = 0; Student( ) { idNum = nextID++; } Student(String studentName, String addr) { this( ); name = studentName; address = addr; } } Problem: Lm th no truy cp cc thuc tnh?

V d 3: Ci tin Vd 2, thm vo cc phng thc truy cp thuc tnh public class Student { private long idNum; private String name = empty; private String address; private static long nextID = 0; Student( ) { idNum = nextID++; } Student(String studentName, String addr) { this( ); name = studentName; address = addr; } public long getID() {return idNum;} public String getName() {return name;}; public String getAddress() {return address;} } Note: By gi cc thuc tnh idNum, name & address l ch c (read-only) i vi cc lp khc V d 4: Ci tin Vd 3, thm vo cc phng thc set gn gi tr cho cc thuc tnh class Student { private long idNum; private String name = empty; private String address; private static long nextID = 0; // constructors. . . public long getID() {return idNum;} public String getName() {return name;}; public String getAddress() {return address;} public void setName(String newName) {name = newName;} public void setAddress(String addr) {address = addr;}

} Note: By gi ta c th set gi tr cho cc thuc tnh name & address. Nhng idNum th khng Tnh ng gi d liu: Giu i mt phn chi tit ci t v cc d liu cc b ca n (bng cch gii hn quyn truy cp) v ch cng b ra ngoi nhng g cn thit trao i d liu vi cc i tng khc Trong cc v d trn ta thy tnh ng gi c thc hin bng cch khng cho php truy cp trc tip n cc thuc tnh bng cch dng t kha private ngn cm truy cp trc tip v cung cp cc phng thc get, set qun l vic truy cp d liu nu cn thit. 4.2 Tnh k tha
4.2.1 Tnh k tha

Tnh k tha (inheritance): Ta c th to ra mt lp mi trn c s mt lp c c to ra trc . Bng cch k tha, ta c th s dng li cc phng thc v thuc tnh c khai bo trong lp c m khng phi khai bo li, v cng c th b xung cc phng thc, thuc tnh cho lp mi gii quyt bi ton vi nhng yu cu mi t ra. class A extends B { // } A: Subclass, B: Superclass Subclass ~ lp con (lp dn xut) & Superclass lp cha V d: Lp con Student k tha cc thuc tnh, phng thc t lp cha Person Superclass: Person public class Person{ private String name; public Person ( ) { name = no_name_yet; } public Person ( String initialName ) {

this.name = initialName; } public String getName ( ) { return name; } public void setName ( String newName ) { name = newName; } } Subclass: Student extends Person public class Student extends Person { private int studentNumber; public Student ( ) { super( ); studentNumber = 0; } public Student (String initialName, int initialStudentNumber) { super(initialName); studentNumber = initialStudentNumber; } public int getStudentNumber ( ) { return studentNumber; } public void setStudentNumber (int newStudentNumber ) { studentNumber = newStudentNumber; } } Ch : Nu mt lp to ra khng c khai bo k tha t mt lp khc th mc nh n c k tha t lp Object (lp gc trong Java). Trong v d trn lp Person k tha t lp Object.

Lp dn xut Mt lp dn xut bao gm 2 phn: - Cc thuc tnh, cch thc ca ring n (locally) - Cc thuc tnh, cch thc k tha t lp cha ? Lin h class Student trong v d trn Constructor trong lp dn xut - Constructor ca lp dn xut c th triu gi constructor ca lp cha bng cch s dng phng thc super o V d: 2 phng thc super trong class Student gi n 2 constructor trong lp cha Person - Nu khng c phng thc super c s dng th mc nh phng thc super() c thm vo trong dng lnh u tin ca constructor ca lp dn xut s gi n constructor khng cha tham s ca lp cha o V d: Phng thc super() trong constructor u tin ca lp Student c th c b i - Constructor khng th c tha k
4.2.2 Np chng phng thc

Np chng phng thc (Overloading method): Cung cp nhiu phng thc c cng tn nhng khc nhau v danh sch tham s - Xut hin trong cng mt class hay trong class dn xut - C cng tn phng thc - Khc nhau v danh sch tham s (kiu, s lng, th t) - C th c kiu tr v khc nhau V d: phng thc print() trong lp java.io.PrintStream cho php x l print vi cc tham s u vo khc nhau public void print(boolean b) public void print(char c) public void print(String s)
4.2.3 Ghi phng thc

Ghi phng thc (Overriding method): Thay th ni dung thc hin ca mt phng thc trong lp cha bi ni dung thc hin ring ca lp con - Xut hin trong lp dn xut - C cng tn phng thc - C cng kiu tr v

- Ch nh truy xut ca phng thc c ghi khng c thu hp hn so vi phng thc trong lp cha m ch c th m rng hn o Nu phng thc trong lp cha l public, phng thc trong lp con ch c th l public o Nu phng thc trong lp cha l protected, phng thc trong lp con c th l public hay protected o Nu phng thc trong lp cha l package, phng thc trong lp con c th l package, protected, public o Nu phng thc trong lp cha l private, n khng c tha k nn khng th ghi trong lp con - Phng thc c ghi ch c th throws ra nhng exception nm trong danh sch lp cha c th throws ra, c th l lp dn xut ca cc exception Khi no c th ghi phng thc ? Mt phng thc ch c th c ghi nu n c th c truy cp trong trong lp dn xut hay ni cch khc n c th c tha k - Phng thc private trong lp cha o Khng th c ghi o Nu trong lp con cng cha ng mt phng thc nh vy, phng thc hon ton khng lin quan ti phng thc trong lp cha - Phng thc l package trong lp cha o C th c ghi nu lp dn xut nm cng gi vi lp cha - Phng thc protected, public o Lun lun c th ghi Mt s v d v overloading v overriding: (Phn gii thch xin dnh cho bn c) V d 1: package P1; public class Base { private void pri( ) { System.out.println(Base.pri()); } void pac( ) { System.out.println(Base.pac()); } protected void pro( ) { System.out.println(Base.pro()); } public void pub( ) { System.out.println(Base.pub()); } public final void show( ) {

pri(); pac(); pro(); pub(); } } package P2; import P1.Base; public class Concrete1 extends Base { public void pri( ) { System.out.println(Concrete1.pri()); } public void pac( ) { System.out.println(Concrete1.pac()); } public void pro( ) { System.out.println(Concrete1.pro()); } public void pub( ) { System.out.println(Concrete1.pub()); } } Concrete1 c1 = new Concrete1(); c1.show( ); Output? Base.pri() Base.pac() Concrete1.pro() Concrete1.pub() V d 2: package P1; import P2.Concrete1; public class Concrete2 extends Concrete1 { public void pri( ) { System.out.println(Concrete2.pri()); } public void pac( ) { System.out.println(Concrete2.pac()); } public void pro( ) { System.out.println(Concrete2.pro()); } public void pub( ) { System.out.println(Concrete2.pub()); } }

Concrete2 c2 = new Concrete2(); c2.show( ); Output?

Base.pri() Concrete2.pac() Concrete2.pro() Concrete2.pub() V d 3: package P3; import P1.Concrete2; public class Concrete3 extends Concrete2 { public void pri( ) { System.out.println(Concrete3.pri()); } public void pac( ) { System.out.println(Concrete3.pac()); } public void pro( ) { System.out.println(Concrete3.pro()); } public void pub( ) { System.out.println(Concrete3.pub()); } } Concrete3 c3 = new Concrete3(); c3.show( ); Output? Base.pri() Concrete3.pac() Concrete3.pro() Concrete3.pub()
4.2.4 Trng n

Nu mt thuc tnh xut hin c trong lp con v lp cha (c th khc kiu). Khi t lp con nu mun truy xut ti thuc tnh trong lp cha, phi dng t kha super i km V d: class Book { String author, title, pu; // pu is publisher } //=============================================== class ShopBook extends Book { String pu; // pu is purchaser

public ShopBook(String a, String t, String pub, String purch) { author=a; title=t; super.pu=pub; pu=purch; } public String toString() { return title + " by " + author + " (publisher: " + super.pu + ")" + "\npurchaser: " + pu; } public static void main(String[] args) { ShopBook b = new ShopBook("H Jones","Killjoy", "AB Pub Inc", "V Smith"); System.out.println(b); } }
4.2.5 Class Object

Lp Object l lp cha ca mi lp trong Java, mi lp trong Java tha k t lp ny m khng cn khai bo extends Mt s phng thc ca lp Object - equals: cho bit hai tham chiu i tng c cng gi tr hay khng - toString: tr li mt xu i din cho i tng > Khi cn s dng trong cc class c th, c th thc hin overriden method cho ph hp vi yu cu t ra > Tham kho 2 phng thc ny trong class String 4.3 Tnh a hnh Xem xt v d sau: class SuperShow {

public String str = SuperStr; public void show( ) { System.out.println(Super.show: + str); } } class ExtendShow extends SuperShow { public String str = ExtendedStr; public void show( ) { System.out.println(Extend.show: + str); } public static void main (String[] args) { ExtendShow ext = new ExtendShow( ); SuperShow sup = ext; sup.show( ); //1 ext.show( ); //2 methods invoked reference System.out.println(sup.str = + sup.str); //3 System.out.println(ext.str = + ext.str); //4 field access } } Output? Extend.show: ExtendStr Extend.show: ExtendStr sup.str = SuperStr ext.str = ExtendStr Tnh a hnh (Polymorphism) - Tnh a hnh th hin qua vic: cng mt phng thc nhng c ni dung thc hin khc nhau trn cc i tng khc nhau o V d: Phng thc show() trong v d trn - Phng thc gi c xc nh thng qua i tng c tham chiu, khng thng qua kiu khai bo ca tham chiu o V d: bin ext, sup u tham chiu n i tng c kiu SuperShow do phng thc show() ca class SuperShow c gi

through

object

- Thuc tnh gi c xc nh thng qua kiu khai bo ca tham chiu o V d: Cc mc 3, 4 trong v d trn Tnh tng thch kiu (type compatibility) V d. Student is subclass of Person public class TypeTest { // khai bao mang static static Person[] p = new Person[10];

static { // doan ma chay khoi tao gia tri cho mang for (int i = 0; i < 10; i++) { if(i<5) p[i] = new Student(); else p[i] = new Person(); } } public static void main (String args[]) { Person o1 = (Person)p[0]; Person o2 = p[0]; Student o3 = p[0]; // 1 Student o4 = (Student)p[0]; Student o5 = p[9]; // 2 Student o6 = (Student)p[9]; // 3 int x = p[0].getStudentNumber(); // 4 } } Thc hin dch: javac TypeTest.java TypeTest.java:17 incompatible types found : Person required : Student Student o3 = p[0]; ^ TypeTest.java:19 incompatible types

found : Person required : Student Student o5 = p[9]; ^ TypeTest.java:21: cannot resolve symbol symbol : method getStudentNumber () location: class Person int x = p[0].getStudentNumber(); ^ 3 errors Li ti v tr 1, 2: Khai bo ca p[0], p[9] c kiu Person, l lp cha ca lp Student, do vy khng cho php gn gi tr cho mt bin c kiu Student Li ti v tr 4: p[0] c khai bo c kiu Person, tham chiu ti i tng Student, tuy nhin trong class Person khng c method getStudentNumber() do khng th gi phng thc . Thc hin thm phng thc getStudentNumber() vo class Person, in ra gi tr ca x, khi theo tnh a hnh gi tr in ra l 0 (phng thc getStudentNumber() ca class Student c gi) public int getStudentNumber ( ) { return 4; } Thc hin kha cc dng lnh li bin dch ti cc v tr 1, 2, 4 li v chy chng trnh: java TypeTest Exception in thread main java.lang.ClassCastException: Person at TypeTest.main(TypeTest.java:20) Li ti v tr 3: Li p kiu, p[9] tham chiu ti i tng Person nn khng th p v kiu Student cu lnh pha trn y: Student o4 = (Student)p[0]; cu lnh ny hp l v p[0] tham chiu n i tng Student ?? Nu thc hin p kiu t Student -> Person c hp l khng Hp l bi Student l lp con, n tha k cc thuc tnh, phng thc ca Person, ngoi ra n cn cha cc thuc tnh, phng thc ca ring n. Kim tra kiu ca mt i tng

S dng ton t instanceof V d: if ( obj instanceof String) { String str2 = (String)obj; } 4.4 Lp tru tng, Lp v sinh & Giao tip
4.4.1 Lp tru tng Abstract class

Lp ny c thit k nhm to ra mt lp c cc c tnh tng qut, n nh ngha cc thuc tnh chung cho cc lp con ca n Lp tru tng: c khai bo vi t kha abstract, thng c t nht mt phng thc tru tng, l phng thc cha c ci t, vic ci t c thc hin trong cc lp con tha k public abstract class Person { protected String name; ... public abstract String getDescription(); ... } Class Student extends Person { private String code; ... pulic String getDescription() { return student name: + name + /n student code: + code; } ... } Class Employee extends Person { private float salary; ... pulic String getDescription() { return an employee with a salary of $ + salary; } ... }

- Cc phng thc cha c ci t trong lp tru tng phi khai bo abstract - Nu class c cha phng thc abstract, class phi c khai bo abstract - Khi tha k t mt lp tru tng c 2 trng hp xy ra: o Nu lp con c khai bo abstract (cng l mt lp tru tng), n c th ch cn ci t mt vi phng thc abstract ca lp cha o Nu lp con khng phi lp tru tng, n phi ci t tt c cc phng thc abstract ca lp cha - Khng th to cc i tng ca mt lp tru tng nhng c th khai bo bin thuc kiu lp tru tng tham chiu n cc i tng thuc lp con ca n o Vd: Person p = new Student( );
4.4.2 Lp v sinh Final class

Lp m ta khng th c lp dn xut t n (khng c lp con) gi l lp v sinh, hay ni cch khc khng th k tha c t mt lp v sinh. Lp v sinh dng hn ch, ngn nga cc lp khc dn xut t n. khai bo mt lp l lp v sinh, chng ta dng t kha final class. V d: Lp String ca Java l final class, ta khng th tha k v vit phng thc length() ca ring mnh public final class String extends Object implements Serializable, Comparable<String>, CharSequence
4.4.3 Giao tip - Interface

Khi nim: Interface ch ra nhng g cc class nn lm, m khng ch ra phi lm nh th no. Interface khng phi l class n l tp hp cc yu cu cho class mun thc thi interface Vd: public interface Comparable { int compareTo(Object otherObject); } Interface ny yu cu bt k class no thc thi n phi ci t phng thc compareTo, phng thc ny phi c mt tham s u vo c kiu Object v tr li mt s integer Cc t ch nh truy xut (Modifiers) - public

- package - abstract: ngm nh tt c cc interface u c t ch nh ny Thuc tnh v phng thc trong interface Interface ch cha cc thuc tnh l cc hng, ch cn khai bo kiu d liu v tn hng, chng s c hiu mc nh l public, static, final m khng cn khai bo. Tt c cc hng phi c khi to gi tr Cc phng thc trong interface c hiu mc nh l public abstract, chng khng th l static hay final V d: Interface Verbose { int SILENT = 0; int TERSE = 1; int NORMAL = 2; int VERBOSE = 3; void setVerbosity (int level); int getVerbosity(); } Thc thi mt interface - implement interfaces 2 bc: 1. Khai bo thc thi class Employee implements Comparable { . . . } 2. Ci t tt c cc phng thc trong interface public int compareTo(Object otherObject) { Employee other = (Employee) otherObject; if (salary < other.salary) return -1; if (salary > other.salary) return 1; return 0; } Ch : Mc d phng thc compareTo trong interface khng khai bo public nhng n c hiu ngm nh nh vy, do trong khi ci t class Employee bt buc phi khai bo public Nu mt class thc thi interface m cha ci t tt c cc phng thc trong interface th n phi khai bo abstract class Mt class c th thc thi nhiu interface, phn cch bi du phy class Employee implements Comparable, Cloneable {. . .} To th hin cho interface Khng th to th hin cho mt interface

public interface Comparable { ...} Comparable x = new Comparable( ); Khng c php C th khai bo bin c kiu interface Comparable x; nhng chng phi tham chiu ti mt class thc thi interface class Employee implements Comparable { ... } x = new Employee( ); Tnh tha k trong interface Interface h tr a tha k, mt interface c th tha k t nhiu interface khc Interface cha: Superinterfaces Interface con: Subinterfaces V d: public interface SerializableRunnable extends java.io.Serializable, Runnable { . . . } Khi no s dng interface Xem xt v d sau: interface Act { void act(); } class Actor1 implements Act { public void act() { System.out.println("To be, or not to be"); } } class Actor2 implements Act { public void act() { System.out.println("Wherefore art thou Romeo?"); } }

public class TryOut { public static void main(String args[]) { Actor1 hamlet = new Actor1(); Actor2 juliet = new Actor2(); tryout(hamlet); tryout(juliet); } private static void tryout(Act actor) { actor.act(); } } - cung cp mt giao din lp trnh ti ngi s dng, che du i s thc thi pha sau n o y l tnh cht ng gi (encapsulation) ca OOP o S thc thi pha sau c th thay i m khng nh hng ti ngi s dng - c cc class c lp vi nhau cng ci t mt phng thc o Gia cc class khng c quan h tha k o Cc class c lp c th cng thc thi mt interface v ci t cc phng thc theo cch ca ring chng - gii quyt vn a tha k trong OOP o Mt class c th thc thi cng lc nhiu interface trong khi n ch c th tha k t mt class Update mt interface hay abstract class ? C mt interface hay abstract class c pht trin trc . Yu cu update t ra: - Thm phng thc cho interface - Thm phng thc abstract cho abstract class Phi update li code trong tt c cc class thc thi interface hoc tha k abstract class Gii php ? S dng thm mt interface hay mt abstract class khc tha k t interface, abstract class c, thc hin thm phng thc mi v s dng interface hay abstract mi to ra ny cho cc lp thc thi hay tha k So snh interface v abstract class

Mt class ch c th tha k t mt abstract class nhng n c th thc thi nhiu interface Mt abstract class c th cha cc phng thc c ci t ( gim s lp li code trong cc lp con tha k), c th cha cc phn (thuc tnh, phng thc) khai bo static, protected. Mt interface ch cho php cha cc hng s, cc phng thc public m cha c ci t Abstract class thng c dng cho nhng lp thuc top-level trong cy tha k nh ngha nhng tnh cht chung nht m cc lp con tha k phi thc hin, n t thay i, c tnh gii hn truy xut cao hn (in hnh l s dng cho thit k framework). Interface thng dng cho cc thit k thng phi update cc thay i mang tnh giao tip vi bn ngoi 4.5 Bi tp chng 4

CHNG 5

MNG V XU

5.1 Mng Khi nim: Mng l tp hp nhiu phn t c cng tn, cng kiu d liu v mi phn t trong mng c truy xut thng qua ch s ca n trong mng Khai bo mng <kiu d liu> <tn mng>[]; <kiu d liu>[] <tn mng>; V d: int arrInt[]; int[] arrInt; Person[] p; int[] arrInt1, arrInt2, arrInt3; Khai bo khng hp l: int[5] iarray; int iarray[5]; Cp pht iarray = new int[100]; p = new Person[10]; Khi to Chng ta c th khi to gi tr ban u cho cc phn t ca mng khi n c khai bo int[] iarray = {1, 2, 3, 5, 6}; char[] carray = {a, b, c}; String arrString[] = {ABC, EFG, GHI};

Ch : Lun khi to hoc cp pht mng trc khi s dng Truy cp mng Ch s mng trong Java bt u t 0. V vy phn t u tin c ch s l 0, v phn t th n c ch s l n-1. Cc phn t ca mng c truy xut thng qua ch s ca n c t gia cp du ngoc vung []. iarray[3] = 0; carray[1] = z; Ly s phn t mng iarray.length

V d 1: Tm phn t nh nht, ln nht trong mt mng class MinMax2 { public static void main(String args[]) { int nums[] = { 99, -10, 100123, 18, -978, 5623, 463, -9, 287, 49 }; int min, max; min = max = nums[0]; for(int i=1; i < 10; i++) { if(nums[i] < min) min = nums[i]; if(nums[i] > max) max = nums[i]; } System.out.println("Min and max: " + min + " " + max); } } V d 2: Khi to v in ma trn class TwoD_Arr { public static void main(String args[]) { int t, i; int table[][] = new int[3][4]; for(t=0; t < 3; ++t) { for(i=0; i < 4; ++i) { table[t][i] = (t*4)+i+1; System.out.print(table[t][i] + ); } System.out.println(); }

} } 5.2 Xu Trong nhng ngn ng lp trnh khc (C chng hn), mt xu c xem nh mt mng cc k t. Trong java th khc, java cung cp mt lp String lm vic vi i tng d liu xu cng cc thao tc trn i tng d liu ny. C nhiu cch to i tng String: String str1 = new String("ABC"); String str2 = "ABC"; String str3 = new String(str2); Mt s thao tc c bn lien quan n xu: - int length() o Tr v di xu - str3 = str1 + str2 o Cng xu - String substring(int beginIndex, int lastIndex) o Tr v xu con t xu m - boolean str1.equal(str2) o So snh 2 xu - String str1.trim() o Loi b khong trng u cui - char charAt(int index) o Tr v k t v tr index - String toLowerCase() o Tr v mt xu mi vi tt c cc k t vit thng - String toUpperCase() o Tr v mt xu mi vi tt c cc k t vit hoa - int indexOf(String str) o Tr v v tr ca str trong xu cn tm bt u t 0, nu khng tn ti, tr li gi tr -1 So snh xu kim tra 2 xu c ging nhau hay khng s dng phng thc equal: str1.equal(str2) V d: str1 = Hello; str2=Hello; Khi str1.equal(str2) = true Nu so sash khng phn bit ch hoa, thng, dng phng thc equalsIgnoreCase Ch : Khng s dng ton t == kim tra s ging, hay khc nhau ca 2 xu

so sash 2 xu, quan tm n kt qu ln hn, nh hn hay ging nhau s dng phng thc: int compareTo(String other) result = str1.compareTo(str2); Nu result = 0 hai xu l ging nhau Nu result > 0 kt lun str1 > str2 Nu result < 0 kt lun str1 < str2 V d minh ha ly chui con t mt chui: class SubStr { public static void main(String args[]) { String orgstr = "Mot Hai Ba Bon"; // Lay chuoi con dung ham // public String substring(int beginIndex, int // endIndex) String substr = orgstr.substring(4, 7); System.out.println("Chuoi goc: " + orgstr); System.out.println("Chuoi con: " + substr); } } 5.3 Bi tp chng 5

CHNG 6

CN BN V LP TRNH GIAO DIN

6.1 Cn bn v lp trnh giao din


6.1.1 Gii thiu thit k GUI trong Java

Th vin h tr: tp hp cc lp java cung cp h tr thit k, xy dng GUI (Graphic User Interface Giao din ha ngi s dng) bao gm: - awt (java.awt.*) - swing (javax.swing.*) Trong ni dung ca phn ny, chng ta i tm hiu v AWT. lp trnh giao din v x l s kin trong AWT, cn s dng n cc class trong 2 gi: - java.awt.*; - java.awt.event.*;

Cc thnh phn ca AWT v mi quan h gia chng th hin qua cy tha k:

Nguyn tc xy dng GUI: - La chn mt khung cha: Frame, Window, Dialog, Applet, - To cc control: (buttons, text areas, list, choice, checkbox,...) - a cc control vo khung cha - Sp xp cc control trong khung cha (Layout). - Thm cc x l s kin (Listeners)
6.1.2 Cc thnh phn c bn Components

Tt c cc thnh phn cu to nn giao din GUI c gi l component. V d: Frame, Window, Dialog, Applet, TextFields, Labels, CheckBoxes, TextArea, Button, Choice, List, Scrollbars,

Gii thiu mt s thnh phn c bn (cc thnh phn cha gii thiu y, c th xem phn tham kho thm):
6.1.2.1 Nhn Label

Nhn c dng trnh by mt chui vn bn ra mn hnh Mt s phng thc ca Label: - public Label(); // to nhn - public Label(String s); // to nhn vi ni dung s - public Label(String s, int align); // to v canh l - void setText(String s); // t ni dung nhn - void setAlignment(int align); // canh l nhn - ... V d: import java.applet.Applet; import java.awt.*; public class DemoLabel extends Applet{ private Label label; public void init(){ Font font = new Font("Courier", Font.BOLD, 20); label = new Label("Thu nghiem voi Label"); label.setFont(font); add(label);

} } Kt qu:

6.1.2.2 Nt nhn Button

Mt s phng thc ca Button - Button(); // to nt nhn - Button(String s); // to nt nhn c tn s - void setLabel(String s); // i tn nt - String getLabel(); // ly tn nt nhn lng nghe s kin nhn nt ta cn ci t giao tip ActionListener. V d: import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class DemoButton extends Applet implements ActionListener { private Button blueButton; private Button whiteButton; private Button helloButton; public void init() { blueButton = new Button("Blue"); whiteButton = new Button("White"); helloButton = new Button("Hello"); blueButton.addActionListener(this); whiteButton.addActionListener(this); helloButton.addActionListener(this); add(blueButton); add(whiteButton); add(helloButton); } // Cai dat phuong thuc cua giao tiep ActionListener public void actionPerformed(ActionEvent event)

{ if(event.getSource() == helloButton) javax.swing.JOptionPane.showMessageDialog(this, "Hello !"); else{ if (event.getSource() == blueButton){ this.setBackground(Color.BLUE); }else if (event.getSource() == whiteButton){ this.setBackground(Color.WHITE); } repaint(); } } } Kt qu:

6.1.2.3 vn bn Text Field

vn bn cho php nhn d liu t bn phm trn mt dng Mt s phng thc - TextField(...); // cc cu t - void setEditable(boolean b); // t/tt ch nhp - void setEchoChar(char c); // t k t hin th lng nghe s kin cn ci t cc giao tip: - ActionListener: X l s kin sau khi hon thnh nhp d liu vo text field o Ci t phng thc actionPerformed - TextListener: X l s kin khi c s thay i gi tr text o Ci t phng thc textValueChanged V d: import java.applet.Applet; import java.awt.*; import java.awt.event.*;

public class DemoTextField extends Applet implements ActionListener { private TextField txtEdit; private TextField txtReadOnly; private TextField txtPass; private final StringPASSWORD = "Java"; public void init() { txtEdit = new TextField("Your name here"); txtPass = new TextField(12); // Hien thi password nhap vao duoi dang dau * txtPass.setEchoChar('*'); // Lang nghe su kien sau khi nhap xong password va go Enter txtPass.addActionListener(this); txtReadOnly = new TextField("This text is read only"); txtReadOnly.setEditable(false); add(txtEdit); add(txtPass); add(txtReadOnly); } public void actionPerformed(ActionEvent event) { if(txtPass.getText().equals(PASSWORD)) txtReadOnly.setText("Password is valid"); else txtReadOnly.setText("Invalid password !"); } } Kt qu:

6.1.2.4 La chn Choice

Choice cung cp kh nng la chn mt trong s cc hng mc sn c. Mt s phng thc - Choice(); // cu t - void addItem(String s); // thm item - String getItem(int index);// ly item c ch s index - String getSeclectedItem(); // tr v item c chn - int getSelectedIndex(); // tr v index ca item c chn Lp nghe ci t giao tip ItemListener. Ci t phng thc itemStateChanged(...) V d: Chng trnh cho php la chn font ch cho text bn cnh import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class DemoChoice extends Applet implements ItemListener { private Choice choice; private TextField txtText; private Font font; public void init() { choice = newChoice(); choice.addItem("TimesRoman"); choice.addItem("Courier"); choice.addItem("Helvetica"); choice.addItemListener(this); txtText = new TextField("Sample Text", 16); txtText.setEditable(false); font = new Font(choice.getItem(0), Font.PLAIN, 12); txtText.setFont(font); add(choice); add(txtText); } public void itemStateChanged(ItemEvent event) { font = new Font(choice.getSelectedItem(), Font.PLAIN, 12); txtText.setFont(font); // Thay doi font chu cho o text }

} Kt qu:

6.1.3 i tng khung cha Container

L cc thnh phn m c th cha cc thnh phn khc, c th v v t mu. Gm c: Frame, Applet, Panel, ScrollPane, Dialog, FileDialog.

Trong phn gii thiu v cc component c bn, ta c lm quen vi khung cha Applet, Applet s c gii thiu chi tit mt phn ring. y xin gii thiu v khung cha Frame, Panel cc khung cha thng hay c s dng.
6.1.3.1 Frame

- Frame c dng xy dng cc ng dng GUI chy c lp. - Frame l mt ca s c thanh tiu v cc ng bin. B cc mc nh ca Frame l BorderLayout. - Frame k tha t Window, n c th nghe cc s kin xy ra trn ca s khi ci t giao tip WindowListener. - Cc ng dng c lp thng to ra ca s k tha t lp Frame. Mt s phng thc: - add(Component comp) Tha k t class Container, dng add thm mt component vo khung cha nh label, button, - add(Component comp, int index) Thm vo khung cha mt v tr ch nh - setSize (width, height): Thit lp kch thc cho frame

- setVisible(boolean): Ci t vic hin th (true) hay khng hin th cho frame (false) V d: import java.awt.*; importjava.awt.event.*; public class DemoFrame{ public static void main(String[] args){ Frame frame = new Frame(Example on Frame); Label label = new Label("This is a label in Frame", Label.CENTER); frame.add(label, BorderLayout.CENTER); frame.setSize(500,500); frame.setVisible(true); frame.addWindowListener(new MyWindowListener()); } } // Lop nghe doc lap (external listener) Class MyWindowListener extends WindowAdapter{ public void windowClosing(WindowEvent event){ System.exit(0); } } Kt qu:

Ch : Nu khng mun vit lp nghe c lp, c th vit trc tip code trong class DemoFrame nh sau: Thay th on code: frame.addWindowListener(new MyWindowListener()); bi:

frame.addWindowListener(newWindowAdapter() {// Cai dat truc tiep public void windowClosing(WindowEvent e) { System.exit(0); } }); Ch : - Cc ng dng c lp dng Frame phi c hm main v c chytrc tip bng lnh java. - Cn c lnh setSize, setVisible(true) c th hin th Frame. - Cn ci t lng nghe s kin ng c th ng c ca s frame
6.1.3.2 Panel

Panel c s dng nhm mt s cc thnh phn li vi nhau. Panel khng th c nhn thy trc tip. Do , chng ta cn thm panel vo mt khung cha c th hin th c nh Frame, Applet. Mt giao din c th c nhiu panel sp xp theo mt layout nht nh, mi panel li c cc component sp xp theo mt layout ring Panel c b cc mc nh l FlowLayout V d: import java.awt.*; import java.applet.Applet; public class PanelDemo extends Applet{ public void init(){ Choice choice = new Choice(); choice.add("Red"); choice.add("Green"); choice.add("Blue"); Button ok = new Button("Ok"); Button cancel = new Button("Cancel"); // Tao panel chua 2 nut bam Ok, Cancel Panel panel = new Panel(); panel.add(ok); panel.add(cancel); // Set layout cho khung chua Applet

this.setLayout(new BorderLayout()); // Them cac thanh phan toi khung chua Applet this.add(choice, BorderLayout.NORTH); this.add(panel, BorderLayout.CENTER); } } Kt qu:

6.1.4 B qun l trnh by Layout Manager

C nm b qun l trnh by: - Flow Layout - Border Layout - Grid Layout - Gridbag Layout - Null Layout
6.1.4.1 Flow Layout

i vi mt container trnh by theo kiu FlowLayout th: - Cc component gn vo c sp xp theo th t t tri sang phi v t trn xung di. - Cc component c kch thc nh mong mun. - Nu chiu rng ca Container khng ch cho cc component th chng t ng to ra mt dng mi. - FlowLayout thng c dng sp xp cc button trong 1 panel. - Chng ta c th iu chnh khong cch gia cc component V d: import java.awt.*; import java.lang.Integer; class FlowLayoutDemo {

public static void main(String args[]) { Frame fr = new Frame("FlowLayout Demo"); fr.setLayout(new FlowLayout()); fr.add(new Button("Red")); fr.add(new Button("Green")); fr.add(new Button("Blue")); List li = new List(); for (int i=0; i<5; i++) { li.add(Integer.toString(i)); } fr.add(li); fr.add(new Checkbox("Pick me", true)); fr.add(new Label("Enter your name:")); fr.add(new TextField(20)); // Phuong thuc pack de dieu chinh kich thuoc cua so vua // voi cac thanh phan chua trong no fr.pack(); fr.setVisible(true); } } Kt qu:

6.1.4.2 Border Layout

i vi mt container trnh by theo kiu BorderLayout th: - B trnh by khung cha c chia lm 5 vng: NORTH, SOUTH, WEST, EAST v CENTER. B trnh by loi ny cho php sp xp v thay i kch thc ca nhng components cha trong n sao cho va vi 5 vng - Khng cn phi gn component vo cho tt c cc vng. - Cc component vng NORTH v SOUTH c chiu cao ty nhng c chiu rng ng bng chiu rng vng cha. - Cc component vng EAST v WEST c chiu rng ty nhng c chiu cao ng bng chiu cao vng cha.

- Cc component vng CENTER c chiu cao v chiu rng ph thuc vo cc vng xung quanh. V d: import java.awt.*; class BorderLayoutDemo extends Frame{ private Button north, south, east, west, center; public BorderLayoutDemo(String sTitle){ super(sTitle); north = new Button("North"); south = new Button("South"); east = new Button("East"); west = new Button("West"); center = new Button("Center"); this.add(north, BorderLayout.NORTH); this.add(south, BorderLayout.SOUTH); this.add(east, BorderLayout.EAST); this.add(west, BorderLayout.WEST); this.add(center, BorderLayout.CENTER); } public static void main(String args[]){ Frame fr = new BorderLayoutDemo ("Border Layout Demo"); fr.pack(); fr.setVisible(true); } } Kt qu:

6.1.4.3 Grid Layout

i vi mt container trnh by theo kiu GridLayout th: - B trnh by to mt khung li v hnh vi cc bng nhau.

- Cc i tng s t va kch thc vi tng . Th t sp xp t tri qua phi v t trn xung di V d: import java.awt.*; public class GridLayoutDemo { public static void main(String arg[]) { Frame f = new Frame("GridLayout Demo"); f.setLayout(new GridLayout(3,2)); // 3 dong, 2 cot f.add(new Button("Red")); f.add(new Button("Green")); f.add(new Button("Blue")); f.add(new Checkbox("Pick me", true)); f.add(new Label("Enter name here:")); f.add(new TextField()); f.pack(); f.setVisible(true); } } Kt qu:

6.1.4.4 GridBag Layout

i vi mt container trnh by theo kiu GridBagLayout th: Cc componets khi c a vo khung cha s c trnh by trn 1 khung li v hnh tng t nh GridLayout. Tuy nhin khc vi GridLayout kch thc cc i tng khng nht thit phi va vi 1 trn khung li m c th l 2, 3 hay nhiu hn ty theo cc rng buc m ta ch nh thng qua i tng GridBagConstraints. Lp GridBagConstraints dn xut t lp Object. Lp GridBagConstraints dng ch nh rng buc cho nhng components trnh by trong khung cha container theo kiu GridBagLayout.

gridx, gridy: v tr ca khung li v hnh m ta s a i tng con vo o gridwidth, gridheight: kch thc hay vng trnh by cho i tng con. Insets: l mt bin i tng thuc lp Inset dng qui nh khong cch bin phn cch theo 4 chiu (trn, di, tri, phi). weightx, weighty: ch nh khong cch ln ra tng i ca cc i tng con vi nhau V d: import java.awt.*; import javax.swing.*; class GridBagLayoutExample { public static void main(String[] args) { JFrame frame = new JFrame(); // Bat buoc phai getContentPane khi su dung JFrame Container cp = frame.getContentPane(); cp.setLayout(new GridBagLayout()); String[] fieldNames = { "Last name","Forenames","Country","Email Address", "Land Line","Mobile/Cell Phone" }; int[] fieldWidths = {20,20,30,30,15,15}; GridBagConstraints gbc = new GridBagConstraints(); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.anchor = GridBagConstraints.CENTER; gbc.insets = new Insets(20,0,15,0); cp.add(new JLabel("Personal Information Form"),gbc); gbc.anchor = GridBagConstraints.WEST; gbc.insets = new Insets(5,10,5,5); for(int i=0;i<fieldNames.length;++i) { gbc.gridwidth = GridBagConstraints.RELATIVE; cp.add(new JLabel(fieldNames[i]),gbc); gbc.gridwidth = GridBagConstraints.REMAINDER;

cp.add(new JTextField(fieldWidths[i]),gbc); } frame.pack(); // JFrame ho tro them phuong thuc //lang nghe su kien close mac dinh frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } Kt qu:

6.1.4.5 Null Layout

Mt khung cha c trnh by theo kiu Null Layout c ngha l ngi lp trnh phi t lm tt c t vic qui nh kch thc ca khung cha, cng nh kch thc v v tr ca tng i tng component trong khung cha. thit lp cch trnh by l Null Layout cho mt container ta ch vic gi phng thc setLayout(null) vi tham s l null Mt s phng thc ca lp tru tng Component dng nh v v qui nh kch thc ca component khi a chng vo khung cha trnh by theo kiu kiu t do: - public void setLocation(Point p) - public void setSize(Dimension p) - public void setBounds(Rectangle r) V d: - MyButton.setSize(new Dimension(20, 10)); - MyButton.setLocation(new Point(10, 10));

- MyButton.setBounds(10, 10, 20, 10); V d: import java.awt.*; class NullLayoutDemo { public static void main(String args[]) { Frame fr = new Frame("NullLayout Demo"); fr.setLayout(null); Button buttOk = new Button("OK"); buttOk.setBounds(100, 150, 50, 30); Button buttCancel = new Button("Cancel"); buttCancel.setBounds(200, 150, 50, 30); Checkbox checkBut = new Checkbox("Check box", true); checkBut.setBounds(100, 50, 100, 20); List li = new List(); for (int i=0; i<5; i++) { li.add(Integer.toString(i)); } li.setBounds(200, 50, 50, 50); fr.add(buttOk); fr.add(buttCancel); fr.add(checkBut); fr.add(li); fr.setBounds(10, 10, 400, 200); fr.setVisible(true); } } Kt qu:

6.2 Applet
6.2.1 C bn v Applet

Khi nim: Applet l chng trnh Java c ti xung trong trnh duyt, sau n s chy bn trong ca s ca trnh duyt Xy dng mt Applet Lp Applet: Trong lp trnh giao din cn bn chng ta bit Java c lp java.applet.Applet k tha t lp java.awt.Component cho php to ra cc applet trong Web. Mi lp applet do ngi dng to ra u phi k tha t lp Applet. V d: import java.applet.Applet; import java.awt.Graphics; public class TestApplet extends Applet { String name; public void init() { name = Hung; } public void paint(Graphics g) { g.drawString(Hello + name, 50, 25); } } Thc thi applet: - Cch 1: To file TestApplet.html c ni dung nh sau:
o <APPLET CODE=TestApplet.class HEIGHT=500 </APPLET> WIDTH=500

o M file ny bng trnh duyt WEB (internet explorer, firefox) - Cch 2: Dng cng c appletviewer. o G lnh: appletviewer TestApplet.html Kt qu:

Hot ng ca mt Applet Mt Applet nh ngha cu trc ca n t 4 s kin xy ra trong sut qu trnh thc thi. i vi mi s kin, mt phng thc c gi mt cch t ng. Cc phng thc ny c minh ho trong bng: Phng thc Chc nng init() c gi trong qu trnh khi to applet. Trong qu trnh khi to, n s to i tng cung cp cho applet. Phng thc ny c dng ti cc hnh nh ho, khi to cc bin v to cc i tng. start() c gi gi khi mt applet bt u thc thi. Mt khi qu trnh khi to hon tt, th applet c khi ng. Phng thc ny c dng khi ng li applet sau khi n ngng trc stop() c gi khi ngng thc thi mt applet. Mt applet b ngng trc khi n b hu. destroy() c dng hu mt applet. Khi mt applet b hu, th b nh, thi gian thc thi ca vi x l, khng gian a c tr v cho h thng. Ngoi nhng phng thc c bn ny, cn c nhng phng thc paint() v repaint(). Phng thc paint() dng hin th mt ng thng (line), text, hoc mt hnh nh trn mn hnh. i s ca phng thc ny l i tng ca lp Graphics. Phng thc repaint() c dng khi ca s cn cp nht li. Phng thc ny ch cn mt thng s. Tham s ny l i tng ca lp Graphics.

Cc phng thc ca applet init(), start(), stop(), destroy(), v paint() c tha k t mt applet. Nhng mc nh nhng phng thc ny khng thc thi mt thao tc no c, c th thc hin ghi thc hin cc hot ng c th. Phng thc init() v paint() thng c dng thc hin mt s hm khi to v v applet. Phng thc g.drawstring() ch ra v tr m on vn bn c v u trn mn hnh. Vng i ca mt Applet - Np mt applet: applet c khi to v thc thi - Chuyn hoc tr v trang Web: Cc phng thc stop v start s c gi - Np li applet: nh qu trnh np applet - Thot khi trnh duyt: phng thc stop v destroy s c gi
6.2.2 Chuyn t mt ng dng ha sang Applet

Sau y l cc bc chuyn t mt ng dng giao din ha Java sang Applet c th nhng trong trnh duyt: - Loi b phng thc main trong ng dng ha - t on m khi to ca s ng dng trong phng thc init(), s dng phng thc add t ca s ng dng vo khung cha Applet - Loi b cc phng thc setSize, setDefaultCloseOperation, setTitle, setVisible nu c. Cc phng thc ny l khng cn bi Applet c cch thc hin ring V d: Bn vit c mt ng dng ha Java c chc nng tnh ton ca mt chic my tnh, mun a ln trnh duyt Web c th truy cp qua Internet. Class ca ng dng l: CalculatorPanel Vic chuyn i nh sau: To Applet: import java.awt.*; import javax.swing.*; import java.applet.Applet; public class CalculatorApplet extends Applet{ public void init(){ // Khoi tao ung dung calculator CalculatorPanel panel = new CalculatorPanel();

// Them vao khung chua Applet add(panel); } } To trang HTML thc thi: <html> <head><title>A Calculator</title></head> <body> <p>Here is a calculator, just in case you can't find yours.</p> <applet code="CalculatorApplet.class" width="180" height="180"> </applet> </body> </html> Kt qu:

6.2.3 i tng ha Graphics

java.awt.Graphics l lp cung cp cc phng thc v ho c bn: - ng thng (Line) - ng oval (Oval) - Hnh ch nht (Rectangle) - a gic (Polygon)

- Vn bn(Text) - Hnh nh (Image) - ... H ta :

V ng thng public void drawLine(int x1, int y1, int x2, int y2); V hnh ch nht public void drawRect(int x, int y, int width, int height); T mt hnh ch nht public void fillRect(int x, int y, int width, int height); Xo mt vng ch nht public void clearRect(int x, int y, int width, int height); V a gic public void drawPolygon(int[] x, int[] y, int numPoint); public void drawPolygon(Polygon p); V d: import java.applet.Applet; import java.awt.Graphics; public class DemoRect extends Applet { public void init(){ System.out.println("Demonstration of some simple figures"); } public void paint(Graphics g){ g.drawLine(70, 300, 400, 250); g.drawRect(100, 50, 130, 170);

g.fillRect(120, 70, 70, 70); int[] x = { 280, 310, 330, 430, 370 }; int[] y = { 280, 140, 170, 70, 90 }; g.drawPolygon(x, y, x.length); } } Kt qu:

V ng trn/elip public void drawOval(int x, int y, int width, int height); T ng trn/elip public void fillOval(int x, int y, int width, int height); V cung trn public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle); V xu k t public void drawString(String str, int x, int y); V nh public void drawImage(Image img, int x, int y,...); V d: V nh import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; public classDemoImage extends Applet { public void init(){ System.out.println("Demonstration of imaging"); } public void paint(Graphics g){

Image image = getToolkit().getImage("summer.jpg"); g.drawImage(image, 0, 0, this); } } Kt qu:

Cc lp tin ch khc: LpPoint: biu din im trn mn hnh Lp Dimension: biu din kch thc v chiu rng v chiu cao ca mt i tng Lp Rectangle: biu din hnh ch nht Lp Polygon: biu din a gic Lp Color: biu din mu sc Lp Font: biu din font ch V d: import java.applet.Applet; import java.awt.*; public class DemoColor extends Applet { public void paint(Graphics g) { Dimension size = getSize();

g.setColor(Color.orange); g.fillRect(0, 0, size.width, size.height); Color color = new Color(10, 150, 20); g.setColor(color); Font font = newFont("Arial", Font.BOLD, 20); g.setFont(font); g.drawString("I am font Arial, bold, size 20", size.width/2 -50, size.height/2); } } Kt qu:

6.3 Bi tp chng 6

CHNG 7
7.1 Swing

THAM KHO THM

7.2 X l s kin trong lp trnh giao din 7.3 X l ngoi l 7.4 Lp trnh c s d liu 7.5 Bi tp chng 7

You might also like