Lap Trinh Java Coban
Lap Trinh Java Coban
Lap Trinh Java Coban
Mc ch ca Java
Dng pht trin ng dng cho cc thit b in t thng minh To cc trang web c ni dung ng (web applet) Hin nay, Java c s dng pht trin nhiu loi ng dng khc nhau: c s d liu, mng, Internet, vin thng...
3
M ngun
Java Platform
Th vin lp Java
B JDK bao gm rt nhiu lp chun c xy dng sn. Lp trnh vin thng s dng cc lp chun pht trin ng dng.
Thng dch
Bin dch
javac Hello.java
---------------------------------------------------------------
Hello.class (bytecode)
8
public class Hello { // Phng thc main, im bt u ca chng trnh public static void main( String args[ ] ) im bt u v kt thc ca lp { System.out.println( Hello World" ); Du hiu ch thch => } // Kt thc phng thc main } // Kt thc lp Hello
Khai bo lp
Lm cho chng trnh d hiu hn. Trnh bin dch s b qua nhng dng c du ch thch Phng thc main() s c gi u tin. Mi CT thc thi phi c mt phng thc main()
Hin th dy k t ra mn hnh
10
11
Cc kiu d liu c bn
Java c hai kiu d liu
D liu gc chun: L cc kiu d liu c nh ngha trong ngn ng nh s nguyn, s thc, k t, logic D liu dn xut: Do ngi dng t nh ngha nh mng, lp, giao tip
V d khai bo bin
int x; Person ps;
12
Cc kiu d liu c bn
Kiu s nguyn
Kiu byte short int long Kch thc Khong gi tr 8 bits 16 bits 32 bits 64 bits -256255 -3276832767 -232232 1 -264264 1
Kiu s thc
Kiu float double Kch thc Khong gi tr 32 bits 64 bits -3.4e383.4e38 -1.7e3081.7e308
13
Cc kiu d liu c bn
Kiu boolean: Nhn gi tr true hoc false Kiu char: Kiu k t theo chun Unicode
Mt s hng k t Hng \uxxxx \t \n \r \ ngha K t Unicode Tab ngang Xung hng Du enter Nhy n
14
Cc kiu d liu c bn
Kiu mng
Khai bo: int[] iarray; hoc int iarray[]; Cp pht: iarray = new int[100]; Khi to:
int[] iarray = {1, 2, 3, 5, 6}; char[] carray = {a, b, c}; Ch : Lun khi to hoc cp pht mng trc khi s dng
Mt s khai bo khng hp l:
int[5] iarray; int iarray[5];
15
Cc kiu d liu c bn
Kiu mng
Truy cp mng
iarray[3] = 0; carray[1] = z; Ch : Ch s ca mng c tnh t 0
16
Cc kiu d liu c bn
Quy tc t tn bin
Bt u bng mt ch ci, mt du gch di (_) hoc mt du dollard ($) Khng c khong trng gia tn Sau k t u c th dng k t, s, du dollard, du gch di Khng trng vi cc t kho V d: a_1234_d, 1awas, _asdc, a sas, $erd, %ats
Ch : Java phn bit ch hoa ch thng
17
Cc ton t
Bng ton t
= ?: && ^ += |= >>>= > == || * % -= ^= < <= ++ / << *= %= ! >= -& >> /= <<= ~ != + | >>> &= >>=
18
Cc cu trc iu khin
Lnh if/else
import java.util.Date; public class TestIf { public static void main( String args[ ] ) { Date today = new Date(); if( today.getDay() == 0 ) System.out.println(Hom nay la chu nhat\n); else System.out.println(Hom nay khong la chu nhat\n" ); } }
19
Cc cu trc iu khin
Lnh switch
import javax.swing.JOptionPane; public class TestSwitch { public static void main(String[] args) { char c; String str=JOptionPane.showInputDialog(null,"Nhap vao ky tu?"); c = str.charAt(0);
20
Cc cu trc iu khin
Lnh switch
switch(c) { case 'a': case 'e': case 'i': case 'o': case 'u': System.out.println("Ky tu nay la nguyen am"); break; default: System.out.println("Ky tu nay la phu am"); } System.exit(0); // kt thc chng trnh } }
21
Cc cu trc iu khin
Vng lp for
for(<khi to>; <iu kin lp>; <bc nhy>) <khi lnh>;
// Chng trnh tnh tng cc s l t 1 n 100 public class TestFor { public static void main(String[] args) { int tong = 0; for(int i=1; i<=100; i+=2) tong+=i; System.out.println(tong); } }
22
Cc cu trc iu khin
Vng lp while
while (<biu thc boolean>)
<khi lnh>;
// Tnh tng cc s l t 1 n 100 int tong = 0, i = 1; while (i<=100) { tong+=i; i+=2; } System.out.println(tong);
23
Cc cu trc iu khin
Vng lp do/while
do { <khi lnh>; } while <biu thc boolean>;
// Tnh tng cc s l t 1 n 100 int tong = 0, i=1; do { tong+=i; i+=2; } while (i<=100); System.out.println(tong);
24
25
26
public Circle(int r) { radius = r; } public double getArea() { return Math.PI*radius*radius; } public double getCircum() { return 2*Math.PI*radius; }
public static void main(String[] args) { Circle c = new Circle(5); System.out.println("Area = " + c.getArea()); System.out.println("Circumference = " + c.getCircum()); } }
27
V d v i tng Circle
Cch 2: S dng mt file vi 2 lp ring bit
public class TestCircle { public static void main(String[] args) { Circle c = new Circle(5); System.out.println("Area = " + c.getArea()); System.out.println("Circumference = " + c.getCircum()); } } class Circle { ... }
28
V d v i tng Circle
Cch 3: S dng hai file ring bit
// file TestCircle.java public class TestCircle { public static void main(String[] args) { ... } } // file Circle.java class Circle { ... }
29
30
Ch dn thc hnh
t bin mi trng PATH:
Trong Windows: Nhy phi trn My Computer, chn Properties, chn Advanced, chn Enviroment Variables, chn bin PATH v edit, thm vo ng dn ti th mc bin ca b JDK. Trong ch Console: G lnh set Path=%Path%;ng dn ti bin
Bi tp
1. Vit chng trnh tnh tin in thoi:
Tin thu bao hng thng l 27000 . T pht gi th nht n pht th 200 gi cc l 120 /pht. T pht gi th 201 n pht th 400 gi cc l 80 /pht. T pht gi 401 n pht cui gi cc l 40 /pht.
32
Bi tp
2. Vit chng trnh gii phng trnh bc hai ax2 + bx + c = 0 vi a,b,c nhp t bn phm. 3. Vit chng trnh nhp vo mt dy cc s nguyn khc 0, kt thc nhp khi gp s 0. Sau tnh trung bnh cng ca dy s . Tm s ln nht, s nh nht ca dy s. 4. Vit chng trnh tnh tng E = 1 + 1/1 + 1/2 + 1/3 + + 1/n vi n nhp vo t bn phm
33
Bi tp
5. M rng lp Circle : thm d liu to tm hnh trn v phng thc kim tra mt im cho trc c nm trong hnh trn hay khng. 6. Vit chng trnh nhp vo mt hnh trn, sau pht sinh 100 im ngu nhin v cho bit c bao nhiu im nm trong hnh trn va nhp.
34
Lp trnh Java c bn
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
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 mn hnh method of A method of B method of 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. 2. 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
3. 4.
5. 6. 7.
Java vs C++
8. 9. 10. 11. 12. 13. 14. 15. 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
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: