Professional Documents
Culture Documents
Java Bai2 (OOP)
Java Bai2 (OOP)
MOV BX, CS SUB BX, 10h JNE label1 LOOP label2 ...
Proc1
Proc3
Proc2
Object B
Object C
Object D
c im ca OOP
Tnh ng gi (Encapsulation) Tnh k tha (Inheritance) Tnh a hnh (Polymorphism)
6
Lp Time
// File Time.java import java.text.DecimalFormat; public class Time { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59 // Cau tu public Time() { setTime( 0, 0, 0 ); } // Ham thiet lap du lieu public void setTime( int h, int m, int s ) { hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 ); }
Lp Time
// Chuyen sang khuon dang thoi gian quoc te public String toUniversalString() { DecimalFormat twoDigits = new DecimalFormat( "00" ); return twoDigits.format( hour ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ); } // Chuyen sang khuon dang thoi gian thong thuong public String toStandardString() { DecimalFormat twoDigits = new DecimalFormat( "00" ); return ( (hour == 12 || hour == 0) ? 12 : hour % 12 ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ) + ( hour < 12 ? " AM" : " PM" ); } 9 } // Ket thuc lop Time
Lp Time
D liu
Mi d liu phi c mt phm vi nht nh
Phng thc
Cu t c tn trng vi tn lp Cu t khng c kiu tr v C th c nhiu cu t (overloading) Mi phng thc phi c mt phm vi nht nh
10
Lp TimeTest
// File TimeTest.java import javax.swing.JOptionPane; public class TimeTest { public static void main( String args[ ] ) { Time time = new Time(); // Tao mot doi tuong kieu Time // Lay thoi gian String output = "The initial universal time is: " + time.toUniversalString() + "\nThe initial standard time is: + time.toStandardString(); // Dat lai thoi gian time.setTime( 13, 27, 6 ); output += "\n\nUniversal time after setTime is: " + time.toUniversalString() + "\nStandard time after setTime is: " + time.toStandardString();
11
Lp TimeTest
// Dat lai thoi gian time.setTime( 99, 99, 99 ); output += "\n\nAfter attempting invalid settings: " + "\nUniversal time: " + time.toUniversalString() + "\nStandard time: " + time.toStandardString();
JOptionPane.showMessageDialog( null, output, "Testing Class Time1", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } // Ket thuc ham main } // Ket thuc lop TimeTest
12
Chy TimeTest
javac TimeTest.java java TimeTest
13
Phm vi truy cp
private
Ch truy cp c t trong lp khai bo.
protected
Truy cp c t trong lp khai bo, lp con ca ca lp khai bo v cc lp cng gi vi lp khai bo.
public
Truy cp c t mi ni.
Mc nh
Truy cp c t trong lp khai bo v cc lp cng gi vi lp khai bo.
14
T kho this
T kho this ch i tng hin thi
public class Time { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59 // Viet lai ham setTime public void setTime( int hour, int minute, int second ) { this.hour = ( ( hour >= 0 && hour < 24 ) ? hour : 0 ); this.minute = ( ( minute >= 0 && minute < 60 ) ? minute : 0 ); this.second = ( ( second >= 0 && second < 60 ) ? second : 0 ); }
15
Np chng hm khi to
// Ham khoi tao khong tham so public Time() { this( 0, 0, 0 ); } // Ham khoi tao mot tham so public Time( int h ) { this( h, 0, 0 ); } // Ham khoi tao hai tham so public Time( int h, int m ) { this( h, m, 0 ); } // Ham khoi tao ba tham so public Time( int h, int m, int s ) { setTime( h, m, s ); } // Ham sao chep public Time( Time time ) { this( time.hour, time.minute, time.second ); } // Su dung cac cau tu Time t1 = new Time(); // 00:00:00 Time t2 = new Time( 2 ); // 02:00:00 Time t3 = new Time( 21, 34 ); // 21:34:00 Time t4 = new Time( 12, 25, 42 ); // 12:25:42 Time t5 = new Time( 27, 74, 99 ); // 00:00:00 Time t6 = new Time( t4 ); // 12:25:42
16
Mt s t kho
T kho final
p dng cho lp, phng thc, bin. Lp final: l lp khng th c lp con public final class NoChild {...} Bin final: l bin khng th thay i khi gn gi tr private final int MAX = 100; Phng thc final: l phng thc khng th np chng public final void NoOverride();
17
Mt s t kho
T kho static
c dng vi phng thc v bin. Bin static: l bin chung cho mi i tng ca lp, n c truy cp qua i tng ca lp hoc qua tn lp. private static char TAB = \t; Phng thc static: l phng thc ch c php truy cp ti cc bin static ca lp, n c th gi ngay c khi cha c i tng no ca lp. public static void Welcome() {...}
18
K tha (Inheritance)
K tha l vic xy dng lp mi da trn lp c sn
Lp c sn l lp cha: superclass Lp mi l lp con: subclass
V d:
Hnh vung k tha t hnh ch nht Con ch k tha t loi ng vt di nc
Ch :
Tnh k tha th hin quan h is a, khc vi quan h has a (composition) Composition: mt i tng cha cc i tng thuc lp khc. V d: t c cc bnh xe
19
Cy k tha
Animal
TerrestrialAnimal
AquaticAnimal
Cat
Horse
Chicken
Fish
Octopus
20
public double getArea() { return Math.PI*radius*radius; } public double getCircum() { return 2*Math.PI*radius; }
21
T kho super
T kho super ch i tng ca lp cha
super(radius): Gi cu t ca lp cha
Question: Thm phng thc tnh din tch mt ct qua tm hnh cu ? Answer: chnh l din tch hnh trn
// Them phuong thuc nay trong lop Sphere public double getAreaCut() { return super.getArea(); } // ... // Ham main, goi Tinh dien tich mat cat System.out.println(Area cut of sphere: " + sphere.getAreaCut()); // ...
24
a hnh (Polymorphism)
V d:
class A { public void method() { System.out.println(method of A); } }
class B extends A { public void method() { System.out.println(method of B); } } class C extends A { public void method() { System.out.println(method of C); } } // Cu lnh trong main A a = new A(); a.method(); a = new B(); a.method(); C c = new C(); a = c; a.method(); // Kt qu method of method of method of mn hnh A B C
25
a hnh (Polymorphism)
Tnh a hnh th hin qua vic: cng mt phng thc nhng c ni dung thc hin khc nhau trn cc i tng khc nhau. Phng thc gi c xc nh thng qua i tng c tham chiu, khng thng qua kiu khai bo ca tham chiu. Trong Java, cc phng thc lun mang tnh a hnh.
26
27
Lp tru tng
Lp tru tng (abstract) thng c t nht mt phng thc tru tng, l phng thc khng c ci t.
public abstract void draw();
Cc lp con ca mt lp cha tru tng phi ci t tt c cc phng thc tru tng. Nu khng n cng s tr thnh lp tru tng. Khng th to cc i tng ca mt lp tru tng nhng c th khai bo bin thuc kiu lp tru tng tham chiu n cc i tng thuc lp con ca n.
28
Lp tru tng
public abstract class Shape { static final double PI = 3.14159; public abstract double getArea(); public abstract double getVolume(); } class Circle extends Shape { double radius; public double getArea() { return PI*radius*radius; } public double getVolume() { return 0; } } class Cube extends Shape { double a, b, c; public double getArea() { return 2*(a*b+b*c+c*a); } public double getVolume() { return a*b*c; } }
29
30
Mt giao tip thng ch cha cc hng static v cc phng thc public cha ci t. Mt giao tip c th tha k mt giao tip khc. Mt lp c th ci t (implements) mt hay nhiu giao tip nhng ch c th tha k (extends) t mt lp.
31
32
Gi (package)
Package cho php nhm mt tp hp cc lp hoc cc giao tip c quan h vi nhau d dng qun l, bo tr, phn phi V d: To package Transport cha cc lp v phng tin i li: Car, Moto, Boat... t cc lp vo cng th mc Transport Khai bo u mi lp dng
package Transport;
33
Gi (package)
S dng package cch 1: Khai bo import
V d 1: import V d 2: import V d 3: import Point p Transport.Car; Transport.*; java.awt.Point; = new Point(1,2);
Ch :
Ch c th truy cp c n cc lp public trong cc package Package java.lang.* c t ng import vo mi chng trnh
34
Java vs C++
1. Mt chng trnh Java chy chm hn so vi mt chng trnh C tng ng khong 20 ln. Java khng c kiu lit k (enum), kiu cu trc (struct) hay hp (union), n ch c class. Mi bin hay hm ca Java u nm trong mt class no . Java khng c ton t phm vi (scope) :: C ca cc kiu d liu nguyn thu (primitive) trong Java khng ph thuc vo my. c bit kiu char c c 16 bit (Unicode). Biu thc logic trong Java ch nhn gi tr boolean. Trong Java, mi bin khng thuc kiu nguyn thu u phi to ra bng t kho new. Java khng c tin x l (preprocessor)
35
2.
3. 4.
5. 6. 7.
Java vs C++
8. 9. 10. 11. 12. 13. Java khng c con tr. Java khng c hu t (destructor), n ch c phng thc finalize() c gi bi Garbage Collector. Java khng h tr i s mc nh. Java ch h tr k tha n, tt c mi lp u mc nh k tha t lp Object. Java khng c template. Java khng c t kho virtual. Tt c mi phng thc non-static u lun dng dynamic binding. Java khng c qu ti ton t (operator overloading). i s ca hm lun c x l nh i s gi tr (value argument)
36
14. 15.
Bi tp
1. Ci t li cc ni dung l thuyt hc. 2. Xy dng lp Candidate (Th sinh) gm cc thuc tnh: m, tn, ngy thng nm sinh, im thi Ton, Vn, Anh v cc phng thc cn thit. 3. Xy dng lp TestCandidate kim tra lp trn:
Nhp vo 10 th sinh In ra thng tin v cc th sinh c tng im ln hn 15
37
Bi tp
4. Xy dng lp Point c d liu l 2 to x,y v cc phng thc cn thit. Thm phng thc toString tr v mt String c dng [x, y]. 5. Xy dng lp Rect c d liu l im trn tri v di phi. Qu ti cc cu t cung cp nhiu cch khi to. Thm cc phng thc: Kim tra 1 im c nm trong hnh ch nht hay khng. Tnh giao ca 2 hnh ch nht.
38
Bi tp
6. Xy dng lp TestRect: Sinh ngu nhin 10 hnh ch nht v tnh giao i mt ca chng. 7. Xy dng lp Triangular c 3 phng thc static tnh din tch tam gic theo 3 cch khc nhau: cnh y v chiu cao, cng thc Heron, di 2 cnh v gc.
39
Bi tp
8. Xy dng lp Employee c name v phng thc tru tng l earnings(). Xy dng lp Boss k tha t Employee c cch tnh lng l mt khon c nh hng thng. Xy dng lp PieceWorker c cch tnh lng da trn s sn phm lm c, lng mt sn phm l $ 0.5. Xy dng lp CommissionWorker c cch tnh lng l mt khon c nh + tin hoa hng trn s sn phm bn c, mi sn phm c $ 0.1 hoa hng.
40
Bi tp
9. Xy dng lp tru tng Animal c d liu l name v weight, phng thc o l grow (tng trng lng). 10. Xy dng lp Chicken k tha t Animal, ci t phng thc o mi ln grow th trng lng tng 0.3 kg. Xy dng lp Sparrow k tha t Animal, mi ln tng trng lng 0.05 kg. 11. Xy dng giao din Flyable c phng thc fly(). Ci t giao din ny trong lp Sparrow.
41