Tự học java nhanh nhất
Phần I : Một số khái niệm. I - Một số khái niệm: Lập trình hướng đối tượng (OOP) Trừu tượng hóa dữ liệu (Data Abstraction) Lớp và Đối tượng (Class & Object) Khởi dựng và Huỷ diệt (Construction & Destruction) Che dấu dữ liệu (Data Encapsulation) Thừa kế, Đa thừa kế (Inheritance & Multiple Inheritence) Đa hình thái (Polymorphism) II - Cách dịch trong Java: III - Các thể loại ứng dụng Java: Applets: nhúng vào trang web để chạy Command Line: Ứng dụng này giao tiếp thông qua chế độ dòng lệnh (màn hình DOS). GUI (Graphics User Interface): Như command line nhưng người dùng giao tiếp với ứng dụng thông qua form nhập liệu (thân thiện với người dùng) Servlets/JSP: Thuộc thể loại ứng dụng web, phối hợp với web server để thực hiện. Database: Cho phép quản lý CSDL quan hệ (SQL Server, Oracle, ) RMI: Xây dựng các ứng dụng phân tán. EJB: Thể loại ứng dụng được thực hiện theo mô hình đa tầng trên nền của J2EE. IV - Khai thác Java: java.lang : Các lớp cơ bản của ngôn ngữ java.util : Các lớp tiện ích trong java java java.awt : Các lớp hỗ trợ xây dựng GUI java.awt.event : Các lớp giúp xử lý sự kiện java.applet : Các lớp hỗ trợ xây dựng applet java.io : Các lớp hỗ trợ xử lý vào ra java.net : Các lớp giúp lập trình TCP/IP java.rmi : Các lớp giúp lập trình phân tán java.sql : Các lớp giúp lập trình quản lý CSDL java.security : Các lớp hỗ trợ lập trình an toàn hệ thống V - Công cụ phát triển Java - JDK: javac : dịch byte code (*.class) javah : dịch header (*.h) để sử dụng trong C javadoc : tạo tài liệu API (*.html) java : chạy ứng dụng java appletviewer : chạy applet trên trang web VI - Ví dụ và cách dịch một file java. - Ví dụ: package lessons.java.test; import java.lang.*; public class HelloWorld{ /** This is my first java program. The main method is entry point of an application. */ public static void main(String[] args){ System.out.println(“Hello World !”); } } - Các cách dịch: (từ cửa sổ Command Prompt) Javac –d c:\java HelloWorld.java Javah HelloWorld.java Javadoc HelloWorld.java Java lessons.java.test.HelloWorld =============== Phần II : Khái niệm về Package – Import – Class – Modifier và Interface. I - Cấu trúc mã nguồn của Java: package : Định nghĩa gói imports : Chỉ định các gói sử dụng classes : Định nghĩa các lớp interfaces : Định nghĩa các Interface Comments : Các loại ghi chú - Chỉ có một class hay một Interface được định nghĩa là public. Khi đó, tên của class hay interface đó phải trùng với tên của file java. (Nói dễ hiểu là tên của file java phải cùng tên với class chứa hàm main() ). - Mỗi class hay interface khi dịch ra sẽ sinh ra file *.class thuộc vào thư mục của gói. VD: package lessons.java; import java.util.*; import java.io.*; class C1 { // variables, methods, inner class } public class C2 { // variables, methods, inner class } interface I { // Khai báo variables, methods } Khi biên dịch, sẽ sinh ra file C1.class, C2.class, I.class và cách file này sẽ được chứa trong Folder lessons\java (Nghĩa là nếu file java lưu ớ ổ D: thì khi biên dịch chương trình sẽ tạo ra Folder C:\lesson\java và lưu các file *.class vào. Vì ở trên bạn đã định nghĩa "package lessons.java;") II - package và import: - Mỗi package chứa các class và interface. - Dùng package để tránh trùng tên class hay interface trong các gói. - Khi ta muốn sủ dụng một class nào đó trong 1 package thì ta phải import vào. - Các class trong java.lang được import tự động. VD: package lessons.java.test; import java.lang.*; // không cần thiết import java.io.File; // chỉ class File trong gói java.io import lessons.java.*; // tất cả các class trong lessons.java III - Class - Khai báo lớp: Cú pháp: <modifiers> class <ClassName> [extends <SuperClass>] [implements <Interface1>[,<Interface2>]…] { // Khai báo biến thành viên // Khai báo phương thức khởi dựng // Khai báo phương thức thành viên // Khai báo Inner classes } Ghi chú: Khai báo lớp với tên <ClassName>, thừa kế từ lớp cha <SuperClass> và thực hiện theo các interface <Interface1>, <Interface2>,… Mặc định của SuperClass là Object VI - Khai báo các lớp thành viên: 1. Cú pháp: <modifiers> <datatype> <var1>[=val1][, <var2>[=val2]]; 2. VD: String x, y = “ABC”; private static final int c = 55; // c là hằng số x, y, c : các biến private, static, final, {} : modifier “ABC”, 55 : giá trị khởi tạo V - Constructor - Khai báo Constructor: 1. Là phương thức được gọi để xây dựng nên đối tượng của class. 2. Khai báo: <modifiers> <ClassName>([arguments]) [throws Exception1[, Exception2]]{…} 3. Đặc điểm: - Trong một class có thể có nhiều constructor khác nhau nhưng phải khác nhau về kiểu danh sách các tham số - Nếu class không khai báo constructor nào thì constructor mặc định là constructor không tham số. Ngược bắt buộc phải dùng constructor đã khai báo. - Để gọi một constructor từ một constructor khác ta sử dụng this(tham số phù hợp) 4. Thừa kế: - Constructor không được thừa kế. Hãy sử dụng super(tham số phù hợp) để gọi constructor của lớp cha. - Trong một constructor nếu gọi super(…) hay this(…) thì lời gọi này phải xuất hiện đầu tiên trong constructor đó. - Khi gọi phương thức khởi dựng của lớp con, nếu constructor đó không gọi this(…) hay super(…) thì constructor không tham số của lớp cha tự động được kích hoạt. 5. Ví dụ public class C1{ int index = 0; public C1(int index) {this.index = index;} public void print() { System.out.println(this.index);} } Khởi dựng : C1 c = new C1(15); c.print(); VI - method - Khai báo method: 1. Cú pháp: <modifiers> <datatype> <method>([arguments]) [throws Exception1[, Exception2]]{…} 2. Ví dụ: public static long add(int x, int y) public void readFile(String file) throws FileNotFoundException <modifiers> : public, static <datatype> : long, void <method> : add, readFile [arguments] : int x, int y, String file [Exceptions] : FileNotFoundException VII - Inner class: 1. Inner class bao gồm: Member class : Các inner class ngang cấp với phương thức, biến thành viên Anonymous class : Các class nặc danh (không tên) Local class : các class được định nghĩa trong khồi. 2. Member class được chia thành 2 loại: - Static inner class - Non-static inner class 3. Ví dụ: Class C { class IC1{} static class IC2{} public void method() { IC1 ic1 = new IC1(); } } VIII - VD về cấu trúc của 1 class: class Test { public static void main(String[] args) { // Khởi dựng để tạo object c C c = new C(“LT-Aptech”); // Gọi phương thức add() System.out.println(c.add(5, 2)); // Tạo object của inner class IC C.IC ic = c.new IC(); // Gọi phương thức của inner class ic.display(“Hello”); } } IX - Danh sách các Modifier: 1. Dach sách. 2. Cách Modifier truy xuất : - Modifier truy xuất là các modifier dùng để định nghĩa tính chất truy xuất của class, variable, method. - Chúng gồm: public , protected , {default} , private. - Khả năng che dấu tăng dần theo : public -> protected -> {default} ->private 3. Modifier - final: - final có thể dùng để định nghĩa: Class : không cho thừa kế class này Variable : hằng số Method : không cho phép override ở subclass - Ví dụ: final class C{ final int x = 5; final void method() { // statements } } 4. Modifier - abstract: - abstract có thể dùng để định nghĩa: Class : phải được thừa kế mới có thể sử dụng các thành viên của nó. Method : bắt buộc phải override ở subclass. Method này chỉ định nghĩa mà không viết đầy đủ thân. - Nếu trong class có một phương thức abstract thì class đó buộc phải là abstract - Ví dụ: abstract class C{ abstract void method(); … } 5. Modifier - static: - static có thể dùng để định nghĩa : Variable : tài nguyên chung cho các instance của cùng 1 process. Method và Variable : được truy xuất trực tiệp thông qua tên class mà không cần khởi dựng đối tượng. Block : chứa các biểu thức tác động lên biến static - Ví dụ: class C{ static int x = 5, y = 7; static void method() { } static{ x += y+5; } … } 6. Một số Modifier khác: - native : định nghĩa cho phương thức được viết mã lệnh trong một ngôn ngữ khác (C chẳn hạn) - transient : định nghĩa biến không cho phép tuần tự hóa. - volatile : định nghĩa biến cho phép thay đổi dị bộ trong quá trình thực hiện chương trình, được quan tâm trong môi trường nhiều bộ vi xử lý. - synchronized : định nghĩa phương thức, khối lệnh cái mà được thực hiện duy nhất tại một thời điểm trong các chương trình đa luồng xử lý (được xét sau). - Ví dụ Class C{ native void method(); transient String x = “PHANTOM_NDK”; synchronized void method1(){…} C1 c1 = new C1(); synchronized(c1){…} } ===================== Phần III – Khái niệm về Overloading – Overriding – Interface - Exception I – Overloading - Trong một class có thể có nhiều phương thức cùng tên nhưng khác nhau về danh sách tham số (kiểu, số lượng) được gọi là overload. - Ví dụ: public void method(int x) {} public void method(float x) {} public int method(int y) {} // không hợp lệ Các lời gọi method(5), method(5f) là khác nhau II – Overriding - Nếu lớp con có phương thức giống (tham số và kiểu trả về) phương thức lớp cha được gọi là verride. - Phương thức override phải có quyền truy xuất >= phương thức bị override - Phương thức override không được phép quăng loại trừ không hợp lệ đối với phương thức bị override - Để gọi phương thức bị override của lớp cha ta dùng super.xxx(…) trong đó xxx(…) là tên phương thức. - Ví dụ: Class C { protected int add(int x, int y) throws IOException{} } Class C1 extends C { protected int add(int x, int y) throws IOException{} //? public int add(int x, int y) throws FileNotFoundException{} //? public int add(int x, int y) throws Exception{} //? private int add(int x, int y) throws IOException{} //? } III – Interface - Là bản khai báo các phương thức, biến để class nào thực hiện thì phải viết đầy đủ các phương thức này cũng như trong super interface. - Khai báo interface: <modifiers> interface <InterfaceName> [extends SuperInterface] { // Các khai báo phương thức và biến } - Thực hiện : sử dụng [implements <InterfaceName>] - Ví dụ 1: class C implements Runnable, Serializable{…} Runnable, Serializable : là các interface - Các phương thức trong interface chỉ được phép dùng modifier public để định nghĩa. - Không như abstract class, interface không cho phép viết một phương thức đầy đủ. - Một class chỉ thừa kế một class duy nhất nhưng có thể thực hiện nhiều interface khác nhau. - Nếu bỏ qua một số phương thức nào đó của interface thì class thực hiện phải được khai báo abstract - Ví dụ 2: interface ISecurity{ public boolean login(String account, String passworld); } interface IBAcount extends ISecurity{ public void guiTien(int money); public void rutTien(int money); } class BankAccount implements IBAccount, Runnable{ public boolean login(String acc, String pass){…} // của ISecurity public void guiTien(int money){…} // của IBAcount public void rutTien(int money){…} // của IBAcount public void run(){…} // của Runnable public void rutTienUSD(int usdMoney){…} // Phương thức mới } IV – Exception (LoạI trừ) - Là lỗi xuất hiện trong quá trình chương trình thực hiện của đoạn code. Nếu không xử lý thì chương trình có thể bị dừng. - Sau đây là một số loại trừ: FileNotFoundException : Mở file không có NullPointerException : Gọi phương thức khi đối tượng null NumberFormatException : Chuyển chuỗi không phải số sang số ArrayIndexOutOfBounds : Truy xuất phần tử ngoài phạm vi mảng,… - Cơ chế bắt loại trừ như sau: try{ // Code có khả năng xảy ra loại trừ [T] } catch(Exception1 e1){ // Xử lý loại trừ Exception1 [E1] } catch(ExceptionN eN){ // Xử lý loại trừ ExceptionN [EN] } finally{ // Xử lý bất chấp có loại trừ hay không [F] } // Xử lý sau loại trừ [S] - Quy trình hoạt động: + Thực hiện: . Có loại trừ xảy ra Có bắt : -> [Ei] -> [F] -> [S] lKhông bắt : -> [F] . Không có loại trừ : -> [F] -> [S] + Có thể chia loại trừ thành 2 loạI: Các loại trừ con cháu của RuntimeException chỉ xảy ra trong khi chạy. Vì vậy không yêu cầu phải bắt mà vẫn dịch tốt. Còn lại : yêu cầu phải bắt mới dịch được - Ví dụ: String[] numbers = {“abc”, “123”, “cdf”}; int i = 2; try{ [...]... trình ứng dụng tron nền Java2 I – Java2 API - Là tập thư viên được xây dựng sẳn hỗ trợ người lập trình java tạo ra ứng dụng với các chức năng phong phú một cách dễ dàng - Nghiên cứu class/interface trong các gói java. lang : phổ dụng trong ngôn ngữ lập trình java java.util : tiện ích có tính năng mạnh java. awt : hỗ trợ lập trình GUI java. awt.event : xử lý sự kiện xảy ra trong GUI java. applet : giúp tạo... không nhiều chức năng như Notepad): Bạn chép đoạn code và nhớ lưu với tên là "TextEditor .java" (Nhắc lại: Tại sao phải lưu với tên đó? Vì mình đã nói ở bài trước, tên của file Java phải trùng với tên của Class chứa hàm main() ) - CODE import java. awt.*; import java. awt.event.*; import java. util.*; import java. io.*; class thongTin extends Frame { String[] lbl = {"Trinh Soan Thao Van Ban", " ... diện Tuy nhiên, sau phần này các bạn chỉ có thể tạo giao diện tương đốI thui, để có một giao diện sắc sảo thì các bạn phảI học Advance Java Advance Java chắc phảI nhờ BabyWolf thui hi hi Để có thể xây dựng được ứng dụng với giao diện thân thiện, trong java bạn cần phải tìm hiểu gói java. awt với các nội dung chính: - Các phần tử (Component) - Phần tử chứa (Container) - Chế độ hiển thị (Layout) - Hệ thống... Applet java. io : xử lý các luồng dữ liệu vào ra java. util.zip : nén và giải nén dữ liệu II – Các class trong java. lang Object : Class cha của tất cả các class Runtime : Class quản lý môi trường System : Quản lý thông tin hệ thống Math : Cung cấp hệ thống hàm toán học Integer : Class số nguyên String ,StringBuffer : Classes chuỗi Class, Field, Method : Quản lý thành viên trong class II – Các class trong java. util... ComparatorqInterface : Enumeration, Iterator, IteratorListqClass Collections : Hỗ trợ xử lý tập hợp More Classes - Có thể sau khi đọc, bạn sẽ cảm thấy khó hiểu Điều đó là tất nhiên vì học lập trình thì không thể chỉ học lý thuyết mà điều quan trọng là bạn phải thực hành thật nhiều, phải có niềm say mê và sự tìm tòi Nếu bạn chưa nắm nhiều thì cũng không sao, khi qua tới phần thiết kế giao diện (GUI)... ! (Lưu ý: Vì ở đây không canh lề được như trong trình soạn Java nên các bạn sẽ nhìn thấy lộn xôn, các bạn Copy về rùi chỉnh ra vô cho hợp lý) Phần V: GUI – Graphic User Interface (Tiếp Theo) II – Phần Tử Chứa (Container) Container là các component có thể chứa các phần tử khác Chúng còn cung cấp một môi trường đồ hoạ để bạn có thể vẽ lên đó Java cung cấp các container các mục đích khác nhau sau: Frame... txa.setForeground(Color.orange); else if(ac.equals("Pink")) txa.setForeground(Color.pink); else if(ac.equals("Yellow")) txa.setForeground(Color.yellow); } public static void main(String[] args) { Frame f = new Frame( "Java Text Editor Application"); f.setMenuBar(new TextEditor(f)); f.setSize(500,400); f.setFont(new Font("Tahoma",Font.PLAIN,12)); f.show(); // Dang ky xu ly su kien dong cua so Frame f.addWindowListener(new... chưa làm xong hình minh họa, sẽ Post lên sau> IV – Điều khiển sự kiên & Menu 1 Sự kiện xảy ra do - Người sử dụng tác động lên các conponent của giao diện - Hệ thống phát sinh - Mục tiêu của bài học là khai thác các sự kiện + ActionEvent là sự kiện xảy ra khi Click vào button, Chọn mục menu, Nháy kép vào List + ItemEvent là sự kiện xảy ra khi chọn vào các mục của các component: Choice, List, Checkbox, . Khai thác Java: java. lang : Các lớp cơ bản của ngôn ngữ java. util : Các lớp tiện ích trong java java java. awt : Các lớp hỗ trợ xây dựng GUI java. awt.event : Các lớp giúp xử lý sự kiện java. applet. !”); } } - Các cách dịch: (từ cửa sổ Command Prompt) Javac –d c: java HelloWorld .java Javah HelloWorld .java Javadoc HelloWorld .java Java lessons .java. test.HelloWorld =============== Phần II : Khái. class trong java. lang được import tự động. VD: package lessons .java. test; import java. lang.*; // không cần thiết import java. io.File; // chỉ class File trong gói java. io import lessons .java. *;