You are on page 1of 284

GIO TRNH BI GING CHUYN 1

LP TRNH HNG I TNG TRN JAVA

Gio vin: L c Nhng Khoa Ton Tin i hc Hi Phng in thoi: 0987394900 Email: Nhuongld@yahoo.com Nhuongld@gmail.com

Mc tiu
Tip cn vi phng php lp trnh hng i tng.

Mail to:Nhuongld@yahoo.com

Phn tch, thit k v hin thc c mt chng trnh theo phng php hng i tng. Vn dng c cc khi nim v kiu d liu tru tng (abstract data type), tnh bao ng (encapsulation), tnh a hnh (polymorphism), tnh k tha (inheritance) trong vic pht trin chng trnh.

Tm tt ni dung mn hc

Mail to:Nhuongld@yahoo.com

Khi nim v lp trnh hng i tng, mt s yu t chnh trong phng php lun hng i tng nh: s ng gi, lp, thc

th, i tng, s ng nht, tnh tha k, tnh a hnh, phng


thc o, Luyn tp cc k nng xy dng, thit k chng trnh theo

hng i tng v cc k thut lp trnh trn ngn ng lp trnh


hng i tng Java.

Ni dung chi tit


Chng 0 Chun b mi trng lp trnh Chng 1 Tng quan v Java Chng 2 Ngn ng Java Chng 3 Nhp mn OOP Chng 4 Cc kha nim c s ca OOP Chng 5 Lp v kiu d liu tru tng

Mail to:Nhuongld@yahoo.com

Chng 6 Tnh k tha v tnh a hnh


Chng 7 Lp tru tng Chng 8 Li chng trnh- Exception Chng 9 Package v interfaces Chng 10 Lp trnh giao din vi swing

Ti liu hc tp Ti liu chnh: Slides bi ging. Java Documentation. Cc sch hc Java. Phn mm:
JDK 1.5 Java Development Kit. (JDK 1.6) Java Documentation. JCreator 3.50.101

Mail to:Nhuongld@yahoo.com

Mail to:Nhuongld@yahoo.com

CHNG 0

Chun b mi trng lp trnh

Download Java Software:


http://java.sun.com/

Mail to:Nhuongld@yahoo.com

Java 2 Standard Edition. Documentation.

Ci t mi trng Java Gii nn

Mail to:Nhuongld@yahoo.com

Chy

Download JCreator- Mi trng lp trnh

Mail to:Nhuongld@yahoo.com

Ci t JCreator Pro

Mail to:Nhuongld@yahoo.com

Chy

Cc th mc kt qa

M th mc Ly 3 file crack, chp vo 3 file ci t


10

Cu hnh JCreator-slide 1

Mail to:Nhuongld@yahoo.com

JCreator ch l mi trng cho ta xy dng cc ng dng Java. Do vy, ta cn cu hnh cho JCreator bao gm: Th mc cha cc lp ca Java, th mc ngun, th mc cha cc file tr gip.

Chy JCreator t Start/ Hoc biu tng JCreator Pro trn desktop.

11

Cu hnh JCreator-slide 2

Mail to:Nhuongld@yahoo.com

Chn th mc ci t JDK

Chn JDK Profile Kch New

12

Cu hnh JCreator-slide 3

Mail to:Nhuongld@yahoo.com

Trong th d ny l th mc C:\Program files\Java\jdk1.5.0

Tt c cc gi ca Java jdk 1.5.0 trong th mc c ch nh s c a vo Classes

13

Cu hnh JCreator-slide 4

Mail to:Nhuongld@yahoo.com

Chn th Documentation ch nh th mc cha ti liu gip ca Java. Kch nt Add

Chn th mc Docs l th mc cha cc file.htm ( cc help file ca Java 2) ti v v x nn phn trc)

Kt qa

14

Cu hnh JCreator-slide 5

Mail to:Nhuongld@yahoo.com

n y, vic cu hnh JDK Profile cho JCreator Pro xong, Nu mun cu hnh th mc th chn mc Directories. Kch Apply ri kch OK.
15

Cu hnh th mc- slide 6

Mail to:Nhuongld@yahoo.com

Th mc mc nh cha code v kt qa bin dch

Th mc c php

Th mc cha cc mu chng trnh

Kch i th mc
Th mc cha cc on code mu
16

Gii thiu mi trng JCreatorPro


Execute

Mail to:Nhuongld@yahoo.com

compile

Danh sch cc file ca 1 gi phn mm

file hin hnh

ca s trng thi

17

Bin dch thnh cng v chy chng trnh Mail to:Nhuongld@yahoo.com

Mn hnh kt qa

18

Tr gip trc tuyn trong JCreator Pro

Mail to:Nhuongld@yahoo.com

Sau tn i tng, ta g du chm, cc d liu v hnh vi public s c JCreator tr gip ngay user c th chn

19

Tr gip v s dng JCreator

Mail to:Nhuongld@yahoo.com

20

Tr gip v s dng ngn ng Java

Mail to:Nhuongld@yahoo.com

Chn ni dung

21

Tr gip v s dng ngn ng Java

Mail to:Nhuongld@yahoo.com

Ni dung tp tin tr gip (file.htm) s xut hin trong ca s file

22

Tr gip nng v 1 method ca i tng

Mail to:Nhuongld@yahoo.com

t im chn vo t mun tham kho, g Ctrl + F1 Ca s tr gip v JDK xut hin, kch 2 vo lp cn tham kho.

23

Ch ng c Java Documentation

Mail to:Nhuongld@yahoo.com

Th mc c do gii nn java documentation

Kch 2 m

24

Ch ng c Java Documentation

Mail to:Nhuongld@yahoo.com

Kch m ti liu mun c

25

Tham kho cc cng c c bn

Mail to:Nhuongld@yahoo.com

26

Tham kho cc cng c c bn

Mail to:Nhuongld@yahoo.com

27

CHNG 1

Tng quan v JAVA

Mc tiu: n cui chng bn c th (1) (2) (3) (4) Hiu nhng c im v li ch ca Java Hiu c ch thc thi ca Java Hiu c ch bin dch v chy 1 chng trnh Java Hiu cu trc c bn ca mt chng trnh Java

28

Ni dung chng 1
1.1- Lch s ca Java 1.2- Nhng c im c bn ca Java 1.3- My o Java- JVM 1.4- Mi trng lp trnh Java

Mail to:Nhuongld@yahoo.com

1.5- Chng trnh Java u tin


1.6- Tm tt

29

1.1- Lch s ca Java

Mail to:Nhuongld@yahoo.com

Nm 1990, James Gosling, Bill Joy, Patrick Naughton(Sun Microsystem) pht trin ngn ng Oak nhm mc ch ci chng trnh vo cc b x l ca cc thit b nh VCR, l nng, PDA (personal data assistant),

Oak i hi:
- c lp cu trc nn (phn cng, OS) do thit b c th do nhiu nh sn xut khc nhau (Platform independent) - Phi tin cy tuyt i (extremely reliable)

- Nh gn, chc chn (compact)

1993, TV tng tc v PDA tht bi, Internet v Web bng n, Sun chuyn Oak thnh mt mi trng lp trnh Internet vi tn d n l Java.

1994, HotJava Browser ca Sun xut hin (vit bng Java ch sau vi thng)minh ha th mnh ca cc applet cng nh kh nng pht trin nhanh mt ng dng ca Java.
30

Lch s Java (tt)

Mail to:Nhuongld@yahoo.com

Cng vi s bng n ca Internet, Java tr thnh phn mm u th trong vic pht trin ng dng chy trn internet.

Tuy nhin, nhng bn Java u cha mnh theo yu cu


ca ngi s dng. Th d: ha trong bn Java 1.0 th v vng v hn so vi ha khi c x l bng C hoc ngn ng khc. Tuy lc u Java cha thnh cng trong vic xy dng cc ng dng mc ngi dng, Java vn l ngn ng rt thng dng mc doanh nghip, cc ng dng mc trung gian nh: Lu tr trc tuyn, x l giao tc, giao tip vi database, v cng thng dng trn nhng cu trc nn nh (small platform) nh in thoi di ng, PDA.
31

Java l g?

Mail to:Nhuongld@yahoo.com

L mt ngn ng OOP y , khng th vit 1 ng dng hng th tc trong Java.

C th gii cc h bi ton nh nhng ngn ng lp trnh khc.


Cho php to Application hoc Applet. Applet l nhng chng trnh nh chy trong ti liu HTML vi iu kin trnh duyt c h tr Java (nh IE, Netscape Navigator, HotJava,) S dng 2 c ch: Interpreter | Compiler Write code one, run it anywhere, anytime, forever

32

1.2- c im ca Java

Mail to:Nhuongld@yahoo.com

n gin( simple). 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


Hng i tng (OO). Mi th trong Java l i tng Phn tn (Distributed). Nhm n phn b ng dng trn mng, ng

dng c lp platform.
Mnh (Robust). nh kiu mnh, tng minh, kim tra lc bin dch v kim tra khi thng dch trc khi thc thi Gii hn c li; kim tra truy xut phn t ca mng, chui lc thc thi, kim tra p kiu run-time. C trnh gom rc garbage collection- programmer khng cn phi lo toan n vic hy i tng.

33

c im ca Java (tt)

Mail to:Nhuongld@yahoo.com

Bo mt (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.

34

c im ca Java (tt)
Tnh tng thch kh chuyn (Portability) Chng trnh Java

Mail to:Nhuongld@yahoo.com

Compiler

Chng trnh Bytecode c lp platform

Java Runtime Interpreter/ JVM thc thi Javabytecode

IBM

Macintosh

Sparc

35

c im ca Java (tt)
dch sang lnh my lc thc thi

Mail to:Nhuongld@yahoo.com

Thc thi dng thng dch: (Interpretive execution) Ch th ch c

Chng trnh c lp platform Write Once Run Anywhere (WORA) (1) (2) 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) (1) (2) Li ch Java class file c th c dng bt k platform no. Tnh module ha cao, dng b nh tt hn vi class file hn l file thc thi v class file cn mt bc ch na mi c CPU thc thi.

36

c im ca Java (tt)

Mail to:Nhuongld@yahoo.com

Hiu sut cao (high performance): bytecode native machine code d dng nh Just-in-time compiler. a lung (multithreading): Cho php lp trnh a lung (nhiu chng trnh ng hnh nh lp Thread : khi to, ngng 1 lung, kim tra trng thi ca lung). Thread: mt lung thc thi ca CPU l 1 chng trnh Linh ng (dynamic): Cho php tng thch vi s thay i ca mi trng, Trong CT java c cc thng tin run-time Kim tra truy xut lp an ton, an ton lin kt cac lpvo CT dynamic

37

1.3- JVM- Java Virtual Machine


5 thnh phn ca mi trng Java
(1) Java

Mail to:Nhuongld@yahoo.com

language

(2) Bytecode definitions


(3) Java/ Sun Class libraries (4) The Java Virtual Machine

(5) The structure of .class file


JVM l trung tm ca Java Cc thnh phn dn n s thnh cng ca Java: Bytecode definitions, the structure of .class file, JVM.

38

1.3.1- JVM l g?

Mail to:Nhuongld@yahoo.com

L mt phn mm gi lp mt my tnh trong : c tp lnh nh ngha cc tc v (java.exe)

Chng trnh Java (file.java) javac.exe : compiler

platform

Java Bytecode (file.class) JVM (java.exe) OS Hardware

Dng c ch Just-In-Time thng dch bytecode thnh lnh my c th

39

JVM l g? (tt)

Mail to:Nhuongld@yahoo.com

JVM to ra 1 h thc thi ph thuc platform bao gm cc tc v:


(1) Np .class file

(2) Qun l b nh
(3) Thc thi gom rc

V s khng tng thch phn cng, JVM dng c ch my-

stack cha cc thng tin sau:


(1) Cc frame (khung thng tin) biu din trng thi cc method. (2) Cc ton hng bytecode (3) Cc tham s c truyn cho cc method (4) Cc bin cc b

Dng thanh ghi lnh ghi nh a ch lnh ang thc thi.


40

1.3.2- JRE-Mi trng run-time ca Java


JRE: Java Run-time Environment. Cc cng c c cha trong th mc Hai giai on ca 1 Java application: Compile-time, Run-time Compile-time phase: Vit v bin dch chng trnh

Mail to:Nhuongld@yahoo.com

Begin

Java source code (file.java)


Bin dch bng javac.exe .class file End
41

JRE- Run-time phase


.class file Net work

Mail to:Nhuongld@yahoo.com

Begin Np .class file Kim tra bytecode

Nh class Loader, kim tra an ton

Nh chc nng bytecode verifier, kim tra code format v quyn truy xut

Interpreter

JIT code Generator

Run-time code
Hardware
End
42

1.3.3- Trnh gom rc- Garbage Collection

Mail to:Nhuongld@yahoo.com

Heap: Vng nh chia s thng tin gia cc qa trnh. Vi C, C++, Pascal, programmer phi t qun l vng nh cp pht ng ny bng cc hm c bn.

C ch qun l heap Heap c qun l bng 2 danh sch: Free block list v Allocated Block List. - Cch cp pht: first-fit block - Khi khi b nh c yu cu ln hn kh nng ca cc khi t do: Compaction - dn vng nh to ra vng ln hn.

Heap trong Java : 2 heap


heap cp pht tnh v heap cp pht ng.

43

Trnh gom rc (tt)


Dynamic heap: c gom rc

Mail to:Nhuongld@yahoo.com

Static Heap -Class definitions -Cc hng -CMT1 (class1,method1,Add1) -CMT2

Dynamic heap Section 1 Bin i tng O2 Bin i tng O1

(class2,method2,Add2)
.. Dynamic heap Section 2 ( Cc entry: 2 pointers) (O1, CMT1) (O2, CMT2) Static heap: khng gom rc CMT: class method table Section 2: Theo di hot ng ca cc i tng
44

C ch gom rc
C ch cp b nh 1/ Nhn yu cu cp b nh

Mail to:Nhuongld@yahoo.com

2/ if (Free-Block list ) cp b nh cho yu cu (First-fit) 3/ else if (my rnh) thc thi gom rc 4/ else ng dng phi gi tng minh tc v gom rc: System.gc(); Trnh gom rc c n nh u tin rt thp Gi tng minh c ngha chp nhn ng dng ny tm dng ch gom rc. C ch gom rc ( ch gom rc Dynamic heap) 1/ Xem i tng no khng c entry trong section2 Khng cn dng

i tng ny na.
2/ Garbage Collector s gi method finalize() thu ti nguyn ca i tng (file, stream kt hp, b nh)
45

1.4- Mi trng lp trnh Java


Java bao gm 4 thnh phn: (1) (2) (3) Classes Compiler Debugger

Mail to:Nhuongld@yahoo.com

JDK- Java Development Kit- B cng c pht trin ng dng

(4)

Java Runtime Environment

Hin nay c bn Java 1.5

46

Cc cng c chnh ca mi trng Java

Mail to:Nhuongld@yahoo.com

Trong th mc BIN ca JDK (sau khi ci t) c: javac : Java Compiler: Dch source code Independent Bytecode java : Thc thi class file trong JVM appletviewer : cho php chy applet m khng cn Browser.

47

1.5- Chng trnh java u tin

Mail to:Nhuongld@yahoo.com

Yu cu: Vit chng trnh xut chui Hello world from java! ra mn hnh.

Phn tch:
- Cn tc v xut S dng gi ca java import java.io.* - Cn to 1 lp c chc nng xut chui ny (lp HelloWorld) . V

chc nng ca chng trnh n gin -> lp ny ch c 1 hnh vi


main(), ni dung hnh vi l xut chui c yu cu. Cch lm 1: Vit code bng 1 editor, v du nhc Command Prompt bin dch, chy chng trnh. Cch lm 2: Nh mt IDE nh JCreator, JPadPro, JBuilder, cho php va vit code va thc thi.
48

Dng NotePad, bin dch dng lnh

Mail to:Nhuongld@yahoo.com

Lu tr vi tn HelloWorld.java- tn lp l tn file

C:\PROGRA~1\JavaSoft\JRE\1.2\bin>javac e:\BaiGiang2008\java\HelloWorld.java e:\BaiGiang2008\java\HelloWorld.java:1: ';' expected.

import java.io.*
^ 1 error E:\BaiGiang2008\Java>javac HelloWorld.java E:\BaiGiang2008\Java>java HelloWorld

Li thiu du chm phy, code trn sa

Hello World From Java !


E:\BaiGiang2008\Java>

Hoc bin dch vi th mc hin hnh l th mc cha source code . Bin dch thnh cng v chy ng dng

Ch : Tn file .java c tnh cht case-sensitive


49

Kt qa bin dch

Mail to:Nhuongld@yahoo.com

50

Dng JCreatorPro

Mail to:Nhuongld@yahoo.com

51

1.6- Tm tt

Mail to:Nhuongld@yahoo.com

Java l ngn ng OOP ch yu c dng pht trin cc ng dng Internet vi cc c im: Simple, OO, Distributed, Robust, Secure, System Structure neutrality, Portability, Interpretive execution, High Performance, Multithreading, Dynamic.

JVM l tri tim ca Java. JDK l b cng c h tr lp trnh.

JDK cung cp mt s cng c c trong th mc BIN khi ci


t JDK gm 3 chc nng chnh: javac: trnh bin dch, java: JVM, appletviewer.

Ti liu API ca Java rt cn cho ngi lp trnh java v cha cc ti liu hng dn v cc lp (class), cc gi phn mm (package), cc giao tip (interface)

52

Bi tp
Vit chng trnh xut ra mn hnh cc thng tin sau Hello! Im <your name>.

Mail to:Nhuongld@yahoo.com

This is my first java program.


This is common technology today. I will work hard to enhance my skill in Java

53

CHNG 2

Ngn ng JAVA
Mc tiu Bit cch nh ngha 1 tn trong java Bit cc t kha ca java. Hiu cc kiu d liu c bn ca java.

Nhn bit c c php java gn hon ton ging C.


Gii thch c c ch iu khin chng trnh Bit cc c tnh v mng vi java

S dng c cc hm ton trong gi java.lang


S dng c cc hm nhp xut d liu c bn.
54

Ni dung
2.1- Ch thch trong java 2.2- T kha ca java- Cch t tn 2.3- Kiu c bn trong java 2.4- Bin: Gn tr v khi to. 2.5- Ton t- Operators 2.6- Gi java.lang 2.7- Cu trc iu khin Pht biu 2.8- Mng Array 2.9- Nhp xut d liu.

Mail to:Nhuongld@yahoo.com

2.10- Tm tt dng trc nghim


2.11- Bi tp

55

2.1- Ch thch trong java

Mail to:Nhuongld@yahoo.com

// Ch thch n cui dng /* Ch thch nhiu dng */

Cch vit ch thch ging C++

Ch thch l cng c: (1) (2) Gii thch chng trnh. Lp ti liu cho chng trnh: Tc ga, version, nhng c im ca chng trnh

56

2.2- T kha- Cch t tn

Mail to:Nhuongld@yahoo.com

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, volatile, strictfp Hng (literal): true, false, null T kha lin quan n method: return, void T kho lin quan n package: package, import
57

2.2- T kha- Cch t tn (tt)

Mail to:Nhuongld@yahoo.com

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 Cch t tn (identifier): Bt u bng k t, k t gch di (underscore _ ) hay k t $ Sau l cc k t k s hay _, $ , khng dng cc k t khc nh: khong trng, k hiu php ton T kha v tn c tnh cht case-sensitive Nhn xt: Gn nh y ht C++

58

2.3- Kiu d liu c bn trong java


Type byte short int long Default 0 0 0 0 Size (bytes) 1 2 4 8 Range -128..127 -32768..32767 -2 t mt.. 2 t mt - 9 t t .. 9 t t

Mail to:Nhuongld@yahoo.com

Description

s nguyn s nguyn s nguyn s nguyn

float
doubl e char

0.0
0.0 \u0000

4
8 2

+/- 1.45 E-45 .. +/-3.4 E+38, +/- infinity, +/-0, NAN


+/- 1.79E-324 .. +/-3.4 E+308, +/- infinity, +/-0, NAN \u0000 .. \uFFFF

s thc (Not A Number


s thc k t Unicode

59

Th d

Mail to:Nhuongld@yahoo.com

Dng cc k t c t vic buc phi xem xt tr thuc 1 kiu no : i, I, l, L, f, F, d, D nhng L thng dng thay cho l v s nhm vi 1. 178 int (default) 178L long 45.62 double (default) 44.21f float

11.19e8 double (default)


z char , hng kl t trong cp nht n (single quote character)

Nhn xt: Gn nh C++

60

2.4- Bin- nh ngha, khi to


Bin = Tr c thay i theo thi gian 3 c im ca bin:

Mail to:Nhuongld@yahoo.com

Tn bin, Tr khi to, tm vc (scope)


Scope ca bin: khi chng trnh m bin c ngha (tham kho c)

C php nh ngha bin:


DataType [[identifier [ = InitValue]],] ; int count , age1= 21, age2= 2*age1; char ch1=z, ch2; Ging C
61

2.5- Ton t- Operators


K hiu m t php ton Arithmetic ops: Relational ops : Logical ops: Bitwise ops: Assignment ops : Ternary op: Condition Ging C ? TrueExp : FalseExp +, -, *, /, %, ++, -<, <=, ==. >=, >, != && ||

Mail to:Nhuongld@yahoo.com

~, &, |, ^ (xor), >>, <<, &=, |=, ^=, >>=, <<= = , +=, -=, *=, /=, %=

62

2.5- Ton t- Operators (tt)

Mail to:Nhuongld@yahoo.com

Instanceof : ton t kim tra 1 i tng c thuc 1 lp ? true | false


class InstanceOfDemo { public static void main (String args[]) { InstanceOfDemo t = new InstanceofDemo(); if ( t instanceof InstanceOfDemo) System.out.println( t la 1 doi tuong thuoc lop nay); else System.out.println( t KHONG la 1 doi tuong thuoc lop nay); } }

63

2.6- java.lang package


Gi c bn ca ngn ng java (language)

Mail to:Nhuongld@yahoo.com

Cha cc lp c bn ng vai tr trung tm i vi cc tc v

ca java.
Cc lp c bn nht: class Object, class Class l cc lp c s ca mi lp khc.

Nu mun xem cc d liu thuc kiu c bn l cc i tng,


cc lp gi (wrapper) mang cc tn: Boolean, Character, Integer, Long, Float, Double, Void dng cho mc ch ny.

Lp Void l lp khng th khi to, lu tr 1 tham kho ti 1


i tng thuc lp Class biu din cho kiu void

64

java.lange package(tt)
Cha lp Math cho cc x l ton hc

Mail to:Nhuongld@yahoo.com

Cha cc lp Loader, Process, Runtime, SecurityManager, System cung cp cac tac v mc h thng nh: qun l np cc i tng, to qa trnh, qun l an ton, nhp xut d liu, tham kho thi gian ca h thng. Mt s hm ton hc abs(TrS) : ly tr tuyt i Nu tr s kiu byte, short th kt qa l kiu int

int n= -5, m ; m = Math.abs(n); // m=5


cch dng hm ton: Math.TnHm(thamS)

65

java.lange package(tt)
Hm ceil(x) S trn st trn <=x (trn) Math.ceil(8.02) 9.0 Math.ceil(100) 100.0 Hm floor(x) S trn chn di (sn) Math.ceil( -5.63 ) -6.0 Math.ceil(-1.3) -1.0

Mail to:Nhuongld@yahoo.com

Math.ceil(100) 100.0

Hm max(x,y) Tr ln trong 2 s
Hm min(x,y) Hm random() tr v 1 s ngu nhin t 0.0 n 1.0

Hm round (sthc)

Math.round(34.5) 35

66

2.7- Cu trc iu khin Pht biu


Cu trc r nhnh
if (Condition) { Statements; } else { Statement; }

Mail to:Nhuongld@yahoo.com

Cu trc r nhnh

switch (Expression) { case Cons1: Statements; break;


case Cons2: Statements; break; ... default : Statements;

}
Ging C

Ging C

67

Cu trc iu khin Loops


while (condition) { Statements; } do { Statements; } while (condition);

Mail to:Nhuongld@yahoo.com

for ( varInit ; Condition ; GroupStatements2) { Statements1; } B qua 1 ln lp : continue; Ging C Ct vng lp: break [ label_name];
68

Minh ha pht biu break

Mail to:Nhuongld@yahoo.com

import java.io.*; class BreakDemo Kt qa { public static void main(String ags[]) { boolean t = true; FIRST: { SECOND: { THIRD: { System.out.println("Executed before break"); if (t) break SECOND; System.out.println("Out of break, Not executed"); } System.out.println("Out of break, Not executed"); } System.out.println("Executed after the second break"); } } Executed before break }

Executed after the second break Press any key to continue...


69

2.8- Mng Array

Mail to:Nhuongld@yahoo.com

Mng= Nhm tr cng kiu, k nhau, cng tn gi, truy xut phn t bng ch s i t 0 nh ngha c ch nh s phn t (size)-> cp b nh

char ch[] = new char [5];


nh ngha mng tc thi (in-line initialization): int a[] = { 1,4,2,7,8}; // hoc int [] a = { 1,4,2,7,8}; Phn t c tham kho qua ch s bt u t 0
ch[0] ch[1] ch[2] ch[3] ch[4]

Ch khai bo: khng ch nh size :

long a[];

Khi s dng phi cp b nh: a= new long [20]; Tr mc nh : Ton t new s xa b nh, cc bit = 0)
70

Mng 1 chiu - minh ha

Mail to:Nhuongld@yahoo.com

// file ArrayDemo.java import java.io.*; class ArrayDemo { public static void main(String args[]) { int a1[] = { 1, 2,3,4,5 };//In-line initialization int a2[]; // just declaration Kt qa: a2 = new int [5]; // mem. allocation int i; Sum of 2 arrays:45 for (i=0;i<5;++i) a2[i] = 2*a1[i]; Press any key to continue... long S= 0; for (i=0;i<5;++i) S+= a1[i] +a2[i]; System.out.print("Sum of 2 arrays:"); System.out.println(S); } }

71

Mng 2 chiu- Minh ha

Mail to:Nhuongld@yahoo.com

Mu CT Java

72

2.9- Nhp xut d liu.


Nhp xut d liu l tc v mc h thng Gi java.io cha cc lp cho vic xut nhp. Cn tham kho gi ny. Java cung cp class System m t h thng System.out l i tng xut mc nh (mn hnh) System.in l i tng nhp mc nh ( bn phm) Methods xut d liu ra mn hnh: System.out.print(D liu xut);

Mail to:Nhuongld@yahoo.com

System.out.println(D liu xut);


D liu xut c th l : k t, s, chui,

73

Xut d liu (tt)

Mail to:Nhuongld@yahoo.com

74

Nhp d liu vi bn phm

Mail to:Nhuongld@yahoo.com

Nhp d liu t bn phm kh phc tp v vi mi d liu c cch nhp khc nhau: K t th ch cn 1 phm, s nguyn, s thc c

th nhp vi nhiu phm nn cc phm g cn gi li (m, buffer),


c th cn kim tra phm g (nhp s m g phm ch sai). Tham kho ti liu v gi java.io

Nu vit ng dng hng giao din ca s, khng xut nhp trc


tip m thng qua cc i tng trong giao din ngi s dng.

75

Minh ha xut nhp

Mail to:Nhuongld@yahoo.com

import java.io.*; // file InOutDemo.java class InOutDemo { public static void main(String args []) throws java.io.IOException { Reader inputChar_Obj = new InputStreamReader(System.in); System.out.print("Input a character:"); char c = (char)inputChar_Obj.read() ; System.out.println(" character read :" + c); BufferedReader input_Obj= new BufferedReader(new InputStreamReader( System.in)); System.out.print("Input an Integer:"); Input a character:r int n= Integer.valueOf( input_Obj.readLine()).intValue() ; character read :r System.out.println(" integer read :" + n); System.out.print("Input a Double:"); Input an Integer:123 double x= Double.valueOf( input_Obj.readLine()).doubleValue() ; integer read :123 System.out.println(" Double read :" + x); Input a Double:12.908 System.out.print("Input a string:"); String s = input_Obj.readLine(); Double read :12.908 System.out.println(" String read :" + s); Input a string:Hello System.out.print("Input a character:"); int m = System.in.read() ; String read :Hello System.out.println(" Code of this character :" + m); Input a character:A } Code of this character:65 }
76

Nhp xut d liu bng hp thoi


Mail to:Nhuongld@yahoo.com

Java cung cp mt s hp thoi chun (common dialog) gip: Thng bo cho ngi dng bit v mt tnh hung. nhn d liu t ngi dng thng qua cch chn la hoc ngi dng phi nhp liu vo mt text.

Lp JOptionPane trong gi javax.swing (tham kho lp ny trong Java Documentation)

Lp ny c cc hnh vi static xut hp thoi v tr tr ph hp vi tng


hp thoi.

Khi xut hp thoi, phi ch nh xut trong i tng no. V xut hp thoi trong 1 lp ang y dng nn i tng cha thng l this (nu chng trnh c giao din) hoc l null (chng trnh chy trn mn hnh en.

77

Lp JOptionPane- Cch dng


import javax.swing.*; Khi cn xut mt thng bo:

Mail to:Nhuongld@yahoo.com

JOptionPane.showMessageDialog(this,message");
Ngi dng phi kch nt OK ca hp thoi Khi cn nhp 1 chui:

String s= JOptionPane.showInputDialog(this,"Please input","12");


* 12 l tr ta mun lm tr mc nh. * Sau khi c S, ta c th i sang kiu khc ty .

78

Lp JOptionPane- Cch dng


Khi cn user xc nhn 1 iu g:

Mail to:Nhuongld@yahoo.com

int Response=JOptionPane.showConfirmDialog(this,"Confirm?");

Cc hng tr v: JOptionPane.OK_OPTION JOptionPane.NO_OPTION // nt OK tr 0 // nt NO tr 1

JOptionPane.CANCEL_OPTION // nt Cancel tr 2

79

Lp JOptionPane- Cch dng


Khi cn user chn mt trong nhm tr:

Mail to:Nhuongld@yahoo.com

Object Options[]= { "One", "Two", "Three", "Four"}; int Choice=JOptionPane.showOptionDialog(this,"Choose one","Options", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null,Options,Options[0]); Tr tr: s nguyn t 0 tr ln m t v tr nt c chn. Trong th d trn l 0,1,2,3

80

Th d

Mail to:Nhuongld@yahoo.com

81

2.10-Tm tt dng cu hi
tr tr.

Mail to:Nhuongld@yahoo.com

Lit k 6 kiu s c bn ca Java v s bit b nh s chim dng ca chng khi lu Kiu lun l (logic) trong java tn l g? Kiu k t tn l g? chim my byte?

Bin l g? Hy cho bit 3 tnh cht ca bin.


Hy lit k 4 loi ton t trong java. Hy cho bit kt qa ca biu thc sau : a) 4 && 7 b) 4&7 g) c) 0 || 8 h) d) 0 | 8 e) 8 ^ 3

f) 4 >> 3

9 << 2

(9 >>3) ? 5 : -3

Trong java c pht biu goto hay khng ? Mng l g ? Mng in-line l g ? int a[] = new int { 1,2,3,9,0}; ng hay sai? System.out.println( 12 & 9); s xut tr bao nhiu? Phn tch dng code: if (5&7>0 && 5|3) System.out(Hello) ; int m= System.in.read(); nu g vo phm C, tr bin m l bao nhiu?
82

2.11- Bi tp
Vit cc chng trnh sau: (1) Xut bng cu chng t 2 n 9.

Mail to:Nhuongld@yahoo.com

(2)
(3)

Xut tr bnh phng , lp phng t 1 n 10.


To 1 mng s int dng in-line 10 phn t, xut mng ny tng dn.

(4)

Nhp 1 mng int cc s mang tr l m ca cc k t nhp t


bn phm. Xut mng ny dng ch ri xut m ca chng.

(5)

Xut 100 s Fibonacci u tin. Dy Fibonacci : 1,1,2,3,5,8,

2 s u l 1, cc s sau bng tng 2 s trc n.

83

CHNG 03
NHP MN LP TRNH HNG I TNG

Introduction to OOP

84

Mc tiu

Mail to:Nhuongld@yahoo.com

Nhn bit s khc bit gia lp trnh hng th tc v lp trnh hng i tng. Phn tch, thit k v hin thc c mt chng trnh theo phng php hng i tng.

Nhn din mt s ngn ng OOP.


Nhn bit cc khi nim c bn ca OOP.

85

Ni dung chi tit

Mail to:Nhuongld@yahoo.com

T lp trnh cu trc n lp trnh hng i tng. Phng php lp trnh hng i tng. u im ca lp trnh hng i tng.

86

3.1- Lp trnh th tc POP- Procedure Oriented Programming. Data structure + Algorithm = Program K thut POP:

Mail to:Nhuongld@yahoo.com

Program struct XX {..... }; type Fun (XX x) {..... }; Operation (function)

pick nouns Problem pick verbs

Data structure

void main() { X x; Fun(x); };

87

3.2- Nhc im ca POP

Mail to:Nhuongld@yahoo.com

Din t thiu t nhin C hc sinh x Vit l lch cho hc sinh x x i, vit l lch i em
Din t no t nhin hn?

VietLyLich(x);

x.VietLyLich();

x i, vit l lch i em
Slide 88/

Nhc im ca POP...

Mail to:Nhuongld@yahoo.com

Kh m t nhng quan h phc tp ca th gii t nhin. Biu din dng cu trc phc tp, khng phi l

d dng i vi nhiu ngi.


Quan h gia cc d liu c biu din bng cu trc lng nhau hoc mt pointer. Tnh phn lp kh c pht hin, c kh khn trong biu din ln tnh d hiu.

Th d slide sau.

89

Nhc im ca POP...
T nhin Person Hin thc struct PERSON {.... }; is a struct MALE { PERSON Data <d liu thm> }; struct FEMALE { PERSON Data <d liu thm> };

Mail to:Nhuongld@yahoo.com

is a

Male

Female

Din t phi tng minh khng t nhin

90

Nhc im ca POP...

Mail to:Nhuongld@yahoo.com

Bo mt km do khng th gii hn truy xut n mt d liu.

struct STUDENT { char Name[21]; int Age; int Score; };

void main() {STUDENT x = { Hoa, 19, 5}; x.Age=1000; Bn ngh sao v 2 tc x.Score=-20; v ny? };

Cn mt phng php lp trnh khc gip gii quyt nhng nhc im ny. OOP c nhng c im vt tri so vi POP v l hng lp trnh ch o hin nay.

91

3.3- Lp trnh hng i tng


OOP Object Oriented Programming.

Mail to:Nhuongld@yahoo.com

Chng trnh l s hot ng ca cc i tng Ging t nhin. i tng thc thi mt hot ng tc l i tng thc hin mt hnh vi m i tng ny c kh nng. Mt chng trnh l mt trt t cc li yu cu i tng thc hin hnh vi ca mnh. Chng trnh l mt kch bn (script).

92

3.4- u im ca OOP

Mail to:Nhuongld@yahoo.com

D m t cc quan h phn cp trong th gii t nhin.


T nhin Person Hin thc class PERSON {.... };

is a

is a

class MALE: PERSON {<d liu thm> };

t nhin

Male

Female

class FEMALE: PERSON { <d liu thm> };

93

u im ca POP...

Mail to:Nhuongld@yahoo.com

C tnh bo mt cao: Bn ngoi khng th ty tin truy cp mt d liu thuc tnh.

94

u im ca OOP: D ti s dng code

Mail to:Nhuongld@yahoo.com

Ti s dng code

Ti s dng code
95

1.5- S lc v OOP
i tng (object): Bao gi d liu + hnh vi. i tng phi thuc mt lp (class). Xy dng mt i tng l xy dng mt lp

Mail to:Nhuongld@yahoo.com

Class = data (bin, thuc tnh)+ methods (code). 3 khi nim c bn ca OOP

Bao gi (ng gi) d liu + hnh vi.


Tnh tha k: Mt lp c th tha k t lp khc. Tnh a hnh: K thut cho php c khc bit gia code ca cng mt hnh vi trong lp cha v trong lp con.

96

3.6- Ngn ng OOP


C++ ( Borland C++, Visual C++) Java

Mail to:Nhuongld@yahoo.com

C# ( C sharp)
Visual Basic. ..... C++, MS VC++: h tr c POP ln OOP Lai OOP. H tr a tha k. i tng l bin ca chng trnh. Hm main() l POP. Java (Sun), C# (Microsoft): ch h tr OOP, hm main phi nm trong mt lp. Ch h tr n tha k.

97

3.7- Phng php gii bi ton theo OOP


Program

Mail to:Nhuongld@yahoo.com

pick nouns

properties

Problem

Bao gi d liu v hnh vi thnh class

class XX { type1 prop1; type2 prop2; ....... type Method1(...) { } ..... }; void main() { X x; // object variable x.Method(...); };

pick verbs

Operation (function, method, behavior)

98

Gii bi ton hng POP vi C

Mail to:Nhuongld@yahoo.com

Vit chng trnh nhp, xut 1 hc sinh. Thng tin cn quan tm v 1 hc sinh: M hc sinh (8 k t), tn hc sinh (30 k t), im (int).

Danh t: Hc sinh cu trc HS


ng t: Bt u;

Nhp mt hs Hm Nhap(HS&hs)
Xut mt hs Hm Xuat(HS hs); Ngng.

99

Gii bi ton hng POP vi C++

Mail to:Nhuongld@yahoo.com

100

Gii bi ton hng OOP

Mail to:Nhuongld@yahoo.com

101

i chng hai cch hin thc

Mail to:Nhuongld@yahoo.com

102

Tm tt
POP: Xem d liu v tc v ri nhau. Cc nhc im ca POP

Mail to:Nhuongld@yahoo.com

M t cc quan h gia cc i tng d liu trong t nhin theo cac1h khng t nhin. Kh ti s dng code. Bo mt km. OOP: Xem d liu v tc v l mt th thng nht. u im ca OOP: M t cc quan h gia cc i tng d liu trong t nhin theo cch t nhin. D ti s dng code. C c ch bo mt d liu.
103

Cu hi
Trnh by phng php lp trnh POP. Trnh by phng php lp trnh OOP.

Mail to:Nhuongld@yahoo.com

Trc nghim
(1) Vi khai bo struct, ta vn c th to c ch bo mt mt thnh phn d liu. (a) ng (b) Sai.

(2)

Vi khai bo struct, mun thao tc n d liu bt buc phi


thng qua mt hm. (a) ng (b) Sai.

(3)

ti s dng code C++, code c ti s dng phi c

trong mt file v khng c hm main. (a) ng (b) sai.

104

Bi tp

Mail to:Nhuongld@yahoo.com

Dng OOP vi C++. Vit chng trnh nhp vo 3 hc sinh, xut thng tin chi tit v 3 hc sinh ny gm: M, tn, im trung bnh. Thng tin v mt hc sinh: M, Tn, im 3 mn hc.

105

CHNG 04
CC KHI NIM C BN V LP TRNH HNG I TNG

Basic Concepts in OOP

106

Mc tiu
Nm vng mt s nh ngha trong OOP bao gm: Tru tng ha d liu. Lp, i tng, th hin. Thng ip v gi thng ip. Tnh bao ng. Tnh k tha. Tnh a hnh

Mail to:Nhuongld@yahoo.com

107

Ni dung
Kiu d liu tru tng (abstract data type) i tng-Lp-th hin

Mail to:Nhuongld@yahoo.com

Thng ip (message)
Tnh bao ng (encapsulation) Tnh k tha (inheritance)

Tnh tng ng bi-a hnh (polymorphism)


Lp v i tng trong Java

108

4.1- Kiu d liu tru tng


Abstract Data Type. Kt qa ca vic khi qut ha cc thc th.
Khi qut ha int, NGUOI, PERSON l cc ADT

Mail to:Nhuongld@yahoo.com

1 5 7 -3 8 ....

S nguyn ( int )

Danh t chung trong ngn ng t nhin Ngi ( PERSON ) <Code, Name, date_of_birth, Address, e-mail .......>

Khi qut ha

attributes

109

4.2- i tng, Lp, Th hin


POP: ADT dng struct + cc functions OOP : class = <ADT + Functions>

Mail to:Nhuongld@yahoo.com

class: Hin thc ca mt tp cc i tng (object) cng loi Cng m t, cng hnh vi. Th hin instance: Mt thng tin v mt i tng c trong b nh ca chng trnh.

110

4.3- Thng ip, thng bo - Message

Mail to:Nhuongld@yahoo.com

Send a message: Yu cu 1 i tng thc thi mt hnh vi. Th d:

x l mt HOCSINH < Name, Age>


x.VietLyLich(); String S= x.getName(); int n= x.getAge();

111

4.4- Bao ng - Encapsulation

Mail to:Nhuongld@yahoo.com

Che du i d liu. Bn ngoi ch tng tc c vi i tng qua mt s hnh vi. Hnh vi giao tip (public, interface methods): Hnh vi gip i tng giao tip vi mi trng. Hnh vi ring/ni (private, internal): hnh vi x l d liu ni ti ca i tng).

getTen() getNamSinh() getTenNguoiYeu()

class NGI Tn NmSinh TnNgiYu .... TiuHa() Nut() i() ng() Chy() Nhy() .......

112

Bao ng.....
class CIRLCE

Mail to:Nhuongld@yahoo.com

public int getX()


public void setX(int xx) public int getY() public void setY(int yy) int x, y, r; int BorderColor; int BkColor;

Vi khai bo ny, bn ngoi c th truy cp 2 thuc tnh mu hay khng?

public int getR()


public void setR(int r) public double getPerimeter() public double getArea()

113

Gi khi thit k mt lp

Mail to:Nhuongld@yahoo.com

Ta cn bit nhng thng tin g v mt i tng thuc lp ny. D liu m t.

Ta (bn ngoi) thc s cn x l g (ng t) trn i tng


Hnh vi giao tip. c c hnh vi giao tip, c cn nhng x l thm m bn

ngoi khng cn bit hay khng? Hnh vi ni.

Bi tp ti ch
Thit k lp m t v x l mt hc sinh, bit rng hc sinh phi hc 3 mn hc.

114

4.5- Tnh k tha- Inheritance


Mail to:Nhuongld@yahoo.com

K thut cho php ti s dng code Tit kim cng sc xy dng + test. Mt lp c tha hng (code +methods) t lp c. Quan h lp cha-lp con. Tha k n (single inheritance): Mt lp ch c th c ti a mt lp cha. Tha k bi (a tha k, multi-inheritance): Mt lp ch c th c nhiu lp cha.

Mi ngn ng h tr kh nng tha k khc nhau: C++: a tha k, Java, C#: n tha k.

115

Tha k...
class PERSON ID_Num Name YearOfBirth Address getID_Num() setID_Num(newID) ...... class STUDENT RollNum Score getScore() setSore(newScore) ......

to:Nhuongld@yahoo.com Mail c ci tng ng

class STUDENT ID_Num Name YearOfBirth Address getID_Num() setID_Num(newID) ...... RollNum Score getScore() setSore(newScore) ...... Con = Cha + mt t

tha k

quan h l 1

tnh cht ring

Ch phi hin thc bng ny

116

K thut phn cp tha k

Mail to:Nhuongld@yahoo.com

(1) Lit k c im ca cc i tng cn

quan tm.
(2) Tm tp giao ca cc tnh cht gia cc lp, tch tp giao ny xy dng lp

cha.
(3) t 1 tn gi c ngha cho lp cha. (4) Phn cn li sau khi tch tp giao l cc lp con.

117

Tha k - Bi tp lm ti ch
Phn tch phn cp tha k cho cc lp:

Mail to:Nhuongld@yahoo.com

Hng in my <m hng, tn hng, nh sn xut, gi, thi gian

bo hnh, in p, cng sut>


Hng snh s < m hng, tn hng, nh sn xut, gi, loi nguyn liu>

Hng thc phm <m hng, tn hng, nh sn xut, gi, ngy sn


xut, ngy ht hn dng>

118

Tha k- Bi tp v nh

Mail to:Nhuongld@yahoo.com

Phn tch phn cp tha k cho cc i tng trong mt hc vin: Nhn vin qun l <m nv, tn nv, nm sinh, trnh , trng o to, chuyn mn, lng cb, ph cp chc v> Nhn vin nghin cu <m nv, tn nv, nm sinh, trnh , trng o to, chuyn mn, lng cb, ph cp c hi> Nhn vin phc v<m nv, tn nv, nm sinh, trnh , lng cb>

119

4.6- Tnh a hnh-Polymorphism

Mail to:Nhuongld@yahoo.com

K thut cho php thay i ni dung ca cng mt hnh vi trong 2 lp cha con.

Bn cht: Sa code ca cng mt hnh vi 2 lp cha con cc


code ny khc nhau. Th d: Lp SHAPE c hnh vi Draw() nhng ba lp con RECTANGLE, TRIANGLE, CIRCLE han2h vi ny phi c th hin khc nhau

120

CHNG 05
LP KIU D LIU TRU TNG

CLASS ABSTRACT DATA TYPE

121

n tp

Mail to:Nhuongld@yahoo.com

ADT : Kha qut ha mt tp i tng thnh mt kiu d liu. ADT c th l mt cu trc hoc mt class. Object = cc thuc tnh m t (thnh phn d liu)+ cc hnh vi (thnh phn hm) class: ADT cho mt tp cc i tng tng t nhau (cng data, cng functions). Instance: Mt m t ca i tng trong b nh ca chng trnh. Ba khi nim c bn trong OOP: ng gi, Tha k, a hnh. ng gi (encapsulation) : Gi d liu + hnh vi (code), bn ngoi ch c th truy cp mt s thuc tnh hoc hnh vi ca i tng ca mt lp thng qua cc cng c giao tip. Tha k: Mt lp c th tha hng d liu v hnh vi ca lp cha. Mt ngn ng OOP c th h tr n tha k hoc a tha k. a hnh: Kh nng cho php vit li code ca mt hnh vi c tha k to ra nhng khc bit trong ng x gia lp cha v lp con cho cng mt hnh vi. Gi thng ip l yu cu mt i tng thc thi mt hnh vi m i tng ny c.
122

Mc tiu
Nm vng cu trc ca mt lp. Nm vng cc ch th truy cp. Gii thch c constructor v destructor. Gii thch c khi nim i tng hin hnh. Truy cp thnh phn tha k t lp cha. Hin thc c lp bng Java.

Mail to:Nhuongld@yahoo.com

123

Ni dung
5.1- Cu trc 1 lp v access modifiers 5.2- S dng mt lp 5.3- Ch th this 5.4- Overloading mt hnh vi 5.5- Hnh vi khi to (constructor) 5.6- Ch th super 5.7- Hnh vi hy (destructor) 5.8- Thnh phn static 5.9- Ch th final

Mail to:Nhuongld@yahoo.com

5.10- Phng php gii bi ton vi Java


5.11 Chy ng dng Java c tham s 5.12- Mt s lp c bn ca Java
124

5.1- Cu trc 1 lp v access modifiers

Mail to:Nhuongld@yahoo.com

Lp: Hin thc chung cho mt tp cc i tng c cng c im v hnh vi.

Mt lp c th l lp con ca mt lp c.
Hin thc lp:
Khai bo mc cho php s dng. Khai bo lp cha Khai bo cc thnh phn thuc tnh. Hin thc code cc hnh vi.

Lp v mi thnh phn cn phi ch nh mc cho php truy cp (tnh bo mt) access modifier Mi ngn ng OOP quy nh c php ring cho vic hin thc lp.

125

Cu trc mt lp
class A Access Modifiers

Mail to:Nhuongld@yahoo.com

l con class B

Cc gii hn truy cp 1. Cho php truy cp t do (public) 2. Ch cho php trong cng mt gi truy cp 3. Khng cho bn ngoi truy cp (private). 4. Ch cho lp con truy cp (protected). 5. Khng cho php lp con hiu chnh (final).

Field_1 Field_2 ....... Method_1() Method_2() ..........

126

C php khai bo class trong Java

Mail to:Nhuongld@yahoo.com

[Modifier] class CLASSNAME extends FATHERCLASSNAME { [Modifier] DataType1 Property1 [=Value]; [Modifier] DataType2 Property2 [=Value]; [Modifier] DataType MethodName( DataType Arg,) { <code> } } Khng c modifier : Mc nh l friendly, cho php cc i tng thuc cc class cng package ( cng th mc)truy cp

127

c tnh truy xut


Modifier Cng class Cng gi, khc class lp con trong cng gi vi lp cha private YES NO NO friendly YES YES YES protected YES YES YES

Mail to:Nhuongld@yahoo.com

public YES YES YES

Khc gi, khc lp Lp con khc gi vi lp cha

NO NO

NO NO

NO YES

YES YES

128

5.2- S dng mt lp

Mail to:Nhuongld@yahoo.com

nh ngha bin i tng. Bin i tng trong Java l tham kho (a ch) ca vng nh cha d liu ca i tng.
1000

data

obj ClassName obj ;

1000 obj= new ClassName();

129

Th d 1

Mail to:Nhuongld@yahoo.com

Error

Lp public th tn file.java phi trng vi tn lp V khi bn ngoi truy cp, nhn tn file l bit tn lp

Nu khng l lp public, tn lp v tn file c th khc nhau V lp ny ch dng trong mt gi (package)

130

Th d 2

Mail to:Nhuongld@yahoo.com

t kha this ch th i tng ang thao tc. Nh phn bit c tham s x v thnh phn x

131

Th d 3

Mail to:Nhuongld@yahoo.com

access modifier l private m trong main vn truy cp c v main nm trong khai bo lp

132

Th d 4

Mail to:Nhuongld@yahoo.com

Sa li lp VONGTRON: khng c main

Xy dng lp SDVT s dng lp VONGTRON trong cng th mc. Bin dch c li v trong lp SDVT khng th truy cp private method ca lp VONGTRON

133

Th d 5

Mail to:Nhuongld@yahoo.com

Lp SDVT truy cp trc tip c thuc tnh x ca vong trn v v khai bo thuc tnh ny l friendly khng ch nh modifier. Hai file ny cng th mc nn SDVT truy cp c thuc tnh ny.

134

Th d 6

Mail to:Nhuongld@yahoo.com

Trong lp VONGTRON, x,y,r c thuc tnh protected. Nhng, lp SDVT cng th mc vi lp VONGTRON nn c th truy cp thuc tnh ny.

135

3.3- Ch th this

Mail to:Nhuongld@yahoo.com

Khi hin thc hnh vi ca 1 lp. Truy xut mt thnh phn bng chnh tn ca thnh phn ny hoc this.tnThnhPhn.

Khi tham s trng vi tn thuc tnh th nh t kha this chng ta


phn bit r thuc tnh vi tham s. Cc mi trng lp trnh Java hin nay hu ht u c tr gip ng

cnh. Do vy, qua t kha this, ngi lp trnh d truy cp 1 thnh


phn ca lp.

136

Th d

Mail to:Nhuongld@yahoo.com

137

Th d

Mail to:Nhuongld@yahoo.com

Truy cp thnh phn qua t kha this

Truy cp thnh phn khng qua t kha this

138

5.4- Overloading mt hnh vi

Mail to:Nhuongld@yahoo.com

Overloading: K thut cho php xy dng cc hnh vi trng tn nhng khc ch k (signature) trong cng mt lp.

Ch k bao gm:
S lng tham s. Th t cc kiu ca cc tham s.

139

Th d

Mail to:Nhuongld@yahoo.com

3 hnh vi cng c tn l setData

140

5.5- Hnh vi khi to (constructor)

Mail to:Nhuongld@yahoo.com

Hnh vi c thc thi ngay vo lc khi to i tng. Mt lp c th c 0/1/n contructor.

C php constructor
[Modifier] ClassName ( Parameters) { <code> }

Ch :
Constructor khng c kiu tr tr.

141

Constructor....
-

Mail to:Nhuongld@yahoo.com

Constructor khng tham s cn c gi l constructor chun. Ngn ng c sn 1 constructor chun lm cng vic xa trng vng

nh cha d liu ca i tng Tr 0/null.


Khi mt lp c constructor th constructor mc nh ca ngn ng khng cn c p dng na.

Tp cc constructor hnh thnh cc cch nh ngha i tng.


nh ngha mt i tng khng theo mt mu constructor s gy li.

142

Mail to:Nhuongld@yahoo.com Th d: constructor ca ngn ng (g 3 phm)

1000
Nu l constructor t to th vic khi to tr ban u c n nh bi code trong constructor.

0 z 0 y 0 x

b
143

Th d: constructor l mu khi to i tngMail to:Nhuongld@yahoo.com

Nu mt lp c constructor th constructor mc nh ca ngn ng khng c s dng na.

144

Th d: lp c nhiu constructor

Mail to:Nhuongld@yahoo.com

Vit li default constructor constructor t to

Copy constructor

145

Th d: gi hnh vi trong constructor

Mail to:Nhuongld@yahoo.com

146

Gi khi xy dng constructor

Mail to:Nhuongld@yahoo.com

Vic thng lm l gn tr cho cc thnh phn d liu ca i tng. S constructor c trong mt lp thng l nhng dng d liu ca i

tng m ta mun c ngay lc ban u.

147

5.6- Ch th super

Mail to:Nhuongld@yahoo.com

Dng truy xut d liu hoc hnh vi k tha t lp cha.

Gi constructor ca lp cha Gi method tha k t lp cha

148

Super...

Mail to:Nhuongld@yahoo.com

nh: Xy dng hnh vi outData trong lp con bng cch gi hnh vi outData ca lp cha ri xut cost.

Error

Trong Java, nu dng super th super phi l dng code u tin trong constructor ca lp con
149

super...

Mail to:Nhuongld@yahoo.com

Vit li hnh vi outData trong lp con

150

5.7- Hnh vi hy (destructor)

Mail to:Nhuongld@yahoo.com

i tng sng k t khi ta khi to i tng (bng ton t new) cho n ht khi cha n. Khi ra khi khi cha i tng, ta ni i tng cht.
{ ..... ....... ClassName obj = new ClassName(); ...... ..... ..... } Gc nhn thi gian: Thi gian sng ca i tng Gc nhn ni dung vn bn chng trnh: Tm vc (scope) ca i tng

Mt s ngn ng OOP ( C++, C#) cho php ta vit code s c thc thi vo lc i tng cht nhm tr ti nguyn cp pht ng. Java ch dng cch cp pht i tng ng, c trnh gom rc ring v khng h tr hnh vi hy.

151

5.8- Thnh phn static

Mail to:Nhuongld@yahoo.com

i khi ta mun mt d liu, mt on code, mt hnh vi l ton cc trongmt lp Dng ch th static.

D liu static l D LIU TON CC.


Hnh vi static l hnh vi ton cc Code static l CODE TON CC v ch thao tc ln d liu static.

Truy xut d liu v code ny thng qua tn lp hoc mt i tng


thuc lp c thnh phn static. (1) ClassName.StaticMember

(2) ClassName obj= new ClassName();


obj. StaticMember

152

D liu static- Th d

Mail to:Nhuongld@yahoo.com

Truy xut static data bng tn lp

Truy xut static data bng tn i tng thuc lp


153

Hnh vi static- Th d

Mail to:Nhuongld@yahoo.com

Nhn xt Hnh vi static c bn ngoi s dng m khng cn khai bo bin i tng thuc lp. Do vy, hnh vi static thng c tham s khng lin quan n i tng thuc lp.
154

Code static- Th d
C php a mt on code static: static { <code> }

Mail to:Nhuongld@yahoo.com

Code static c thc thi ngay khi lp c code ny c tham kho ti.

155

Code static- Th d

Mail to:Nhuongld@yahoo.com

Code static ch tham kho d liu static

156

Code static th d

Mail to:Nhuongld@yahoo.com

Nu c nhiu on code static, cc on code ny c thc thi tun t

157

Code static vi constructor

Mail to:Nhuongld@yahoo.com

Constructor chun khng ng n thnh phn stattic

158

Code static vi constructor

Mail to:Nhuongld@yahoo.com

tham kho khi cha c i tng tham kho khi c i tng

V khi c i tng, constructor c code lm thay i tr ca n nn kt qa khc i.

Slide 159/81

5.9- Ch th final

Mail to:Nhuongld@yahoo.com

Lm sao khng cho php k tha t mt lp ( lp khng con). Lm sao khng cho php sa mt d liu ( mun d liu l hng). Dng ch th final

160

final Data l hng cm sa

Mail to:Nhuongld@yahoo.com

161

final class l lp khng con

Mail to:Nhuongld@yahoo.com

162

Final method l hnh vi khng cho php lp con vit li Mail to:Nhuongld@yahoo.com

163

5.10- Phng php gii bi ton vi Java

Mail to:Nhuongld@yahoo.com

Bi ton n gin
Bi ton phc tp

164

5.10.1- Bi ton n gin

Mail to:Nhuongld@yahoo.com

M t ca bi ton

Danh t n gin ng t

class BaiToan { public static void main(String args[]) { < bin> <code x l> } }

165

Bi ton n gin -Th d

Mail to:Nhuongld@yahoo.com

Vit chng trnh xut 100 s Fibonacci u tin. Dy Fibonacci : 1,1,2,3,5,8, 2 s u l 1, cc s sau bng tng 2 s trc n

class BaiToan { public static void main (String args[]) { int t1=1, t2=1, t3=1; for (int i=1; i<=100; i++) if (i>2) { t3= t1+t2; t1=t2; t2=t3; } System.out.println(t3 + , ); } }

166

5.10.2- Bi ton phc tp


Bi ton khng qa phc tp

Mail to:Nhuongld@yahoo.com

class BaiToan { // Properties


Kiu TnField [=TrKhiTo];

Danh t phc tp (cu trc)


M t ca bi ton

// Mi ng t l 1 hnh vi Type HnhVi (...) { } public static void main (String args[]) { BaiToan obj= new BaiToan(...); obj.HnhVi_1(); obj.HnhVi_2(); ....... }

tc ng

ng t Th t ca cc ng t

}
167

Th d

Mail to:Nhuongld@yahoo.com

Vit chng trnh in ra 3 nhn vin (tn,lng)

class NhnVin { String Tn; long Lng; NhnVin( String t, long l) { Tn=t; Lng=l; void Xut() { System.out.prinln( Tn , + Lng); } public static void main (String args[]) { NhnVin nv1= new NhnVin(Hoa, 100); NhnVin nv2= new NhnVin(Linh, 120); NhnVin nv3= new NhnVin(Lan, 150); nv1.Xut(); nv2.Xut(); nv3.Xut(); } }

168

Bi ton phc tp
Bi ton phc tp. Xem cc th d cc chng sau cc khi nim (nhm danh t m t) M t ca bi ton class KhiNim1 { <data> <method> }

Mail to:Nhuongld@yahoo.com

class KhiNim2 { <data> <method> }

tc ng

ng t Th t ca cc ng t mc c bi ton

class BaiToan { KhiNim1 obj1 = new KhiNim1(); KhiNim2 obj2 = new KhiNim2(); <hnh vi chung mc c bi ton> public static void main (String args[]) { BaiToan obj= new BaiToan(...); obj.HnhViChung1(); obj.HnhViChung2(); ....... } }

169

Tm tt
class = Members Member = Datum/method

Mail to:Nhuongld@yahoo.com

Access modifier: public, private, protected


Khng c access modifier c hiu l friendly T kha this: Ch th.................................... constructor l .......................................... Super: T kha truy cp lp cha v nu c th phi xut hin dng u tin ca constructor trong lp con.

170

Tm tt
Ch th static dng ch th ..................... ............................................................... Truy xut thnh phn static ca mt lp bng cch (1): ........................................................ (2):.........................................................

Mail to:Nhuongld@yahoo.com

Ta c th truy xut on code static m khng l hnh vi ca 1 lp khng?

171

Tm tt

Mail to:Nhuongld@yahoo.com

Tp cc constructor ca 1 lp to ra................................................... Java c h tr destructor?

D liu final l ......................................


Hnh vi final l hnh vi ............................. Lp final l lp ...................................

172

Bi tp:

Mail to:Nhuongld@yahoo.com

D liu ca cc bi ton c a vo bi ton thng qua constructor

Bi tp 1:Vit chng trnh xut ra danh sch nhn vin gm 10 ngi theo dng: M Tn Ngy vo lm lng NV001 Hoa 2004-07-21 10000 .......................................................... (cc thng tin v ngi khc sinh vin t n nh) Bi tp 2:Tng t bi 1 nhng thay v m t lng bng 1 con s, m t lng thng qua h s lng nhn vi lng c bn l mt d liu static (xem li th d). Bi tp 3: Vit chng trnh xut ra din tch, chu vi ca 5 vng trn vi hng PI=3.141592 c khai bo l hng vi ch th final. Bn knh vng trn sinh vin t n nh

173

5.11- Chy ng dng vi tham s

Mail to:Nhuongld@yahoo.com

Chng trnh Java c th a vo d liu nhp khi chy chng trnh 1 cng c nhp d liu.

C php:
java File.class arg0 arg1

174

Th d:

Mail to:Nhuongld@yahoo.com

import java.io.*; class InputCommandLine { public static void main (String args[]) { for (int i=0;i< args.length; ++i) System.out.print(args[i]+ (i< args.length?",":"")); } }
Chy JVM file.class mng tham s args

D:\Su\BaiGiang2008\Java\BtCh5>java InputCommandLine Mat Uot Mi Mat,Uot,Mi D:\Su\BaiGiang2008\Java\BtCh5>


Cc tham s l cc chui k t

175

Chy chng trnh c tham s vi JCreator Mail to:Nhuongld@yahoo.com


Trong JCreator, chy chng trnh c tham s, ta phi to Project.

Project: D n, mt tp cc file ca mt phn mm.

Slide 176/81

To Project

Mail to:Nhuongld@yahoo.com

hoc

177

t tn cho project

Mail to:Nhuongld@yahoo.com

178

Kt qa: Project trng (chn File view)

Mail to:Nhuongld@yahoo.com

179

Thm 1 file

Mail to:Nhuongld@yahoo.com

180

Vit chng trnh

Mail to:Nhuongld@yahoo.com

181

Ch nh tham s cho chng trnh

Mail to:Nhuongld@yahoo.com

182

t tham s nhanh:

Mail to:Nhuongld@yahoo.com

183

Bi tp

Mail to:Nhuongld@yahoo.com

(1) Vit chng trnh tnh tng cc s t chui tham s nhp ca chng trnh. (2) Vit chng trnh xut cc tham s ca chng trnh theo th t tng dn.

184

5.12- Mt s lp c bn ca Java.
Lp Object Lp String Cc lp gi (wrapper) Lp Math

Mail to:Nhuongld@yahoo.com

185

5.12.1- Lp Object

Mail to:Nhuongld@yahoo.com

L lp cha ca mi lp trong java ( trc tip/gin tip) c trong gi java.lang (java.lang.Object) nh ngha cc trng thi c bn v cc phng thc c bn ca mi lp phi c nh: So snh n vi 1 i tng khc (equals), chuyn i m t thnh chui (toString), i (wait) iu kin, nhn bit (notify) cc i tng khc khi bin iu kin c thay i, ly Class (getClass)

186

Lp Object (tt)

Mail to:Nhuongld@yahoo.com

187

Th d

Mail to:Nhuongld@yahoo.com

Student2@18d107f Kt qa ca method toString() : Tn lp + @ + a ch h 16 ca thc th

188

5.12.2- Lp String - chui k t


nh ngha 1 String: String Str1=Hello; String Str2= new String(Hi); Ni String String Str3= Str1 + Str2; // Str3=HelloHi String Str4 = Str3 + 1; // Str4= HelloHi1

Mail to:Nhuongld@yahoo.com

String pool ( h/ bng cha chui)


Khi nhiu bin String cng mang 1 ni dung, chng cng ch n 1 phn t trong String pool Th d: String Str1 = Hello; String Str5= Hello;

I love you Str1 Str5

Hello
Forget me not
189

Lp String (tt)- Methods

Mail to:Nhuongld@yahoo.com

190

Lp String (tt)- Methods

Mail to:Nhuongld@yahoo.com

191

Lp String (tt)- Methods

Mail to:Nhuongld@yahoo.com

192

Th d v lp String

Mail to:Nhuongld@yahoo.com

Cc hnh vi ca lp String tr v chui kt qa th s tr v chui mi cn chui gc khng i. Nu mun lm thay i chui gc th dng lp StringBuffer cng thuc gi java.lang. Cc han2h vi cng tng t nh lp String.

193

5.12.3-Cc lp gi (wrappers)
D liu thuc kiu c bn nh int, long, char,... ch l d liu khng c hnh vi kt hp. Wrapper , trong gi java.lang, l lp bao ly cc kiu d liu c bn nhm to ra tnh OOP cho cc kiu c bn. Cc hnh vi ca lp Wrapper a s l cc hnh vi static hin thc cc thao tc ln d liu thuc kiu tng ng.
Integer obj2 Integer obj1 int x 1100 1000

Mail to:Nhuongld@yahoo.com

32 15

1100 1000 5

Bin thuc lp Wrapper cha a


ch ca d liu.

int x=5; Integer obj1= new Integer(15); Integer obj2= new Integer(32);

Slide 194/81

Wrapper classes

Mail to:Nhuongld@yahoo.com

Data type boolean byte char

Wrapper class Boolean Byte Character

c Documentation bit v cc hnh vi ca cc wrapper class

double float int long short

Double Float Integer Long Short

195

Wrapper-Th d

Mail to:Nhuongld@yahoo.com

196

5.12.4- Lp Math
Trong gi java.lang Cha cc hm x l ton hc.

Mail to:Nhuongld@yahoo.com

L lp final.

197

Th d:

Mail to:Nhuongld@yahoo.com

Hm random tr tr [ 0.0, 1.0 ]

198

Bi np: Np vo bui hc k tip


Chn mt trong cc bi np sau:

Mail to:Nhuongld@yahoo.com

Dch tp tin tr gip v mt lp Wrapper trong Java Documentation.

Dch tp tin tr gip v lp String trong Java Documentation.


Dch tp tin tr gip v lp StringBuffer trong Java Documentation. Dch tp tin tr gip v mt lp Math trong Java Documentation.

199

Chng 06 TNH K THA V A HNH INHERITANCE - POLYMORPHISM

200

n tp
mt d liu hay mt hnh vi ca 1 lp.

Mail to:Nhuongld@yahoo.com

Accsess modifier: ch th mc cho php bn ngoi truy cp vo Khi thit k 1 lp: Cc yu t sau cn c xem xt chn access modifier ph hp. Nu mun kt thc mt lp( lp khng con), mt hnh vi (khng cho hiu chnh), mt d liu (l hng): Dng ch th final.

D liu static l d liu ton cc ca chng trnh.


Code static l code c thc thi ngay lc lp c tham kho n. Hnh vi static l hm ton cc.

Truy xut thnh phn static thng qua tn lp hoc mt i tng


thuc lp.

201

n tp

Mail to:Nhuongld@yahoo.com

Constructor: Hnh vi c thc thi ngay lc khi to i tng. Tp cc constructor to ra tp cc mu khi to bin i tng.

Mt i tng sng t lc i tng c khi to (bng new) cho


n khi khi cha n c thc thi xong. Tm vc ca 1 i tng l vng vn bn chng trnh t lc nh

ngha bin n ht khi cha bin ny.


Destructor: Hnh vi c thc thi vo lc i tng cht ( Java khng h tr destructor).

202

c tnh truy xut


Modifier Cng class private YES NO NO NO NO friendly YES YES YES NO NO protected YES YES YES NO YES

Mail to:Nhuongld@yahoo.com

public YES YES YES YES YES

Cng gi, khc class


lp con trong cng gi vi lp cha Khc gi, khc lp Lp con khc gi vi lp cha

203

Mc tiu
Gii thch c:
Tha k l g trong OOP.

Mail to:Nhuongld@yahoo.com

Cc loi tha k trong cc ngn ng OOP.


a hnh l g trong OOP.

Phn bit c k thut Overloading v overriding.

Hin thc c c im tha k trong OOP vi Java.


Hin thc c c im a hnh trong OOP vi Java. S dng c ton t instanceOf v p kiu trong Java

Gii thch c nhng tnh hung c th xy ra khi p kiu.


Gii thch c loi tham s trong hm ca Java.

204

Ni dung
6.1- Tnh k tha Inheritance. 6.2- Cc loi tha k.

Mail to:Nhuongld@yahoo.com

6.3- Hin thc lp con trong Java.


6.4- Tnh a hnh. 6.5- K thut Overriding

6.6- Quan h qia cc lp


6.7- Ton t instanceof 6.8- Vn p kiu trong Java

6.9- Tham s ca hm trong Java

205

6.1- Tnh k tha Inheriatance

Mail to:Nhuongld@yahoo.com

Kh nng mt lp tha hng data v code t mt hay nhiu lp khc.

K thut gip ti s dng code Tit kim cng sc lp trnh, cng


sc kim tra code.

206

6.2- Cc loi tha k.


n tha k a tha k ( tha k bi)

Mail to:Nhuongld@yahoo.com

Mi ngn ng OOP h tr kh nng tha k ring.


C++ : a tha k. C# , Java : n tha k

207

6.3- Hin thc lp con trong Java.


Lp con l m rng ca lp cha

Mail to:Nhuongld@yahoo.com

class CLASSNAME extends FATHERCLASSNAME { DataType1 Property1 [=Value]; DataType2 Property1 [=Value]; CLASSNAME (DataType Arg,) // constructor { } [Modifier] DataType MethodName( DataType Arg,) {} }

208

Th d v tha k
Mail to:Nhuongld@yahoo.com

300

200 150 25 Quang P03 150 25 Luan P02 21 Hoa P01

200

100

mng emp p

300 200 100


209

Bi tp
Phn tch phn cp tha k cho cc lp:

Mail to:Nhuongld@yahoo.com

Hng in my <m hng, tn hng, nh sn xut, gi, thi gian

bo hnh, in p, cng sut>


Hng snh s < m hng, tn hng, nh sn xut, gi, loi nguyn liu>

Hng thc phm <m hng, tn hng, nh sn xut, gi, ngy sn


xut, ngy ht hn dng> Vit chng trnh to mi loi mt mt hng c th. xut thng tin

v cac1 mt hng ny.


Gi : cch vit tng t th d va ri.

210

6.4- Tnh a hnh - Polymorphism

Mail to:Nhuongld@yahoo.com

a hnh thi, nhiu cch phn ng khc nhau cho cng mt hnh vi. Lp A c hnh vi M().

Lp B l con ca lp A, trong lp B vit li hnh vi M().


C bin i tng obj. Ti thi im t1: obj ch n mt thc th A. obj.M() s cho mt phn ng. Ti thi im t2: obj ch n mt thc th B. obj.M() s cho mt phn ng khc. Tnh a hnh c c l nh k thut override hnh vi gia 2 lp cha con.

211

6.5- K thut Overriding

Mail to:Nhuongld@yahoo.com

Override: ghi , thay th code mt hnh vi tha k t lp cha lp con phn ng khac1 vi phn ng ca lp cha khi cng c

yu cu thc thi hnh vi ny.


Khc bit gia overloading v overriding:
Overloading: K thut cho php nhiu hnh vi trng tn nhng khc

ch k trong cng mt lp.


Overriding: K thut cho php sa code ca mt hnh vi m lp con tha k t lp cha lp con phn ng khc vi lp cha.

212

Mail to:Nhuongld@yahoo.com

Th d v overload v override
overloading method: cng tn, khc tham s, cng lp

overriding method: cng tn, cng tham s, hai lp cha con

213

Th d...

Mail to:Nhuongld@yahoo.com

thm ui

thm u

214

to:Nhuongld@yahoo.com Th d: i tng lp cha nhng c th li lMail lp con

Bin i tng l tham kho nn hon ton c th khai bo bin l lp cha nhng khi to bin l i tng thuc lp con.

Tnh a hnh

215

6.6- Quan h gia cc lp


Quan h cha con : tnh tha k ( bn ri).

Mail to:Nhuongld@yahoo.com

Quan h bao gp: Lp c thnh phn d liu l th hin ca 1 lp

khc.
Lp thnh phn l lp bn ngoi. Lp thnh phn l lp bn trong

216

6.6.1-Lp c d liu l mt i tng ca lp Mail ngoi to:Nhuongld@yahoo.com


Chng trnh xut ha n

217

Mail to:Nhuongld@yahoo.com Lp c d liu l mt i tng ca lp ngoi...

218

Lp c d liu l mt i tng ca lp ngoi... Mail to:Nhuongld@yahoo.com

219

6.6.2-Lp ni Inner/nested class


L lp c khai bo bn trong mt lp khc. Lp trong truy xut c lp ngoi.

Mail to:Nhuongld@yahoo.com

Lp ngoi c phi c t nht mt thnh phn l instance ca lp


trong v truy xut cac1 instance ny.

220

Inner class...
C php: class Outter { . class Inner { } }

Mail to:Nhuongld@yahoo.com

Lp ngoi mun truy cp lp trong th phi nh ngha 1 i tng lp trong ( bng ton t new )

Li ch: C th vit code truy xut lp ngoi t lp trong m khng cn nh ngha i tng lp ngoi

221

Lp ni:
Lp ngoi khng th truy cp trc tip lp trong

Mail to:Nhuongld@yahoo.com

222

Inner class:

Mail to:Nhuongld@yahoo.com

Lp ngoi truy cp thnh phn l i tng thuc lp trong, lp trong truy cp trc tip lp ngoi

223

6.7- Ton t instanceof

Mail to:Nhuongld@yahoo.com

Ton t instanceof c 2 ton hng Ton hng tri: Mt i tng Ton hng phi: Tn 1 lp Tr tr: true: Nu i tng thuc lp ny. false: nu i tng khng thuc lp ny.

224

6.8- Vn p kiu trong Java


type casting Copy d liu t kiu ny sang kiu khc. C th b trn s Phi ch khi lp trnh.

Mail to:Nhuongld@yahoo.com

00000000000000000110110110101101 Chuyn kiu nh sang kiu ln: gi nguyn tr 0110110110101101 10101101 Chuyn kiu ln sang kiu nh: b trn s (overflow) 0000000000101101 00101101 gi nguyn tr

225

Th d v p kiu

Mail to:Nhuongld@yahoo.com

b, kiu byte: -128.. 127

overflow

226

6.9- Tham s ca hm trong Java


Tham s trong hm (hnh vi) ch l tham tr.

Mail to:Nhuongld@yahoo.com

Hm Swap1 khng th lm thay i tr ca tham s xx v yy Hm Swap2 hon v x, y ca d liu ca lp (tm vc bn ngoi hm) nn hon v s thnh cng

227

Th d: Tham s l mng

Mail to:Nhuongld@yahoo.com

Tham s l mng (a ch phn t u) nn hm x l hiu qa

n tp v khai bo mng

228

Mail to:Nhuongld@yahoo.com Th d: Tham s l i tng th d liu ca i tng s b i

229

Chng 7 LP TRU TNG

Abstract Class

230

n tp

Mail to:Nhuongld@yahoo.com

Tha k: K thut cho php ti s dng data v code Lp con tha hng cc c im ca lp cha. Trong Java, ch nh tha k bng t kha extends ( lp con l m rng) ca lp cha. Overloading method: K thut cho php trong mt lp c cc hnh vi trng tn nhng khc ch k.

Overriding method: K thut cho php vit li code ca hnh vi m lp con tha
k t lp cha to ra s khac bit. a hnh trong OOP c c l nh k thut Overriding. Khi p kiu (type casying) ln sang kiu nh c th b trn tr. Kim tra mt i tng c thuc v mt lp hay khng bng toan1 t instanceof. Tham s trong hm Java l tham s tr.
231

Mc tiu
Gii thch c lp tru tng l g.

Mail to:Nhuongld@yahoo.com

Hin thc c lp tru tng, hnh vi tru tng bng Java. Gii thch c im ca lp tru tng.

232

Ni dung
7.1- Lp tru tng l g? 7.2- Hin thc lp tru tng v hnh vi tru tng. 7.3- c im ca lp tru tng.

Mail to:Nhuongld@yahoo.com

233

7.1- Lp tru tng l g?

Mail to:Nhuongld@yahoo.com

Xem kt qa ca vic khi qut ha sau:


Bn c hnh dung ni mt ANIMAL di chuyn nh th no khng?

class ANIMAL void Travel();

Khng Tru tng

class Bird
Bn c hnh dung ni mt i tng thuc cc lp ny di chuyn nh th no khng?

class Fish void Travel()


C c th

class Snake void Travel()

void Travel()

234

Lp tru tng- Abstract class

Mail to:Nhuongld@yahoo.com

L kt qa ca vic khi qut ha qa cao n ni khng bit vit code th no.

L lp c nhng hnh vi ch khai bo m khng vit code. dnh


code c th s c hin thc cc lp dn xut ( lp c th hn). T duy t nhin: T cc i tng c th Lp c th. T cc lp c th c cng tnh cht lp tru tng.

235

Lp tru tng -Bi tp ti lp

Mail to:Nhuongld@yahoo.com

M t cc lp cho hnh trn, hnh ch nht, hnh vung, hnh tam gic. Dng k thut phn tch phn cp tha k, khi qut ha cc lp ny sinh ra mt lp tru tng c hnhh vi tnh din tch v tnh chu vi.

LAB:
Ci t cc lp ny. Vit chng trnh khai bo bin thuc lp tru tng. ut din tch v chu vi ca 5 hnh khc nhau. Din tch hnh tam gic khi bit ta 3 im (x1, y1), (x3, y3), (x3, y3): x21=x2 - x1; y21=y2 - y1; x31=x3 - x1; y31=y3 - y1; Din tch = | y21*x31-x21*y31 | /2;

236

Lp tru tng.

Mail to:Nhuongld@yahoo.com

T duy theo li chuyn gia: Khai bo lp tru tng trc ( hoc tp cc hnh vi m ta gi l inteface hc sau) cc lp c th

hin thc cc hnh vi ny sau.


Lp cha l lp tru tng, lp con cha hin thc cc hnh vi tru tng c k tha t lp cha th lp con ny vn l lp tru

tng.

237

7.2- Hin thc lp tru tng

Mail to:Nhuongld@yahoo.com

C php khai bo lp tru tng Abstract class ClassName { <data>


abstract [modifier] Type MethodName (Args) ;

Kt hp cho php abstract public abstract protected

Kt hp KHNG cho php abstract private abstract static abstract final

238

Hin thc lp tru tng

Mail to:Nhuongld@yahoo.com

Hnh vi khng c ch th abstract th phi c code

C hnh vi abstract m lp khng c ch th abstract

239

Abstract class- Th d

Mail to:Nhuongld@yahoo.com

Cha th vit code v lng 1 ngi = lng c bn * h s

240

7.3- c im ca lp tru tng.


Khng th khi to mt i tng thuc lp tru tng (abstract) m ch khi to i tng thuc lp c th (concrete).

Mail to:Nhuongld@yahoo.com

241

Tham kho lp cha ch n lp con

Mail to:Nhuongld@yahoo.com

V bin i tng l tham kho ch n i tng nn mt bin thuc lp cha nhng li ch n mt lp con l iu hon ton kh thi d lp cha l lp tr tng hay l lp c th. Y L CCH DNG TNH A HNH TRONG OOP

242

Lp con cng l lp tru tng

Mail to:Nhuongld@yahoo.com

Bin lp ng ch n i tng lp chu

243

Mail to:Nhuongld@yahoo.com Ch v kt hp abstract vi cc ch th khc

244

TM TT

Mail to:Nhuongld@yahoo.com

Lp tru tng- abstract class- l sn phm ca qa trnh khi qut ha qa cao. Lp tru tng l lp c hnh vi tru tng. C php khai bo lp tru tng abstract class A

{ ....
abstract [modifier] Type Method(args) }
public, protected, friendly

245

Tm tt

Mail to:Nhuongld@yahoo.com

Lp c th (concrete class) l lp ch cha cc hnh vi c th (c code).

Lp con ca mt lp tru tng m cha c th ha mt hnh vi


tru tng tha k t lp cha th lp con ny cng l lp tru tng.

246

Chng 8
LI LC THC THI v QU TRNH GOM RC Exception Garbage Collection

247

Mc tiu

Mail to:Nhuongld@yahoo.com

Gii thch c li c php v li thc thi chng trnh. Gii thch c m hnh i tng Exception ca Java. Gii thch c c php by li bng try...catch... finally. S dng c throw v throws trong code, T nh ngha c Exception.

Gii thch c c ch gom rc ca Java.

248

Ni dung
8.1- Cc loi li ca chng trnh 8.2- Cu trc cc lp qun l li ca Java.

Mail to:Nhuongld@yahoo.com

8.3- By li bng try...catch...finally


8.4- Lan truyn li 8.5- Xut Exception 8.6- T nh ngha Exception 8.7- C ch gom rc

249

8.1- Cc loi li ca chng trnh

Mail to:Nhuongld@yahoo.com

BEGIN

Syntax error

Bi ton

Hin thc

Code

Compile

Wrong result END Correct result Run-time error ( Eception ) Run

No Syntax error Chng trnh

250

Cc loi li ca chng trnh


Compile-time error = Syntax error

Mail to:Nhuongld@yahoo.com

Run-time error = Exception, tnh hung bt bnh thng xy ra

trong khi chng trnh thc thi.


Khi c Exception:
C th l my b treo (Halt).

Chng trnh ngt t ngt, iu khin tr v cho OS, OS thu hi b


nh ca chng trnh ( ui ra ngoi ).

Cn c c ch iu khin tnh hung ny.

251

8.2- Cu trc cc lp qun l li ca Java


cc exception.

Mail to:Nhuongld@yahoo.com

Java l ngn ng mnh (robust) nn c cc h tr gip ti thiu ha Khi c run-time error, thng tin v li ny c my o t ng pht ra thng qua mt i tng Exception. y l i tng c pht sinh ng (dynamic thrown object) t my o, i tng ny c th by t chng trnh nh c ch giao tip gia my o v chng trnh.

Java cung cp mt tp rt nhiu cc lp m t cc li cng vi c ch


by li gip developer c th qun l cc exception trong code ca chng trnh.

Gi java.lang nh ngha rt nhiu lp li run-time. Tham kho Java Documentation.

252

Cu trc cc class qun l li ca Java


Object Throwable Error
AWTError ThreadDead SQLException ClassNotFoundException

Mail to:Nhuongld@yahoo.com

Exception RuntimeException
ArithmeticException NullPointerException NumberFormatException

Khi 1 error/exception xy ra, ta ni rng n b thrown (throw)

253

Lp Throwable

Mail to:Nhuongld@yahoo.com

Cc lp Exception u c dn ra t lp ny. Cha cc hnh vi gip truy xut thng tin v li nh:
ni dung m t li : getMesage(), toString() ni dung stack lc gy li: getStackTrace(), printStackTrace(), ....

254

Mt s lp qun l li ca Java
class Exception

Mail to:Nhuongld@yahoo.com

Gii thch Lp nn ca cc run-time error

RuntimeException
ArithmeticException IllegalArgumentException

Lp nn ca nhiu lp run-time error


Li do thc thi mt php ton Li sai i s ca hm

ArrayIndexOutOfBoundsException
NullPointerException SecurityException

Li do ch s ngoi tm ca mng
Li do truy xut mt i tng m cha khi to Li do truy cp b cm

ClassNotFoundException

Li do khng tm thy file.class

255

Mt s lp qun l li ca Java
class NumberFormatException IOException FileNotFoundException EOFException IllegalAccessException NoSuchMethodException InterruptedException Li xut nhp

Mail to:Nhuongld@yahoo.com

Gii thch Li do khng ng dng s

Li do khng tm thy file Li do c truy cp ni dung 1 file khi cui file Li do truy cp 1 class b cm Li do vit sai tn hnh vi Li do ngt ngang 1 lung lnh ang c thc thi

256

8.3-By li bng Try...Catch...Finally

Mail to:Nhuongld@yahoo.com

chng trnh vn c th tip tc hot ng, ngi lp trnh cn phi d on li c th xy ra by li. By li bng c php: try...catch ...finally ...

try { < cc lnh th lm> } catch ( Exception1 e1) { < code x l li> } catch ( Exception2 e2) { < code x l li> } finally { <cc lnh s lm d c li hay khng> } // Buc phi c {...} d ch c 1 pht biu

257

By li bng try...catch...finally
D on li:

Mail to:Nhuongld@yahoo.com

Ti mt thi im, developer c th d on chnh xc cc li c

th xy ra. Th d: Nhp d liu t bn phm vo 1 s thng qua


hp thoi, c 2 tnh hung: ngi dng khng nhp (user cancel), ngi dng nhp ch.

C th tng qut ho cc li nh lp cha (Exception) qun l


chung.

258

By li- Th d

Mail to:Nhuongld@yahoo.com

259

By li Th d

Mail to:Nhuongld@yahoo.com

260

By li mc tng qut

Mail to:Nhuongld@yahoo.com

Dng i tng mc tng qut ( lp Exception). Xem li hnh v v cu trc qun l li ca Java trong cc slide trc

261

By li tham kho mng ngoi tm ch s

Mail to:Nhuongld@yahoo.com

Mng 5 phn t m li truy cp a[10] By li mc tng qut

262

By li tham kho mng ngoi tm ch s

Mail to:Nhuongld@yahoo.com

Mng 5 phn t m li truy cp a[10] By li c th

263

8.4- Lan truyn li


Exception propagation

Mail to:Nhuongld@yahoo.com

Li lan truyn t trong ra cho n khi gp by li hoc ti main v ng

dng b ngng.
catch(...) A() B() C() Chiu lan truyn li

Chiu gi hm

D()

Exception

264

Lan truyn li- Th d

Mail to:Nhuongld@yahoo.com

main(...)

output(...)

getPos(...)
265

Chn lan truyn li- Th d

Mail to:Nhuongld@yahoo.com

By li

v chng trnh tip tc

266

Gi hnh vi c xut li trong code

Mail to:Nhuongld@yahoo.com

Chng trnh gi Calculator ca MS Windows trong Java

Hnh vi exec(String) ca lp RunTime c throw mt exception. Khi s dng mt tc v c xut exception trong khai bo mt method, trnh bin dch s nhc nh chng ta rng cn phi by li ny trong code

267

8.5- Xut Exception


Exception thng do JVM xut ra.

Mail to:Nhuongld@yahoo.com

Code chng trnh c th xut ch ng xut ra 1 i tng

exception bng t kha throws, throw


Mc hnh vi: dng ch th throws ( ch ngi th 3 s t ca ng t throw) 63 bo cho JVM xut mt loi Eception khi c li.

Nu l code trong hnh vi th dng ch th throw ( ch y l


mnh lnh cc ngi th hai ca ng t throw). Khi throw trong code ca thn hm, phi yu cu to i tng

Exception bng ton t new.


ng nhin khi ch ng xut li, chng trnh s ngt ngay.

268

Xut Exception ti khai bo method

Mail to:Nhuongld@yahoo.com

269

Xut Exception trong thn method

Mail to:Nhuongld@yahoo.com

gn message cho Exception

270

8.6- T nh ngha Exception

Mail to:Nhuongld@yahoo.com

Ngi lp trnh c th t nh ngha mt loi Exception da trn cc loi Exception c. Phng php khai bo mt user-defined exception: Tn lp exception Tn lp cha

Thng bo li.

271

T nh ngha Exception

Mail to:Nhuongld@yahoo.com

272

8.7- C ch gom rc
Rc: i tng khng cn c truy tham kho n.

Mail to:Nhuongld@yahoo.com

Garbage Collector: Trnh gom rc, l mt lung c thc thi khi my

rnh hoc l khi c yu cu cp b nh m b nh khng cn .


Application ch ng gi trnh gom rc bng: System.gc(); Tuy nhin, GC c u tin km, nu JVM rnh th GC mi thc thi. C th gi GC thng qua lp Runtime, lp cha thng tin v mi trng thc thi trong my o. Khi app ch ng gi gc(), ng dng chp nhn tm dng JVM chy trnh gom rc.

Chy ng dng m khng cho php gom rc (chp nhn ri ro do thiu


b nh) bng c php java noasyncgc File.class
273

Mail to:Nhuongld@yahoo.com Gom rc: i tng v tham kho n i tng

Java cung cp phng thc finalize() hat ng nh 1 Destructor ca C++ hy cc qu trnh trc khi qa trnh tr iu khin v cho h iu hnh. Ch : Ch c i tng mi b gom rc ch tham kho n i tng khng b gom. C php: protected void finalize() throws Throwable

1000

1000

rc

obj
A obj;

1000

1000

1000

obj = new A(...);

obj = null;

274

C ch gom rc- Nhn din rc

Mail to:Nhuongld@yahoo.com

{ ... Object a = new Object(); Object b= a; a= null; } i tng va to l rc cha?

{ ..... Object a = new Object(); a= null; } i tng va to l rc cha?

{ ..... Object a = new Object(); // i tng 1 a= new Object (); // i tng 2 } i tng 1 l rc cha?

275

Th d: Truy xut mi trng thc thi v Ch ng gom rc Mail to:Nhuongld@yahoo.com

276

Lp RunTime M t mi trng ca my o. Cho php gi 1 ng dng.

Mail to:Nhuongld@yahoo.com

277

Lp RunTime Gi ng dng ca OS

Mail to:Nhuongld@yahoo.com

278

Truy cp lp System

Mail to:Nhuongld@yahoo.com

Ba i tng thnh phn: in : Bn phm out, err : mn hnh Cc nhm hnh vi: -Truy xut mi trng (env) - Truy xut thuc tnh (property) - Truy xut thi gian (Time)

279

Th d

Mail to:Nhuongld@yahoo.com

280

Tm tt
2 loi error: syntax error, run-time error. run-time error c gi l exception.

Mail to:Nhuongld@yahoo.com

Khi mt exception, JVM xut ng mt object (cha m t v


exception ny). Lp trn cng ca cc error l lp Throwable ( lp cho cc i tng xut ng ca JVM) C rt nhiu Exception trong cc gi th vin ca Java.

281

Tm tt
By li bng try ... catch... finally

Mail to:Nhuongld@yahoo.com

Nu hnh vi cha mt code c th gy li, ch th bng throws

Trong code ca hnh vi, c th xut mt exception bng


throw new ExceptionClass (Msg); T nh ngha mt Exception l khai bo mt lp k tha mt

Exception c.

282

Tm tt
Java cung cp sn mt garbage collector.

Mail to:Nhuongld@yahoo.com

Ch ng gi GC bng System.gc() hoc thng qua mt i tng

RunTime.
class RunTime cha thng tin v mi trng thc thi Java app. Thi gian trong Java l mt s long theo n v mili giy k t 1-1-

1970.
S dng java.util.Date thao tc vi d liu thi gian.

C th thng qua i tng System ly thi gian hin hnh ca

my (theo mili, nano second).

283

Bi tp

Mail to:Nhuongld@yahoo.com

To lp m t v thao tc trn mng cc s int c qun l li truy cp. Cc tc v: cc constructor: chun, cp pht mng cha ti a MaxN phn t, sao chp mng c, Nhp, ly phn t th i, xut, sp xp tng, sp xp gim, chn tr x vo v tr th i,... To lp m t v thao tc trn ma trn cc s int c qun l li truy cp.

284

You might also like