Professional Documents
Culture Documents
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
Mail to:Nhuongld@yahoo.com
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
Mail to:Nhuongld@yahoo.com
Mail to:Nhuongld@yahoo.com
Chy
Mail to:Nhuongld@yahoo.com
Ci t JCreator Pro
Mail to:Nhuongld@yahoo.com
Chy
Cc th mc kt qa
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
12
Cu hnh JCreator-slide 3
Mail to:Nhuongld@yahoo.com
13
Cu hnh JCreator-slide 4
Mail to:Nhuongld@yahoo.com
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
Mail to:Nhuongld@yahoo.com
Th mc c php
Kch i th mc
Th mc cha cc on code mu
16
Mail to:Nhuongld@yahoo.com
compile
ca s trng thi
17
Mn hnh kt qa
18
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
Mail to:Nhuongld@yahoo.com
20
Mail to:Nhuongld@yahoo.com
Chn ni dung
21
Mail to:Nhuongld@yahoo.com
22
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
Kch 2 m
24
Ch ng c Java Documentation
Mail to:Nhuongld@yahoo.com
25
Mail to:Nhuongld@yahoo.com
26
Mail to:Nhuongld@yahoo.com
27
CHNG 1
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
29
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)
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
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.
Java l g?
Mail to:Nhuongld@yahoo.com
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,
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.
34
c im ca Java (tt)
Tnh tng thch kh chuyn (Portability) Chng trnh Java
Mail to:Nhuongld@yahoo.com
Compiler
IBM
Macintosh
Sparc
35
c im ca Java (tt)
dch sang lnh my lc thc thi
Mail to:Nhuongld@yahoo.com
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
Mail to:Nhuongld@yahoo.com
language
38
1.3.1- JVM l g?
Mail to:Nhuongld@yahoo.com
platform
39
JVM l g? (tt)
Mail to:Nhuongld@yahoo.com
(2) Qun l b nh
(3) Thc thi gom rc
Mail to:Nhuongld@yahoo.com
Begin
Mail to:Nhuongld@yahoo.com
Nh chc nng bytecode verifier, kim tra code format v quyn truy xut
Interpreter
Run-time code
Hardware
End
42
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.
43
Mail to:Nhuongld@yahoo.com
(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
Mail to:Nhuongld@yahoo.com
(4)
46
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
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
Mail to:Nhuongld@yahoo.com
Lu tr vi tn HelloWorld.java- tn lp l tn file
import java.io.*
^ 1 error E:\BaiGiang2008\Java>javac HelloWorld.java E:\BaiGiang2008\Java>java HelloWorld
Hoc bin dch vi th mc hin hnh l th mc cha source code . Bin dch thnh cng v chy ng dng
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.
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
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.
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
55
Mail to:Nhuongld@yahoo.com
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
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
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
Mail to:Nhuongld@yahoo.com
Description
float
doubl e char
0.0
0.0 \u0000
4
8 2
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
60
Mail to:Nhuongld@yahoo.com
Mail to:Nhuongld@yahoo.com
~, &, |, ^ (xor), >>, <<, &=, |=, ^=, >>=, <<= = , +=, -=, *=, /=, %=
62
Mail to:Nhuongld@yahoo.com
63
Mail to:Nhuongld@yahoo.com
ca java.
Cc lp c bn nht: class Object, class Class l cc lp c s ca mi lp khc.
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
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
Mail to:Nhuongld@yahoo.com
Cu trc r nhnh
}
Ging C
Ging C
67
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
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 }
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
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
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
Mail to:Nhuongld@yahoo.com
Mu CT Java
72
Mail to:Nhuongld@yahoo.com
73
Mail to:Nhuongld@yahoo.com
74
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
75
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
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.
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
Mail to:Nhuongld@yahoo.com
JOptionPane.showMessageDialog(this,message");
Ngi dng phi kch nt OK ca hp thoi Khi cn nhp 1 chui:
78
Mail to:Nhuongld@yahoo.com
int Response=JOptionPane.showConfirmDialog(this,"Confirm?");
JOptionPane.CANCEL_OPTION // nt Cancel tr 2
79
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?
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)
(4)
(5)
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.
85
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
Data structure
87
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
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
90
Nhc im ca POP...
Mail to:Nhuongld@yahoo.com
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
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
is a
is a
t nhin
Male
Female
93
u im ca POP...
Mail to:Nhuongld@yahoo.com
94
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
96
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
Mail to:Nhuongld@yahoo.com
pick nouns
properties
Problem
class XX { type1 prop1; type2 prop2; ....... type Method1(...) { } ..... }; void main() { X x; // object variable x.Method(...); };
pick verbs
98
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).
Nhp mt hs Hm Nhap(HS&hs)
Xut mt hs Hm Xuat(HS hs); Ngng.
99
Mail to:Nhuongld@yahoo.com
100
Mail to:Nhuongld@yahoo.com
101
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)
(3)
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
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)
108
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
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
Mail to:Nhuongld@yahoo.com
111
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).
class NGI Tn NmSinh TnNgiYu .... TiuHa() Nut() i() ng() Chy() Nhy() .......
112
Bao ng.....
class CIRLCE
Mail to:Nhuongld@yahoo.com
113
Gi khi thit k mt lp
Mail to:Nhuongld@yahoo.com
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
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) ......
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
116
Mail to:Nhuongld@yahoo.com
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
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
Mail to:Nhuongld@yahoo.com
K thut cho php thay i ni dung ca cng mt hnh vi trong 2 lp cha con.
120
CHNG 05
LP KIU D LIU TRU TNG
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
Mail to:Nhuongld@yahoo.com
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).
126
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
Mail to:Nhuongld@yahoo.com
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
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
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
132
Th d 4
Mail to:Nhuongld@yahoo.com
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.
136
Th d
Mail to:Nhuongld@yahoo.com
137
Th d
Mail to:Nhuongld@yahoo.com
138
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
140
Mail to:Nhuongld@yahoo.com
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
142
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
144
Th d: lp c nhiu constructor
Mail to:Nhuongld@yahoo.com
Copy constructor
145
Mail to:Nhuongld@yahoo.com
146
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
147
5.6- Ch th super
Mail to:Nhuongld@yahoo.com
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
150
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
Mail to:Nhuongld@yahoo.com
152
D liu static- Th d
Mail to:Nhuongld@yahoo.com
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
156
Code static th d
Mail to:Nhuongld@yahoo.com
157
Mail to:Nhuongld@yahoo.com
158
Mail to:Nhuongld@yahoo.com
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
Mail to:Nhuongld@yahoo.com
161
Mail to:Nhuongld@yahoo.com
162
Final method l hnh vi khng cho php lp con vit li Mail to:Nhuongld@yahoo.com
163
Mail to:Nhuongld@yahoo.com
Bi ton n gin
Bi ton phc tp
164
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
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
Mail to:Nhuongld@yahoo.com
// 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
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
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
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
171
Tm tt
Mail to:Nhuongld@yahoo.com
172
Bi tp:
Mail to:Nhuongld@yahoo.com
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
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
175
Slide 176/81
To Project
Mail to:Nhuongld@yahoo.com
hoc
177
t tn cho project
Mail to:Nhuongld@yahoo.com
178
Mail to:Nhuongld@yahoo.com
179
Thm 1 file
Mail to:Nhuongld@yahoo.com
180
Mail to:Nhuongld@yahoo.com
181
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
188
Mail to:Nhuongld@yahoo.com
Hello
Forget me not
189
Mail to:Nhuongld@yahoo.com
190
Mail to:Nhuongld@yahoo.com
191
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
int x=5; Integer obj1= new Integer(15); Integer obj2= new Integer(32);
Slide 194/81
Wrapper classes
Mail to:Nhuongld@yahoo.com
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
198
Mail to:Nhuongld@yahoo.com
199
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.
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.
202
Mail to:Nhuongld@yahoo.com
203
Mc tiu
Gii thch c:
Tha k l g trong OOP.
Mail to:Nhuongld@yahoo.com
204
Ni dung
6.1- Tnh k tha Inheritance. 6.2- Cc loi tha k.
Mail to:Nhuongld@yahoo.com
205
Mail to:Nhuongld@yahoo.com
206
Mail to:Nhuongld@yahoo.com
207
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
100
mng emp p
Bi tp
Phn tch phn cp tha k cho cc lp:
Mail to:Nhuongld@yahoo.com
210
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().
211
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
212
Mail to:Nhuongld@yahoo.com
Th d v overload v override
overloading method: cng tn, khc tham s, cng lp
213
Th d...
Mail to:Nhuongld@yahoo.com
thm ui
thm u
214
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
Mail to:Nhuongld@yahoo.com
khc.
Lp thnh phn l lp bn ngoi. Lp thnh phn l lp bn trong
216
217
218
219
Mail to:Nhuongld@yahoo.com
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
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
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
overflow
226
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
n tp v khai bo mng
228
229
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
Mail to:Nhuongld@yahoo.com
class Bird
Bn c hnh dung ni mt i tng thuc cc lp ny di chuyn nh th no khng?
void Travel()
234
Mail to:Nhuongld@yahoo.com
235
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
tng.
237
Mail to:Nhuongld@yahoo.com
238
Mail to:Nhuongld@yahoo.com
239
Abstract class- Th d
Mail to:Nhuongld@yahoo.com
240
Mail to:Nhuongld@yahoo.com
241
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
Mail to:Nhuongld@yahoo.com
243
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
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.
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
249
Mail to:Nhuongld@yahoo.com
BEGIN
Syntax error
Bi ton
Hin thc
Code
Compile
250
Mail to:Nhuongld@yahoo.com
251
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.
252
Mail to:Nhuongld@yahoo.com
Exception RuntimeException
ArithmeticException NullPointerException NumberFormatException
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
RuntimeException
ArithmeticException IllegalArgumentException
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
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
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
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
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
Mail to:Nhuongld@yahoo.com
262
Mail to:Nhuongld@yahoo.com
263
Mail to:Nhuongld@yahoo.com
dng b ngng.
catch(...) A() B() C() Chiu lan truyn li
Chiu gi hm
D()
Exception
264
Mail to:Nhuongld@yahoo.com
main(...)
output(...)
getPos(...)
265
Mail to:Nhuongld@yahoo.com
By li
266
Mail to:Nhuongld@yahoo.com
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
Mail to:Nhuongld@yahoo.com
268
Mail to:Nhuongld@yahoo.com
269
Mail to:Nhuongld@yahoo.com
270
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
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 = null;
274
Mail to:Nhuongld@yahoo.com
{ ..... Object a = new Object(); // i tng 1 a= new Object (); // i tng 2 } i tng 1 l rc cha?
275
276
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
281
Tm tt
By li bng try ... catch... finally
Mail to:Nhuongld@yahoo.com
Exception c.
282
Tm tt
Java cung cp sn mt garbage collector.
Mail to:Nhuongld@yahoo.com
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.
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