(NB) Nội dung giáo trình tập trung vào những kiến thức căn bản nhất của lập trình java giúp người đọc bước đầu tiếp cập dễ dàng với công nghệ mới này, và đây cũng chính là một bước đệm để chúng ta trở thành “java shooter”. Một số vấn đề nâng trong ngôn ngữ lập trình java như: javabean, thiết kết giao diện dùng thư viện JFC, lập trình mạng, lập trình cơ sở dữ liệu bằng java, lập trình ứng dụng web dùng J2EE,... sẽ được nói đến trong các chuyên đề nâng cao. Mời các bạn cùng tham khảo nội dung phần 1 giáo trình!
BỘ LAO ĐỘNG -THƯƠNG BINH VÀ XÃ HỘI TRƯỜNG CAO ĐẲNG NGHỀ KỸ THUẬT CÔNG NGHỆ -š› & š› - GIÁO TRÌNH LẬP TRÌNH JAVA CƠ BẢN NGHỀ: CƠNG NGHỆ THƠNG TIN TRÌNH ĐỘ: CAO ĐẲNG Ban hành kèm theo Quyết định số: 245/QĐ-CĐNKTCN ngày 23 tháng 10 năm 2020 Hiệu trưởng Trường Cao đẳng nghề Kỹ thuật Công nghệ Hà Nội, năm 2021 (Lưu hành nội bộ) TUYÊN BỐ BẢN QUYỀN: Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm MÃ TÀI LIỆU: MĐCNTT 20 LỜI GIỚI THIỆU Ngơn ngữ lập trình java đời nhà nghiên cứucủa Công ty Sun Microsystem giới thiệu vào năm 1995 Sau đời không lâu, ngơn ngữ lập trình sử dụng rộng rãi phổ biến lập trình viên chuyên nghiệp cũngnhư nhà phát triển phần mềm Gần ngơn ngữ lập trình, cơng nghệ java đưa vào giảng dạy sở đào tạolập trình viên chuyên nghiệp Một số trường đại học Việt Nam dạy mơn lập trình java chun đề tự chọn cho sinh viên công nghệ thông tin giai đoạn chuyên ngành Sau thời gian tìm hiểu, làm việc tham gia giảng dạy chuyên đề lập trình java cho lớp cử nhân tin học từ xa qua mạng Nhóm tác giả chúng tơi định biên soạn giáo trình nhằm phục vụ công tác giảng dạy học tập sinh viên chuyên ngành công nghệ thông tin Nội dung giáo trình tập trung vào kiến thức lập trình java giúp người đọc bước đầu tiếp cập dễ dàng với công nghệ này, bước đệm để trở thành “java shooter” Một số vấn đề nâng ngôn ngữ lập trình java như: javabean, thiết kết giao diện dùng thư viện JFC(Java Foundation Class), lập trình mạng, lập trình sở liệu java, lập trình ứng dụng web dùng J2EE (Java Enterprise Edition), nói đến chuyên đề nâng cao Để đọc hiểu giáo trình người đọc cần nắm vững kiến thức về: nhập mơn lập trình, lập trình hướng đối tượng Đây lần xuất bảnđầu tiên chắn khơng thể tránh khỏi sai sót Nhóm tác giả mong nhận ý kiến đóng góp q thầy cơ, đồng nghiệp bạn đọc để có.thể hồn thiện giáo trình phục vụ cho việc học tập sinh viên Xin chân thành cảm ơn! Hà Nội, ngày 23 tháng 04 năm 2021 Tham gia biên soạn Chủ biên Nguyễn Thị Thủy Tập thể Giảng viên Khoa CNTT Mọi thơng tin đóng góp chia sẻ xin gửi hịm thư nguyenthuyanc@gmail.com, liên hệ số điện thoại 0362234187 MỤC LỤC Bài 1: TỔNG QUAN VỀ JAVA VÀ CÁC CÔNG NGHỆ TRONG JAVA 1.Lịch sử đời Java Một số tính Java 3.Mơi trường lập trình Java 4.Công nghệ Java 10 Các cấu trúc lập trình Java 11 5.1 Một chương trình Java 11 5.2 Các kiểu liệu 12 5.3 Các toán tử 14 5.4 Các cấu trúc điều khiển 14 5.5 Nhập liệu từ bàn phím 16 5.6 Công cụ soạn thảo 18 5.7 Chỉ dẫn thực hành 19 BÀI TẬP 19 Bài 2: LỚP HƯỚNG ĐỐI TƯỢNG TRONG JAVA 20 Lớp 20 1.1 Lập trình hướng đối tượng-OOP 20 1.2 Lớp Time 20 1.3 Lớp TimeTest 22 1.4 Chạy TimeTest 22 Hướng đối tượng JAVA 23 2.1 Phạm vi truy cập 23 2.2 Từ khoá this 23 2.3 Nạp chồng hàm khởi tạo 23 2.4 Một số từ khoá 24 2.5 Kế thừa (Inheritance) 25 2.6 Cây kế thừa 25 2.7 Ví dụ kế thừa Java 25 2.8 Từ khoá super 26 2.9 Đa hình (Polymorphism) 26 2.10.Lớp trừu tượng (abstract) 27 2.11 Lớp trừu tượng 27 2.12 Giao tiếp (interface) 28 2.13 Gói (package) 29 BÀI TẬP 30 Bài 3: Applet 32 Khái niệm Java Applet 32 Cấu trúc Applet 32 2.1 Sự khác giũa Application Applet 34 2.2 Những giới hạn bảo mật applet 36 Chu trình sống Applet 37 Truyền tham số cho Applet 38 Lớp Graphics 39 5.1 Vẽ chuỗi, ký tự byte 40 5.2 Vẽ đường thẳng (Line) Oval 42 5.3 Vẽ hình chữ nhật (Rectangle) hình chữ nhật bo góc (Rounded Rectangle) 43 5.4 Vẽ hình chữ nhật 3D vẽ hình cung (Arc) 44 5.5 Vẽ hình PolyLine 44 5.6 Vẽ tô đa giác (Polygon) 46 Điều khiển màu font 47 6.1 Điều khiển màu 47 6.2 Điều khiển Font 49 6.3 Lớp FontMetrics 50 6.4 Chọn mode để vẽ 54 Bài 4: LẬP TRÌNH GIAO DIỆN 56 Cơ chế lập trình đồ hoạ giao diện 56 2.Thư viện AWT Swing 65 3.Container Component 66 3.Container Component 73 3.1 Container 73 3.2 Component 76 Textfield 78 TextArea 79 CheckBox 80 CheckBoxGroup 81 Choice 83 List 85 4.Quản lý Layout 86 4.1 Giới thiệu LayoutManager Interface 87 4.2 Giới thiệu LayoutManager2 Interface 87 5.Lập trình GUI 89 6.Lập trình GUI nâng cao 89 6.1 Các thành phần giới thiệu 89 6.2 Vùng văn (TextArea) 89 6.3 Khung vẽ (Canvas) 91 6.4 Thanh trượt (Scroll bar) 92 6.5 Thanh trượt (Scroll bar) 93 6.6 Khung cuộn (ScrollPane) 93 6.7 Bố cục nâng cao 94 6.8 Khung chứa Frame 94 6.9 Cài đặt listener 96 9.10 Khung chứa Frame 96 BÀI TẬP 109 TÀI LIỆU THAM KHẢO 110 GIÁO TRÌNH MƠN HỌC Tên mơ đun: Lập trình java Mã mơ đun: MĐCNTT 20 Vị trí, tính chất, ý nghĩa vai trị mơ đun : - Vị trí: Mơ đun sở lập trình JAVA thuộc nhóm mơn học chun ngành bố trí giảng dạy sau học xong môn học, mô đun sở ngành như: Cơ sở liệu, Ngơn ngữ lập trình C/C++, Lập trình hướng đối tượng, Cấu trúc liệu giải thuật - Tính chất: Mơ đun Cơ sở lập trình Java cung cấp kiến thức kỹ thuật lập trình nâng cao với ngơn ngữ Java Giúp sinh viên làm quen với kỹ thuật lập trình giao diện lập trình mạng; lập trình dịch vụ web với Java Cung cấp cho sinh viên kỹ làm chủ kỹ thuật lập trình ứng dụng Java.Sinh viên sử dụng thư viện Java để lập trình ứng dụng thực tế Mục tiêu mô đun: - Về kiến thức + Trình bày vấn đề ngơn ngữ lập trình java như: kiểu liệu, biến, khai báo thư viên, hàm, mảng, lớp đối tượng vấn đề với lập trình hướng đối tượng + Nêu làm rõ mạnh lĩnh vực cơng nghệ java + Trình bày vấn đê liên quan đến lập trịnh applet java : đối tượng giao diện bản, Container, Component… + Trình bày khái niệm thuộc tính, phương thức, phạm vi truy cập thuộc tính phương thức lớp đặc điểm hướng đối tượng java + Trình bày nguyên lý đối tương sử dụng lập trình mạng java + Trình bày khái niệm chu kỳ sống Applet - Về kỹ + Xây dựng ứng dụng với ngôn ngữ lập trình Java + Vân dụng kỹ thuật lập trình hướng đối tượng trọng java, lập trình mạng, lập trình giao diện để xây dựng module ứng dụng đơn giản như: gửi nhận tin online, offlinen trực tiếp hai máy tính qua server + Tạo truyền tham số cho Applet + Thiết kế xây dựng giao diện chương trình thực tế Java + Xây dựng ứng dụng Client/Server - Về lực tự chủ trách nhiệm + Tích cực ứng dụng lập trình trực quan cho ứng dụng thực tế + Khả tìm tài liệu, đọc hiểu tài liệu + Khả làm việc nhóm Nội dung mô đun Thời gian Số TT Tên mô đun Tổng số Lý thuyết Thực hành 10 18 15 12 19 13 Kiểm tra* Bài 1: Tổng quan Java công nghệ Java 1.Lịch sử đời Java 2.Một số đặc tính Java 3.Mơi trường lập trình Java 4.Cơng nghệ Java 5.Các cấu trúc lập trình Java Bài 2: Lớp hướng đối tượng JAVA 1.Lớp 2.Hướng đối tượng Java Bài 3: Applet 1.Khái niệm 2.Cấu trúc Applet 3.Chu trình sống Applet 4.Truyền tham số cho Applet 5.Lớp Graphics 6.Điều khiển màu va font Bài 4: Lập trình giao diện 1.Cơ chế lập trình đồ hoạ giao diện JAVA 2.Thư viện AWT Swing 3.Container Component 4.Quản lý Layout 5.Lập trình GUI 6.Lập trình GUI nâng cao Thi kết thúc mô đun Cộng 60 15 42 Bài 1: TỔNG QUAN VỀ JAVA VÀ CÁC CÔNG NGHỆ TRONG JAVA Mã bài: MĐCNTT 20.1 Mục tiêu - Trình bày khái niệm liên quan đến Java công nghệ Java - Trình bày thư viện hỗ trợ cho nhóm ứng dụng Java - Nêu cấu trúc chương trình java - Thiết lập giao diện lập trình java - Hiểu cách thức xây dựng ứng dụng với giao diện vào file - Phân biệt kỹ thuật lập trình thư viện hỗ trợ Java Nội dung chính: 1.Lịch sử đời Java Lịch sử phát triển Java Ra đời Sun Microsystems James Gosling 1991: Version với tên “Oak” (cây sồi) 1995: Tên thức Java Mục đích Java Dùng để phát triển ứng dụng cho thiết bị điện tử “thơng minh” Tạo trang web có nội dung động (web applet) Hiện nay, Java sử dụng để phát triển nhiều loại ứng dụng khác nhau: sở liệu, mạng, Internet, viễn thông Một số tính Java • Đơn giản • Hướng đối tượng • Đa nhiệm • An tồn • Garbage Collection • Máy ảo (biên dịch thông dịch) • Khả chuyển (Portability) • Phân tán 3.Mơi trường lập trình Java Java Platform Java Virtual Machine (Java VM) Java Application Programming Interface (Java API) BufferedReader inStream = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Nhap mot so nguyen:"); String siNumber = inStream.readLine(); int iNumber = Integer.parseInt(siNumber); System.out.print("Nhap mot so thuc:"); String sfNumber = inStream.readLine(); float fNumber = Float.parseFloat(sfNumber); System.out.println("So nguyen:“ + iNumber); System.out.println("So thuc:“ + fNumber); } } Ví dụ: Xây dựng đối tượng Circle • Cách 1: Sử dụng file Circle.java public class Circle { private int radius; 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()); } } Ví dụ đối tượng Circle Cách 2: Sử dụng file với lớp riêng biệt public class TestCircle { 17 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 { } Ví dụ đối tượng Circle Cách 3: Sử dụng hai file riêng biệt // file TestCircle.java public class TestCircle { public static void main(String[] args) { } } // file Circle.java class Circle { } 5.6 Công cụ soạn thảo Notepad Jbuilder Eclipse EditPlus JCreator … 18 5.7 Chỉ dẫn thực hành Đặt biến môi trường PATH: Trong Windows: Nháy phải My Computer, chọn Properties, chọn Advanced, chọn Enviroment Variables, chọn biến PATH edit, thêm vào đường dẫn tới thư mục bin JDK Trong chế độ Console: Gõ lệnh set Path=%Path%;đường dẫn tới bin Nên tham khảo java/docs làm việc BÀI TẬP Viết chương trình tính tiền điện thoại: — Tiền thuê bao hàng tháng 27000 đ — Từ phút gọi thứ đến phút thứ 200 giá cước 120 đ/phút — Từ phút gọi thứ 201 đến phút thứ 400 giá cước 80 đ/phút — Từ phút gọi 401 đến phút cuối giá cước 40 đ/phút Viết chương trình giải phương trình bậc hai ax2 + bx + c = với a,b,c nhập từ bàn phím Viết chương trình nhập vào dãy số nguyên khác 0, kết thúc nhập gặp số Sau tính trung bình cộng dãy số Tìm số lớn nhất, số nhỏ dãy số Viết chương trình tính tổng E = + 1/1 + 1/2 + 1/3 +… + 1/n với n nhập vào từ bàn phím Mở rộng lớp Circle : thêm liệu toạ độ tâm hình trịn phương thức kiểm tra điểm cho trước có nằm hình trịn hay khơng Viết chương trình nhập vào hình trịn, sau phát sinh 100 điểm ngẫu nhiên cho biết có điểm nằm hình trịn vừa nhập 19 Bài 2: LỚP HƯỚNG ĐỐI TƯỢNG TRONG JAVA Mã bài: MĐCNTT 20.2 Mục tiêu - Trình bày khái niệm thuộc tính, phương thức, phạm vi truy cập thuộc tính phương thức lớp - Trình bày đặc điểm hướng đối tượng java - Khai báo tạo đối tượng lớp - Phân biệt giống khác phương thức thường phương thức khởi tạo Nội dung chính: Lớp 1.1 Lập trình hướng đối tượng-OOP Lớp đối tượng Dữ liệu thao tác liệu kết hợp đối tượng (object) Lớp (class) định nghĩa tính chất tập hợp đối tượng kiểu Đối tượng thể (instances) lớp Đặc điểm OOP Tính đóng gói (Encapsulation) Tính kế thừa (Inheritance) Tính đa hình (Polymorphism) Lớp Time TimeTest nằm thư mục Lớp Time nằm file Time.java Nó chứa định nghĩa thời gian Lớp TimeTest nằm file TimeTest.java Nó dùng để kiểm tra lớp Time Lớp TimeTest chứa hàm main Khi chạy cần gõ: javac TimeTest.java java TimeTest Java tự động tìm dịch file Time.java 1.2 Lớp Time // File Time.java import java.text.DecimalFormat; public class Time 20 { private int hour; // - 23 private int minute; // - 59 private int second; // - 59 // Cau tu public Time() { setTime( 0, 0, ); } // Ham thiet lap du lieu public void setTime( int h, int m, int s ) { hour = ( ( h >= && h < 24 ) ? h : ); minute = ( ( m >= && m < 60 ) ? m : ); second = ( ( s >= && s < 60 ) ? s : ); } // 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" ); } } // Ket thuc lop Time Dữ liệu Mỗi liệu phải có phạm vi định Phương thức Cấu tử có tên trùng với tên lớp Cấu tử khơng có kiểu trả 21 Có thể có nhiều cấu tử (overloading) Mỗi phương thức phải có phạm vi định 1.3 Lớp 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, ); output += "\n\nUniversal time after setTime is: " + time.toUniversalString() + "\nStandard time after setTime is: " + time.toStandardString(); // 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( ); } // Ket thuc ham main } // Ket thuc lop TimeTest 1.4 Chạy TimeTest • javac TimeTest.java 22 • java TimeTest Hướng đối tượng JAVA 2.1 Phạm vi truy cập - Private: Chỉ truy cập từ lớp khai báo - Protected: Truy cập từ lớp khai báo, lớp của lớp khai báo lớp gói với lớp khai báo - Public: Truy cập từ nơi - Mặc định: Truy cập từ lớp khai báo lớp gói với lớp khai báo 2.2 Từ khố this Từ khoá this đối tượng thời public class Time { private int hour; // - 23 private int minute; // - 59 private int second; // - 59 // Viet lai ham setTime public void setTime( int hour, int minute, int second ) { this.hour = ( ( hour >= && hour < 24 ) ? hour : ); this.minute = ( ( minute >= && minute < 60 ) ? minute : ); this.second = ( ( second >= && second < 60 ) ? second : ); } 2.3 Nạp chồng hàm khởi tạo // Ham khoi tao khong tham so 23 public Time() { this( 0, 0, ); } // Ham khoi tao mot tham so public Time( int h ) { this( h, 0, ); } // Ham khoi tao hai tham so public Time( int h, int m ) { this( h, m, ); } // Ham khoi tao ba tham so public Time( int h, int m, int s ) { setTime( h, m, s ); } // Ham 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( ); // 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 2.4 Một số từ khoá Từ khoá final Áp dụng cho lớp, phương thức, biến Lớp final: lớp khơng thể có lớp Public final class NoChild { } Biến final: biến thay đổi gán giá trị Private final int MAX = 100; Phương thức final: phương thức khơng thể nạp chồng Public final void NoOverride(); -Từ khố static Được dùng với phương thức biến Biến static: biến chung cho đối tượng lớp, truy cập qua đối tượng lớp qua tên lớp private static char TAB = ‘\t’; Phương thức static: phương thức phép truy cập tới biến static lớp, gọi chưa có đối tượng lớp 24 public static void Welcome() { } 2.5 Kế thừa (Inheritance) -Kế thừa việc xây dựng lớp dựa lớp có sẵn +Lớp có sẵn lớp cha: superclass +Lớp lớp con: subclass -Ví dụ: +Hình vng kế thừa từ hình chữ nhật +Con ếch kế thừa từ loài động vật nước -Chú ý: +Tính kế thừa thể quan hệ “is a”, khác với quan hệ “has a” (composition) +Composition: đối tượng chứa đối tượng thuộc lớp khác Ví dụ: ơtơ có bánh xe 2.6 Cây kế thừa 2.7 Ví dụ kế thừa Java // File Sphere.java public class Sphere extends Circle Sphere kế thừa từ Circle { public Sphere (int radius ) { super(radius); // Goi cau tu cua lop cha } // Ham tinh dien tich bet mat Nap chong ham getArea() public double getArea() { return 4*Math.PI*radius*radius; } 25 // Ham tinh the tich public double getVolume() { return (4.0d/3)*Math.PI*radius*radius*radius; } } // File InheritanceTest.java public class InheritanceTest { public static void main(String[] args) { Circle circle = new Circle(5); Sphere sphere = new Sphere(2); System.out.println(“Radius of circle: " + circle.getRadius()); System.out.println("Radius of sphere: " + sphere.getRadius()); System.out.println("Area of circle: " + circle.getArea()); System.out.println(“Area of sphere: " + sphere.getArea()); System.out.println("Volume of sphere: " + sphere.getVolume()); } } 2.8 Từ khoá super -Từ khoá super đối tượng lớp cha +super(radius): Gọi cấu tử lớp cha -Question: Thêm phương thức tính diện tích mặt cắt qua tâm hình cầu ? -Answer: Đó diện tích hình trịn // Them phuong thuc 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()); // 2.9 Đa hình (Polymorphism) Ví dụ 26 2.9 Đa hình (Polymorphism) -Tính đa hình thể qua việc: phương thức có nội dung thực khác đối tượng khác -Phương thức gọi xác định thông qua đối tượng tham chiếu, không thông qua kiểu khai báo tham chiếu -Trong Java, phương thức ln mang tính đa hình 2.10.Lớp trừu tượng (abstract) -Lớp trừu tượng dùng làm lớp cha cho lớp khác, khơng (instance) -Lớp trừu tượng định nghĩa thuộc tính chung cho lớp -Ví dụ thiết kế lớp Hình trịn, Hình vng kế thừa từ lớp trừu tượng Hình Lớp Hình có thuộc tính tên hình, phương thức tính diện tích, chu vi 2.11 Lớp trừu tượng -Lớp trừu tượng (abstract) thường có phương thức trừu tượng, phương thức khơng có cài đặt public abstract void draw(); -Khai báo lớp trừu tượng public abstract class ClassName {…} -Các lớp lớp cha trừu tượng phải cài đặt tất phương thức trừu tượng Nếu khơng trở thành lớp trừu tượng 27 -Không thể tạo đối tượng lớp trừu tượng khai báo biến thuộc kiểu lớp trừu tượng để tham chiếu đến đối tượng thuộc lớp 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; } } 2.12 Giao tiếp (interface) -Giao diện “tính chất” mà đối tượng có, “ngữ cảnh” • Một người nhà người con, trường sinh viên, lớp người bạn -Giao diện Java dùng để thể đa kế thừa C++ -Khai báo giao tiếp interface Name { } -Một giao tiếp thường chứa static phương thức public chưa cài đặt -Một giao tiếp thừa kế giao tiếp khác -Một lớp cài đặt (implements) hay nhiều giao tiếp thừa kế (extends) từ lớp interface Drawable 28 { public void draw(); } public abstract class Shape { } public class Circle extends Shape implements Drawable { public void draw() { } } 2.13 Gói (package) -Package cho phép nhóm tập hợp lớp giao tiếp có quan hệ với để dễ dàng quản lý, bảo trì, phân phối… -Ví dụ: Tạo package Transport chứa lớp phương tiện lại: Car, Moto, Boat +Đặt lớp vào thư mục Transport +Khai báo đầu lớp dòng package Transport; -Sử dụng package – cách 1: Khai báo import Ví dụ 1: import Transport.Car; Ví dụ 2: import Transport.*; Ví dụ 3: import java.awt.Point; … Point p = new Point(1,2); -Sử dụng package – cách 2: Sử dụng trực tiếp java.awt.Point p = new java.awt.Point(1,2); javax.swing.JOptionPane.showMessageDialog( ); -Chú ý: Chỉ truy cập đến lớp public package Package java.lang.* tự động import vào chương trình Java vs C++ Một chương trình Java chạy chậm so với chương trình C tương ứng khoảng 20 lần Java khơng có kiểu liệt kê (enum), kiểu cấu trúc (struct) hay hợp (union), có class Mọi biến hay hàm Java nằm class Java khơng có tốn tử phạm vi (scope) :: 29 Cỡ kiểu liệu nguyên thuỷ (primitive) Java không phụ thuộc vào máy Đặc biệt kiểu char có cỡ 16 bit (Unicode) Biểu thức logic Java nhận giá trị boolean Trong Java, biến không thuộc kiểu nguyên thuỷ phải tạo từ khoá new Java khơng có tiền xử lý (preprocessor) Java khơng có trỏ Java khơng có huỷ tử (destructor), có phương thức finalize() gọi Garbage Collector 10 Java không hỗ trợ đối số mặc định 11 Java hỗ trợ kế thừa đơn, tất lớp mặc định kế thừa từ lớp Object 12 Java khơng có template 13 Java khơng có từ khố virtual Tất phương thức non-static ln dùng dynamic binding 14 Java khơng có q tải tốn tử (operator overloading) 15 Đối số hàm xử lý đối số giá trị (value argument) BÀI TẬP Cài đặt lại nội dung lý thuyết học Xây dựng lớp Candidate (Thí sinh) gồm thuộc tính: mã, tên, ngày tháng năm sinh, điểm thi Toán, Văn, Anh phương thức cần thiết Xây dựng lớp TestCandidate để kiểm tra lớp trên: • Nhập vào 10 thí sinh • In thơng tin thí sinh có tổng điểm lớn 15 Xây dựng lớp Point có liệu toạ độ x,y phương thức cần thiết Thêm phương thức toString để trả String có dạng “[x, y]” Xây dựng lớp Rect có liệu điểm trái phải Quá tải cấu tử để cung cấp nhiều cách khởi tạo Thêm phương thức: Kiểm tra điểm có nằm hình chữ nhật hay khơng Tính giao hình chữ nhật Xây dựng lớp TestRect: Sinh ngẫu nhiên 10 hình chữ nhật tính giao đơi chúng Xây dựng lớp Triangular có phương thức static để tính diện tích tam giác theo cách khác nhau: cạnh đáy chiều cao, công thức Heron, độ dài cạnh góc Xây dựng lớp Employee có name phương thức trừu tượng earnings() Xây dựng lớp Boss kế thừa từ Employee có cách tính lương khoản cố định hàng tháng Xây dựng lớp PieceWorker có cách tính lương dựa số sản phẩm làm được, lương sản phẩm $ 0.5 Xây dựng lớp 30 CommissionWorker có cách tính lương khoản cố định + tiền hoa hồng số sản phẩm bán được, sản phẩm $ 0.1 hoa hồng Xây dựng lớp trừu tượng Animal có liệu name weight, phương thức ảo grow (tăng trọng lượng) 10 Xây dựng lớp Chicken kế thừa từ Animal, cài đặt phương thức ảo để lần grow trọng lượng tăng 0.3 kg Xây dựng lớp Sparrow kế thừa từ Animal, lần tăng trọng lượng 0.05 kg 11 Xây dựng giao diện Flyable có phương thức fly() Cài đặt giao diện lớp Sparrow 31 ... Thực hành 10 18 15 12 19 13 Kiểm tra* Bài 1: Tổng quan Java công nghệ Java 1. Lịch sử đời Java 2.Một số đặc tính Java 3.Mơi trường lập trình Java 4.Cơng nghệ Java 5.Các cấu trúc lập trình Java Bài... giải thuật - Tính chất: Mơ đun Cơ sở lập trình Java cung cấp kiến thức kỹ thuật lập trình nâng cao với ngơn ngữ Java Giúp sinh viên làm quen với kỹ thuật lập trình giao diện lập trình mạng; lập trình. .. 036223 418 7 MỤC LỤC Bài 1: TỔNG QUAN VỀ JAVA VÀ CÁC CÔNG NGHỆ TRONG JAVA 1. Lịch sử đời Java Một số tính Java 3.Mơi trường lập trình Java 4 .Công nghệ Java