T Biên www.hutech.edu.vn *1.2021.CMP368* tailieuhoctap@hutech.edu.vn : I ...................................................................................................................I NG D N ......................................................................................................... III ...................................................................... 1 .......................................................................................... 1 ....................................................................... 1 .......................................................................... 2 .................................................................... 3 1.1.4 Các phép toán ................................................................................................ 3 ................................................................................ 3 .................................................................. 5 .................................................................................................. 6 .................................................................................................. 6 .......................................................................................... 7 NÂNG CAO .................................................................................... 14 .................................................................... 15 ........................................................................................ 15 ........................................................ 15 ................................................................. 15 .......................................................................................... 16 ........................................................................................ 16 .................................................................................... 24 ..................................................................................... 26 ........................................................................................ 26 ........................................................................... 26 ............................................................................. 26 3. ........................................................................................ 27 .................................................................................... 32 ..................................................................................... 33 ........................................................................................ 33 ........................................................................................ 33 H NÂNG CAO .................................................................................... 35 BÀI 5: L P TR NG ......................................................................................... 36 ........................................................................................ 36 ........................................................................................ 36 HÀNH NÂNG CAO .................................................................................... 39 BÀI 6: INTERFACE, PACKAGE .................................................................................... 41 II ........................................................................................ 41 6.1.1 Interface .......................................................................................................41 6.1.2 Package ........................................................................................................41 ........................................................................................ 42 ............................................................................................ 46 III NG D N - - - - B i 1: LÀM QUEN V I NGÔN NG - B i 2: XÂY - B - B i 4: K - B i 5: L P TR - B i 6: INTERFACE JAVA. T TH A VÀ BAO G P NG PACKAGE - C duy t t v logic v ki n th c to n h n. IV v y, yêu c u nhà, nghiên c u t i li c t i li u 1. 2. nl n l p và ghi chú nh ng v i. không hi u khi BÀI 1: BÀI 1: JAVA - Hi u c nc am - Hi th c thi c a Java; - Hi biên d ch và ch - Hi u c nc am - Bi t các cách nh p xu t d li n. 1.1 TÓM T T LÝ THUY T 1.1.1 Quá trình d 1 2 BÀI 1: 1.1.2 C // Filename: NewApp.java package packagename; // Ph n 2: (0 ho c nhi import packagename; // Ph n 3: (0 ho c nhi public class NewApp{ ... } class C1 { ... } interface I { ... } class Cn { ... } - i tên c a m t main() uôi là .java. - public static void main (String args [] ) { // N i dung c n th c hi n c trình ng d ng } - N i dung c c main() .class 3 BÀI 1: 1.1.3 Các ki u d li n trong Java byte 0 1 -128...127 short 0 2 -32768...32767 int 0 4 long 0 8 float 0.0 4 +/- 1.45 E-45 .. +/-3.4 E+38, +/- infinity, +/-0, NAN double 0.0 8 +/- 1.79E-324 .. +/-3.4 E+308, +/- infinity, +/-0, NAN char \u0000 2 \u0000 ... \uFFFF boolean False 1 bit false, true (Not A Number) 1.1.4 Các phép toán - -, *, /, %, ++, -Phép toán so sánh: <, <=, ==. >=, >, != - Phép toán trên bit: ~, &, |, ^ (xor), >>, <<, &=, |=, ^=, >>=, <<= - Phép gán: = , +=, -=, *=, /=, %= - Condition ? TrueExp : FalseExp instanceof true 1.1.5 Nh p, xu t d - Gói c l i là false li n 4 BÀI 1: System.out.p các phím gõ c n gi s l i trong b mà gõ phím ch m (buffer), có th c n ki m tra phím gõ (Vd: nh p sai). import java.util.Scanner ; Scanner sc = new Scanner (System.in) ; import java.io.*; import java.util.Scanner; class Vd_Scanner { public static void main (String[] args) { Scanner sc = new Scanner(System.in); int a; float b; String s; System.out.print ("Nhap 1 so nguyen:"); a = sc.nextInt(); System.out.print ("Nhap 1 so thuc: "); BÀI 1: b = sc.nextFloat(); System.out.print ("Nhap 1 chuoi: "); sc.nextLine(); s = sc.nextLine(); System.out.println ("Xem thu nhe!!!"); System.out.println ("So nguyen: " + a); System.out.println ("So thuc: " + b); System.out.println ("Chuoi: " + s); } } 1.1.6 C if u khi n r else if (Condition) { Statements; } else { Statement; } switch-case switch (Expression) { case Cons1: Statements; break; case Cons2: Statements; break; ... default : Statements; } while while (condition) { Statements; } nhánh và l p 5 6 BÀI 1: do-while do { Statements; } while (condition); for for ( varInit ; Condition ; GroupStatements2) { Statements1; } 1.1.7 M ng (Array) - char ch[] = new char [5]; - -line initialization): int [] a = { 1,4,2,7,8}; ch[0] ch[1] ch[2] ch[3] ch[4] 1.1.8 Xây d ng l p Cú pháp khai báo class trong Java: [Modifier] class CLASSNAME extends FATHERCLASSNAME { [Modifier] DataType1 Property1 [=Value]; [Modifier] DataType2 Property2 [=Value]; { <code> } } Khi không có modifier: 7 BÀI 1: 1.2 TH B N Bài 1: Vi t ra màn hình các thông tin sau. Bài 2: Nh p các thông tin c a 1 sinh viên g m mã sinh viên, h tên, tu m trung bình. Xu t các thông tin ra màn hình. Bài 3: Nh p 1 m ng các s nguyên t bàn phím. Tìm ph n t Bài 4: T o m t ma tr n g m m dòng và n c m t giá tr l n nh t trong m ng. i ph n t c a ma tr n là c sinh ng u nhiên trong ph m vi [0, 50]. Xu t ma tr n ra màn hình. Tính t ng giá tr các ph n t c a ma tr n. Bài 5: Xây d ng l p h c sinh, bi t r ng m i h c sinh có: c: set(), get(), input(), output(), rank() - x p lo i cho h c sinh theo dtb. Vi t l p Demo1 ch c main(): Bài 6: Xây d ng l p M ng g m có các thành ph n d - Thành ph n d li u: S ph n t c a m ng, m ng ch a các s c a m ng - li u: c: set(), get(), input(), output() và c 8 BÀI 1: Vi t l p Demo2 ch c main(): ng d n: Bài 1: Vi t ra màn hình các thông tin sau. ng d n: - Làm quen v i các ki u d li u và cách khai báo bi n: - Làm quen v i câu l nh xu t d - Tham kh li u: 9 BÀI 1: Bài 2: Nh p các thông tin c a 1 sinh viên g m mã sinh viên, h tên, tu m trung bình. Xu t các thông tin ra màn hình. ng d n: ý: Ch c phù h p v i ki u d Bài 3: Nh p 1 m ng các s nguyên t ng d n: - Khai báo m ng: - C p phát b nh cho m ng: li u c n nh p. bàn phím. Tìm ph n t l n nh t trong m ng. 10 BÀI 1: Bài 4: T o m t ma tr n g m m dòng và n c m t giá tr i ph n t c a ma tr n là c sinh ng u nhiên trong ph m vi [0, 50]. Xu t ma tr n ra màn hình. Tính t ng giá tr các ph n t c a ma tr n. ng d n: - M ng 2 chi ng m t chi u. - Khai báo bi n m ng, khai báo bi n s - Nh p s dòng, s dòng, bi n s c t cho ma tr n. C p phát b c t. nh cho m ng v i s ng. Ví d : ma tr n m g m 5 dòng, 7 c t: - cho ma tr n n dòng, m c t. - Sinh giá tr ng u nhiên cho t ng ph n t - Hàm random() vì sao nhé! - Xu t ma tr n trong ma tr n m x n: dòng, s c t BÀI 1: - Tính t ng các ph n t c a ma tr n: t 11 làm. Bài 5: Xây d ng l p h c sinh, bi t r ng m i h c sinh có: - c: set(), get(), input(), output(), rank() - x p lo i cho h c sinh theo dtb. Vi t l p Demo1 ch c main(): ng d n: 1. - - - private Cú pháp: code) cho các 12 BÀI 1: - - Sau khi vi t các thu c, vào menu View 13 BÀI 1: 1. - Bài 6: Xây d ng l p Mang g m có các Thành ph n d - Thành ph n d li u: S ph n t c a m ng, m ng ch a các s c a m ng - c: set(), get(), input(), output() và Vi t l p Demo2 ch ng d n: 1. li u: c main(): nguyên c 14 BÀI 1: 2. Xây d ng l p Demo2 ch c main(): - 1.3 TH C HÀNH NÂNG CAO Bài 7: Vi t b ng c Bài 8: Vi o 1 m ng s n 9. int d ng in-line 10 ph n t , xu t m ng n. Bài 9: Nh p m t ma tr n b t k t bàn phím. Tính t ng hàng th k c a ma tr n. Bài 10: Xây d ng l p phân s , bi t r ng m i phân s có: - c: set(), get(), input(), output(), rút g n phân s , c ng 2 phân s . Vi t l p Demo1 ch - c main(): 15 BÀI 2: BÀI 2: XÂ - Bi t cách vi c kh i t o; - 2.1 TÓM T T LÝ THUY T 2.1.1 B c tính truy xu t c a các modifier: Modifier private friendly protected public Cùng class YES YES YES YES Cùng gói, khác class NO YES YES YES NO YES YES YES NO NO NO YES NO NO YES YES nhìn tên - 2.1.2 - c kh i t o (constructor) 16 - BÀI 2: Cú pháp constructor: [Modifier] ClassName ( Parameters) { <code> } 2.1.3 Thành ph n static (1) ClassName.StaticMember (2) ClassName obj= new ClassName(); obj. StaticMember 2.2 TH N Bài 1: Xây d ng l p Danh sách h c sinh g - In danh sách Vi t l p Demo3 ch Bài 2: T o l p phân s bao g m: c: - c kh i t o chu n c main(): c: 17 BÀI 2: - c kh i t o 2 tham s . - cs chung l n nh t Bài 3: Xây d ng l p COODINATE: t c m trong không gian hai chi u. c g m: - c kh i t o chu n: x = 0, y = 0 - c kh i t o 2 tham s . Bài 4: Xây d ng l p Nhân Viên g m: mã s , h n, h s nhân viên; các constructor chu n, có tham s mã s , h tên, h s c: nh p d xu ng c: set/get cho li u cho nhân viên t ng nhân viên. Xây d ng l p Demo ch c main() th c hi n các vi c sau: - In ra thông tin c a nhân viên có h s t trong 3 nhân viên bàn phím, 18 BÀI 2: - Nh p danh sách nhân viên và xu t ra màn hình cùng v - In s a m i nhân viên ng nhân viên trong danh sách. ng d n: Bài 1: Xây d ng l p Danh sách h c sinh g - In danh sách Vi t l p Demo3 ch ng d n: c main(): c: 19 BÀI 2: Vi t l p DEMO3 ch c main(): Bài 2: T o l p phân s ng d n: 1. Xây d ng l p PHANSO g m các thu c t (menu View Class View) - Cách vi c kh i t o (Constructor): c kh i t o phân s giá tr ng cho t t o ra m t phân s có t m us khi bi t t và m u, tham s truy n vào là hai và m u. Khi g s b ng giá tr c a tham s b ng giá tr c a tham s th hai truy n vào. th nh t truy n vào và 20 BÀI 2: Khi g b ng t - Vi t o ra m t phân s có t c a phân s truy n vào, có m u b ng m u c a phân s truy n vào. c nh p và xu t phân s - nguyên a và b Trong -b -a UCLN =a; 21 BÀI 2: - Vi c rút g n hai phân s - c 1: tìm m u s chung, m u s c 3: rút g n phân s k t qu c a phân s k t qu b ng m u s và tr ho c cho k t qu sai thì m i tham kh - (B n hãy t c main() th c hi n: p1 nhapPS() p1 và làm, khi nào b l i ng d n sau nhé! ) c 2. Xây d ng l p DEMO ch - v chung 22 BÀI 2: - p2= 4/16 a màn hình, quan PHANSO p2=new PHANSO(4, 16); p2.xuatPS(); - int t, m; theo PHANSO p3=new PHANSO(t, m); p3.xuatPS(); - p1 - p3 p4 Nhân p4 p2 Bài 3: Xây d ng l p COODINATE: t ng d n: bài 2 Bài 4: Xây d ng l p Nhân Viên ng d n: c m trong không gian hai chi u. 23 BÀI 2: - T xây d c: các constructor chu n, có tham s , sao chép; các c: set/get cho mã s , h li u cho nhân viên t tên, h c: nh p d bàn phím. - s vi t c in s c static - In ra thông tin c a nhân viên có h s t trong 3 nhân viên 24 BÀI 2: Nh p danh sách nhân viên và xu t ra màn hình cùng v a m i nhân viên In s ng nhân viên trong danh sách. 2.3 TH C HÀNH NÂNG CAO Bài 5: Xây d ng l p Tam giác g m các thành ph n d dài c nh th - Vi dài c nh th li dài c nh th ba c a tam giác. c kh i t o (constructor) v i 3 tham s ki u in c a tam giác. - - Bài 6: T o l p PhuongTrinhBacNhat có 2 bi n a và b là 2 s - - - UML class diagram: nh nguyên. ng là 3 c nh BÀI 2: 25 26 BÀI 3: BÀI 3: - 3.1 TÓM T T LÝ THUY T 3.1.1 Hi n th c l p con trong Java Cú pháp hi n th c l p con trong ngôn ng class CLASSNAME extends FATHERCLASSNAME { DataType1 Property1 [=Value]; DataType2 Property1 [=Value]; // constructor } - 3.1.2 K thu t phân c p th a k - BÀI 3: 27 - Hình 3.1: 3.2 TH N Bài 1: Phân tích phân c p k th a cho các l p: Bài 2: S d ng bài 1, ti p t c xây d ng l p DSHANGHOA (danh sách ch a nhi u m t hàng,v - ng d n: Bài 1: 1. n máy v a có hàng th c ph m). Xây d ng hàm main sao cho 28 BÀI 3: (Mã hàng, tên hàng, giá Mã hàng, tên hàng, giá - # protected con) + public - private HANGHOA #mahang #tenhang #dongia +HANGHOA() +HANGHOA(String,String, long) +nhap() HANGDM - thoigianbh - dienap - congsuat +HANGDM() +HANGDM(String,String,long) +nhap() +xuat() HANGTP - ngaysx -ngayhh +HANGTP() +HANGTP(int, int, int) +nhap() +xuat() BÀI 3: 2. protected - HANGDM ) class - Vi extends <tên c kh i t o cho HANGDM. M t m n máy có bao nhiêu thu c tính (properties)? mahang, tenhang, dongia tính (thoigianbh, dienap, congsuat ó. 29 30 BÀI 3: HANGDM cha super(mh, th, dg) - Vi c nh p cho HANGDM (b n t Nh p giá tr cho các thu c tính k Cú pháp g code) th a, g c c a l p cha: super.tenPhuongThuc( ); Nh p giá tr cho các thu c tính c a riêng nó (nh - Vi th c nh p c a l p cha. c xu t cho HANGDM (b n t ng). code) Xu t giá tr c a các thu c tính k th a, g c xu t c a l p cha BÀI 3: - (hàng th c ph m) k th a l 31 p HANGDM. - hàng này. VD: HANGHOA h; h =new HANGDM(); Bài 2: S d ng bài 1, ti p t c xây d ng l p DSHANGHOA 1. Áp d t o m t hàng c liên k t mu n ta khai báo ki u c a m ng là ki u HANGHOA. Khi th cho t ng ph n t c a m ng ta m i kh i t o theo lo i m t hàng mong mu n. 2. Xây d ng l p DSHANGHOA có thu c tính: s hàng ng m t hàng, danh sách các m t c: - public void themMH(HANGHOA h){...} public void xuatDSTheoLoai(byte loai){...} 32 BÀI 3: H 3. byte chon, loai; Scanner doc=new Scanner(System.in); DSHANGHOA dshh=new DSHH(); HANGHOA h; do{ System.out.println("1: Them mot mat hang vao dang sach"); System.out.println("2: Xuat mat hang theo loai"); System.out.println("0: Thoat"); System.out.println("Chon chuc nang:"); chon=doc.nextByte(); switch(chon){ case 1: System.out.println("1: hang dien may, 2: hang thuc pham. Hay chon loai mat hang:"); loai=doc.nextByte(); if (loai==1) h=new HANGDM(); else h=new HANGTP(); h.nhap(); dshh.themMH(h); break; case 2: System.out.println("Xuat danh sach mat hang nao (DM/TP):"); loaimh=doc.nextByte(); dshh.xuatDSTheoLoai(loaimh); break; default: chon=0; break; } }while (chon!=0); 3.3 TH C HÀNH NÂNG CAO Bài 3: Hãy xây d ng l ki u d li u m ng ArrayList. c tính danh sách không s p (ví d : HANGHOA ds[]) mà s d ng ki u d li u l d ng i BÀI 4: BÀI 4: - P - 4.1 TÓM T T LÝ THUY T - 4.2 TH N Bài 1: Vi a thi t k giao di 5.Thoát sau: 33 34 BÀI 4: NHÂN VIÊN 3 PHÒNG BAN KHOA Mã PBK Tên PBK Pbk ng d n 1. Xây d ng l I 2. Xây d ng l p H C VIÊN k th a l i 3. 4. và và c ng phòng ban khoa Pbk=new PHONGBANKHOA(); Pbk.nhap Bài 2. Vi a thi t k bài 1: BÀI 4: 5.Thoát 4.3 TH C HÀNH NÂNG CAO Vi 1. 2. 3. 4. 5. 6. a thi t k sau: 35 36 BÀI 5: BÀI 5: L P TR NG - 5.1 TÓM T T LÝ THUY T Cú pháp khai báo l p tr ng: abstract class ClassName { [Modifier] DataType1 Property1 [=Value]; [Modifier] DataType2 Property2 [=Value]; <code> } abstract [modifier] Type MethodName (Args) ; } abstract 5.2 TH Bài 1: Qu - - N ng trong m t h c vi n: 37 BÀI 5: - Bài 2: Xây d ng l p HOCVIEN (h c vi vi n. Tính t qu n lý danh sách nhân viên c a h c a t t c nhân viên có trong h c vi n. ng d n Bài 1: 1. cc al c tr - - Tùy thu c vào t ng lo i nhân viên c th ng l p con) ng? 38 BÀI 5: NV - manv -tennv -trinhdo -luongcb + void Nhap() + void Xuat() + long TinhLuong() NVQL - chuyenmon - phucapcv + void Nhap() + void Xuat() NVNC - chuyenmon - phucapdh NVPV + void Nhap() + void Xuat() + long TinhLuong() + void Nhap() + void Xuat() + long TinhLuong() +longTinhLuong() 2. L p NV là l p tr ng - c Nhap(), g các thu c tính chuyên môn, ph c nh p c a l p cha và nh p cho c p ch c v BÀI 5: c TinhLuong(): vi 39 n + ph c p ch c v - nh nào khác so Ch vi t l c TinhLuong(), vi n 3. cho các nhân viên 5.3 TH C HÀNH NÂNG CAO Bài 3: Vi 1. 2. a thi t k sau: 40 3. 4. 5. 6. 7. Thoát. BÀI 5: BÀI 6: INTE RFACE, PACKAGE BÀI 6: INTERFACE, PACKAGE - Gi - 6.1 TÓM T T LÝ THUY T 6.1.1 Interface Cú pháp: [modifier] interface InterfaceName { [modifier] <final data> [modifier] DataType Method (args); } - Modifier trong interface NÊN 6.1.2 Package package, 41 42 BÀI 6: INTE RFACE, PACKAGE Cú pháp: /* Comment */ package PackageCha[.PackageCon]; [import OtherPackageName ;] class ClassName { ....... } class 6.2 TH Bài 1: N phân c i. Yêu c u: polymorphism) HINH + pi=3.14 + void Nhap() + void Xuat() + float DienTich() HINHVUONG - canh + void Nhap() + void Xuat() + float DienTich() HINHCN - dai - rong HINHTRON - bankinh + void Nhap() + void Xuat() + float DienTich() + void Nhap() + void Xuat() + float DienTich() BÀI 6: INTE RFACE, PACKAGE Bài 2: ng d n Bài 1: 1. - public float pi=3.14; - 2. Xây d ng l p th nghi m ch c main(): - - Vi d ng 2 l p trong 2 gói này 43 44 Bài 2: T BÀI 6: INTE RFACE, PACKAGE c BTCh3. T c BTCh3. package MyPackage; y khi biên d ch s t o ra file Calculate.class n c MyPackage. - package MyPackage.Shape; y, khi biên d ch s c con c - Vi t o ra file Circle.class n c MyPackage. d ng 2 l p trong 2 gói này c Shape BÀI 6: INTE RFACE, PACKAGE 45 46 1. Brain W. Kernighan & Dennis Ritchie, The C Programming Language, Prentice Hall Ban (2005 2. 3. 4. Deitel & Deitel (2012). Java How to program. Prentice 5. Kathy Sierra, Bert Bates (2008). Head First Java Hall.