Tải bản đầy đủ (.pdf) (32 trang)

Giáo trình Lập trình java (Nghề: Công nghệ thông tin - Cao đẳng): Phần 1 - Trường CĐ nghề Kỹ thuật Công nghệ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (595.61 KB, 32 trang )

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
của 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ộ)
0


TUYÊN BỐ BẢN QUYỀN:
Tài liệu này thuộc loại sách giáo trình nên các nguồn thơng tin có thể được
phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh
thiếu lành mạnh sẽ bị nghiêm cấm.
MÃ TÀI LIỆU: MĐCNTT 20

1


LỜI GIỚI THIỆU
Ngơn ngữ lập trình java ra đời và được các nhà nghiên cứucủa Công ty Sun
Microsystem giới thiệu vào năm 1995. Sau khi ra đời không lâu, ngôn ngữ lập trình
này đã được sử dụng rộng rãi và phổ biến đối với các lập trình viên chuyên nghiệp
cũngnhư các nhà phát triển phần mềm. Gần đây ngôn ngữ lập trình, cơng nghệ java


đã được đưa vào giảng dạy ở các cơ 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 như một chuyên đề tự chọn cho các
sinh viên công nghệ thông tin giai đoạn chuyên ngành.
Sau một thời gian tìm hiểu, làm việc và đượ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 quyết định
biên soạn cuốn giáo trình này nhằm phục vụ công tác giảng dạy cũng như học tập của
sinh viên chun ngành cơng nghệ thơng tin.
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(Java Foundation Class), 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 (Java 2 Enterprise Edition), ... sẽ được nói đến trong
các chuyên đề nâng cao.
Để có thể đọc hiểu giáo trình này người đọc cần nắm vững các kiến thức về: nhập môn
lập trình, lập trình hướng đối tượng. Đây là lần xuất bảnđầu tiên chắc chắn khơng thể
tránh khỏi những sai sót. Nhóm tác giả rất mong nhận được những ý kiến đóng góp
của q thầy cơ, các đồng nghiệp và bạn đọc để có.thể hồn thiện hơn giáo trình này
phục vụ cho việc học tập của 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
1. Chủ biên Nguyễn Thị Thủy.
2. Tập thể Giảng viên Khoa CNTT

Mọi thơng tin đóng góp chia sẻ xin gửi về hòm thư , hoặc
liên hệ số điện thoại 0362234187
2



MỤC LỤC
Bài 1: TỔNG QUAN VỀ JAVA VÀ CÁC CÔNG NGHỆ TRONG JAVA .................. 9
1.Lịch sử ra đời của Java .......................................................................................... 9
2. Một số tính của Java ............................................................................................. 9
3.Mơi trường lập trình Java ...................................................................................... 9
4.Cơng nghệ Java ................................................................................................... 10
5. Các cấu trúc lập trình căn bản trong Java ............................................................ 11
5.1. Một chương trình Java cơ bản. ..................................................................... 11
5.2. Các kiểu dữ liệu cơ bản ................................................................................ 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 dữ 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
1. 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
2. Hướng đối tượng trong 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
3


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ụ về kế thừa trong 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
1. Khái niệm Java Applet........................................................................................ 32
2. Cấu trúc của một Applet ..................................................................................... 32
2.1 Sự khác nhau giũa Application và Applet ...................................................... 34
2.2 Những giới hạn bảo mật trên applet ............................................................... 36
3. Chu trình sống của một Applet ........................................................................... 37
4 Truyền tham số cho Applet .................................................................................. 38
5. Lớp Graphics ...................................................................................................... 39
5.1 Vẽ các chuỗi, các ký tự và các byte ............................................................... 40
5.2 Vẽ đường thẳng (Line) và Oval ..................................................................... 42
5.3 Vẽ hình chữ nhật (Rectangle) và hình chữ nhật bo góc (Rounded Rectangle) 43
5.4 Vẽ hình chữ nhật 3D và vẽ hình cung (Arc).................................................. 44
5.5 Vẽ hình PolyLine .......................................................................................... 44
5.6 Vẽ và tô đa giác (Polygon) ............................................................................ 46
4


6. Điều khiển màu và 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
1. Cơ chế lập trình đồ hoạ giao diện........................................................................ 56
2.Thư viện AWT và Swing ..................................................................................... 65
3.Container và Component ..................................................................................... 66
3.Container và Component ..................................................................................... 73
3.1. Container...................................................................................................... 73
3.2. Component ................................................................................................... 76
3. Textfield ............................................................................................................. 78
4. TextArea ............................................................................................................ 79
5. CheckBox ........................................................................................................... 80
6. CheckBoxGroup ................................................................................................. 81
7. Choice ................................................................................................................ 83
8. List ..................................................................................................................... 85
4.Quản lý Layout .................................................................................................... 86
4.1. Giới thiệu về LayoutManager Interface............................................................ 87
4.2. Giới thiệu về LayoutManager2 Interface.......................................................... 87
5.Lập trình GUI cơ bản ........................................................................................... 89
6.Lập trình GUI nâng cao ....................................................................................... 89
6.1. Các thành phần được giới thiệu .................................................................... 89
6.2. Vùng văn bản (TextArea). ............................................................................ 89
5


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

6


GIÁO TRÌNH MƠN HỌC
Tên mơ đun: Lập trình java cơ bản
Mã mơ đun: MĐCNTT 20
Vị trí, tính chất, ý nghĩa và vai trị của mơ đun :
- Vị trí: Mơ đun cơ sở lập trình JAVA căn bản thuộc nhóm các mơn học chun
ngành được bố trí giảng dạy sau khi đã học xong các môn học, mô đun cơ sở ngành
như: Cơ sở dữ liệu, Ngơn ngữ lập trình C/C++, Lập trình hướng đối tượng, Cấu trúc
dữ liệu và giải thuật.
- Tính chất: Mơ đun Cơ sở lập trình Java căn bản cung cấp các kiến thức cơ bản về cá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 và lập trình mạng; lập trình dịch vụ web với Java. Cung cấp cho sinh viên các
kỹ năng làm chủ các kỹ thuật lập trình ứng dụng trên Java.Sinh viên sử dụng được các thư
viện của Java để lập trình ứng dụng trong thực tế.
Mục tiêu của mơ đun:
- Về kiến thức
+ Trình bày được các vấn đề cơ bản trong ngơn ngữ lập trình java như: kiểu dữ
liệu, biến, khai báo thư viên, hàm, mảng, lớp đối tượng và các vấn đề cơ bản với lập
trình hướng đối tượng.
+ Nêu và làm rõ thế mạnh từng lĩnh vực trong cơng nghệ java
+ Trình bày được các vấn đê cơ bản liên quan đến lập trịnh applet trong java như :
các đối tượng giao diện cơ bản, Container, Component…
+ Trình bày được các khái niệm về thuộc tính, phương thức, phạm vi truy cập của

thuộc tính và phương thức của lớp và các đặc điểm của hướng đối tượng trong java.
+ Trình bày được nguyên lý và các đối tương sử dụng lập trình mạng trong java
+ Trình bày được khái niệm và chu kỳ sống của Applet
- Về kỹ năng
+ Xây dựng được các ứng dụng cơ bản 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 các module ứng dụng đơn giản như: gửi nhận tin online,
offlinen trực tiếp giữa hai máy tính hoặc qua server.
+ Tạo và truyền được tham số cho Applet
+ Thiết kế và xây dựng được giao diện chương trình trong thực tế bằng Java.
+ Xây dựng được ứng dụng Client/Server
- Về năng lực tự chủ và trách nhiệm
+ Tích cực ứng dụng lập trình trực quan cho các ứng dụng trong thực tế.
+ Khả năng tìm tài liệu, đọc hiểu tài liệu
+ Khả năng làm việc nhóm
7


Nội dung của mô đun
Thời gian

Số
TT

Tên các bài trong mô đun

Tổng
số



thuyết

Thực
hành

10

3

7

18

3

15

12

4

8

1

19

5

13


1

Kiểm
tra*

Bài 1: Tổng quan về Java và các công
nghệ trong Java
1.Lịch sử ra đời của Java
1

2.Một số đặc tính của 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 căn bản trong Java
Bài 2: Lớp và hướng đối tượng trong
JAVA

2

1.Lớp
2.Hướng đối tượng trong Java
Bài 3: Applet
1.Khái niệm
2.Cấu trúc của một Applet

3

3.Chu trình sống của một 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 trong
JAVA
2.Thư viện AWT và Swing

4

3.Container và Component
4.Quản lý Layout
5.Lập trình GUI cơ bản
6.Lập trình GUI nâng cao
Thi kết thúc mơ đun

1

Cộng

60

8

1
15

42

3



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 được các khái niệm liên quan đến Java và các công nghệ của Java.

-

Trình bày được các thư viện hỗ trợ cho từng nhóm ứng dụng trong Java.

-

Nêu được cấu trúc của một chương trình java cơ bản.

-

Thiết lập được 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à vào ra file.

-

Phân biệt các kỹ thuật lập trình và thư viện hỗ trợ của Java.

Nội dung chính:
1.Lịch sử ra đời của Java

Lịch sử phát triển của Java
Ra đời tại Sun Microsystems bởi James Gosling
1991: Version đầu tiên với tên “Oak” (cây sồi)
1995: Tên chính thức là Java
Mục đích của Java
Dùng để phát triển ứng dụng cho các thiết bị điện tử “thơng minh”
Tạo các trang web có nội dung động (web applet)
Hiện nay, Java được sử dụng để phát triển nhiều loại ứng dụng khác nhau:
cơ sở dữ liệu, mạng, Internet, viễn thơng...
2. Một số tính của Java


Đơn giản



Hướng đối tượng



Đa nhiệm



An tồn



Garbage Collection




Máy ảo (biên dịch và 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)
9


Mã nguồn

myProgram.java

Java API
Java Platform

Java VM

Hardware-Platform
Java Development Kit – JDK

• Bộ cơng cụ phát triển Java (jdk) gồm trình biên dịch, thông dịch, trợ
giúp, soạn tài liệu… và các thư viện chuẩn
• Ngồi ra cịn một số thư viện khác như JSP, JavaMail, Java TAPI…
• 1995: Version JDK 1.0
• 1998: Version JDK 1.2 (Java 2nd Platform)
• 2004: Version JDK 1.5
4.Cơng nghệ Java
Hai loại ứng dụng Java
• Application: Ứng dụng độc lập
• Applet: Ứng dụng chạy trên Web
Thư viện lớp Java
• Bộ JDK bao gồm rất nhiều lớp chuẩn đã được xây dựng sẵn.
• Lập trình viên thường sử dụng các lớp chuẩn để phát triển ứng dụng.
Các bước phát triển

10


5. Các cấu trúc lập trình căn bản trong Java
5.1. Một chương trình Java cơ bản.

-

-

Biên dịch chương trình


Vào chế độ Console của Windows




Gõ câu lệnh javac Hello.java



Nếu khơng có thông báo lỗi, file Hello.class sẽ được tạo ra

Thực thi chương trình


Gõ câu lệnh java Hello (khơng cần .class)
11


Thay đổi cách hiển thị
public class Hello
{
public static void main(String args[])
{
System.out.print( “Chao\tmung\nban\nden\tvoi\nlap trinh Java\n" );
}
}
public class Hello
{
public static void main(String args[])
{
System.out.print( “Chao\tmung\nban\nden\tvoi\nlap trinh
Chao
mung

Java\n" );
ban }

den
voi
}
lap trinh Java
5.2. Các kiểu dữ liệu cơ bản
- Java có hai kiểu dữ liệu
• Dữ liệu gốc chuẩn: Là các kiểu dữ liệu đã được định nghĩa trong ngôn
ngữ như số nguyên, số thực, ký tự, logic
• Dữ liệu dẫn xuất: Do người dùng tự định nghĩa như mảng, lớp, giao tiếp
- Ví dụ khai báo biến
• int x;
• Person ps;
a. Kiểu số ngun
Kiểu

Kích thước

Khoảng giá trị

byte

8 bits

-256…255

short


16 bits

-32768…32767

12


int

32 bits

-231…231 – 1

long

64 bits

-264…264 – 1

b. Kiểu số thực
Kiểu

Kích thước

Khoảng giá trị

float

32 bits


-3.4e38…3.4e38

double

64 bits

-1.7e308…1.7e308

c. Kiểu boolean: Nhận giá trị true hoặc false
d. Kiểu char: Kiểu ký tự theo chuẩn Unicode
Một số hằng ký tự



Hằng

Ý nghĩa

\uxxxx

Ký tự Unicode

\t

Tab ngang

\n

Xuống hàng


\r

Dấu enter

\’

Nháy đơn

e. Kiểu mảng


Khai báo: int[] iarray; hoặc int iarray[];



Cấp phát: iarray = new int[100];



Khởi tạo:

int[] iarray = {1, 2, 3, 5, 6};
char[] carray = {‘a’, ‘b’, ‘c’};
Chú ý: Luôn khởi tạo hoặc cấp phát mảng trước khi sử dụng


Một số khai báo khơng hợp lệ:

int[5] iarray;
int iarray[5];

Kiểu mảng


Truy cập mảng

iarray[3] = 0;
13


carray[1] = ‘z’;
Chú ý: Chỉ số của mảng được tính từ 0


Lấy số phần tử mảng: iarray.length

Quy tắc đặt tên biến


Bắt đầu bằng một chữ cái, một dấu gạch dưới (_) hoặc một dấu dollard ($)



Khơng có khoảng trắng giữa tên



Sau ký tự đầu có thể dùng ký tự, số, dấu dollard, dấu gạch dưới




Khơng trùng với các từ khố



Ví dụ: a_1234_d, 1awas, _asdc, a sas, $erd, %ats…



Chú ý: Java phân biệt chữ hoa chữ thường

5.3. Các toán tử
Bảng toán tử
=

>

<

!

~

?:

==

<=

>=


!=

&&

||

++

--

+

-

*

/

&

|

^

%

<<

>>


>>>

+=

-=

*=

/=

&=

|=

^=

%=

<<=

>>=

>>>=
5.4. Các cấu trúc điều khiển
a. Lệnh 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”);
14


else
System.out.println(“Hom nay khong la chu nhat\n" );
}
}
b. Lệnh 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);
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); // kết thúc chương trình
}
}

c. Vịng lặp for
// Chương trình tính tổng các 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;
15


System.out.println(tong);
}
}
d. Vịng lặp while
while (<biểu thức boolean>)
<khối lệnh>;
// Tính tổng các số lẻ từ 1 đến 100
int tong = 0, i = 1;
while (i<=100)
{
tong+=i; i+=2;
}
System.out.println(tong);
e. Vòng lặp do/while
do
{
<khối lệnh>;
} while <biểu thức boolean>;

// Tính tổng các số lẻ từ 1 đến 100
int tong = 0, i=1;
do
{
tong+=i; i+=2;
}

while (i<=100);

System.out.println(tong);
5.5. Nhập dữ liệu từ bàn phím
Ví dụ nhập một số nguyên và một số thực
import java.io.*;
public class TestInput
{
public static void main(String[] args) throws Exception
{
16


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 một file Circle.java duy nhất
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ụ về đối tượng Circle
Cách 2: Sử dụng một file với 2 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ụ về đố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 trên My Computer, chọn Properties, chọn
Advanced, chọn Enviroment Variables, chọn biến PATH và edit, thêm vào
đường dẫn tới thư mục bin của bộ JDK.
Trong chế độ Console: Gõ lệnh
set Path=%Path%;đường dẫn tới bin
Nên tham khảo java/docs khi làm việc
BÀI TẬP
1. Viết chương trình tính tiền điện thoại:
— Tiền thuê bao hàng tháng là 27000 đ.
— Từ phút gọi thứ nhất đến phút thứ 200 giá cước là 120 đ/phút.
— Từ phút gọi thứ 201 đến phút thứ 400 giá cước là 80 đ/phút.
— Từ phút gọi 401 đến phút cuối giá cước là 40 đ/phút.
2. Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0 với a,b,c nhập từ
bàn phím.
3. Viết chương trình nhập vào một dãy các số nguyên khác 0, kết thúc nhập khi
gặp số 0. Sau đó tính trung bình cộng của dãy số đó. Tìm số lớn nhất, số nhỏ
nhất của dãy số.
4. Viết chương trình tính tổng
E = 1 + 1/1 + 1/2 + 1/3 +… + 1/n
với n nhập vào từ bàn phím

5. Mở rộng lớp Circle : thêm dữ liệu toạ độ tâm hình trịn và phương thức kiểm tra
một điểm cho trước có nằm trong hình trịn hay khơng.
6. Viết chương trình nhập vào một hình trịn, sau đó phát sinh 100 điểm ngẫu
nhiên và cho biết có bao nhiêu điểm nằm trong 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 được các khái niệm về thuộc tính, phương thức, phạm vi truy cập của
thuộc tính và phương thức của lớp.
- Trình bày được các đặc điểm của hướng đối tượng trong java.
- Khai báo và tạo được đối tượng của lớp.
- Phân biệt được sự giống và khác nhau giữa các phương thức thường và các phương
thức khởi tạo.
Nội dung chính:
1. Lớp
1.1. Lập trình hướng đối tượng-OOP
Lớp và đối tượng
Dữ liệu và các thao tác trên dữ liệu được kết hợp trong cùng một đối tượng
(object)
Lớp (class) định nghĩa các tính chất của một tập hợp các đối tượng cùng
kiểu
Đối tượng là các thể hiện (instances) của lớp
Đặc điểm của OOP
Tính đóng gói (Encapsulation)
Tính kế thừa (Inheritance)
Tính đa hình (Polymorphism)

Lớp Time và TimeTest nằm trong cùng thư mục
Lớp Time nằm trong file Time.java. Nó chứa các định nghĩa về thời gian.
Lớp TimeTest nằm trong file TimeTest.java. Nó dùng để kiểm tra lớp Time.
Lớp TimeTest chứa hàm main.
Khi chạy chỉ cần gõ:
javac TimeTest.java
java TimeTest
Java sẽ tự động tìm và dịch file Time.java
1.2. Lớp Time
// File Time.java
import java.text.DecimalFormat;
public class Time
20


{
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 );

}
// 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 dữ liệu phải có một phạm vi nhất đị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ả về
21


Có thể có nhiều cấu tử (overloading)
Mỗi phương thức phải có một phạm vi nhất đị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, 6 );
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( 0 );
} // Ket thuc ham main
} // Ket thuc lop TimeTest
1.4. Chạy TimeTest


javac TimeTest.java
22





java TimeTest

2. Hướng đối tượng trong JAVA
2.1. Phạm vi truy cập
- Private: Chỉ truy cập được từ trong lớp khai báo.
- Protected: Truy cập được từ trong lớp khai báo, lớp con của của lớp khai báo
và các lớp cùng gói với lớp khai báo.
- Public: Truy cập được từ mọi nơi.
- Mặc định: Truy cập được từ trong lớp khai báo và các lớp cùng gói với lớp
khai báo.
2.2. Từ khoá this
Từ khoá this chỉ đối tượng hiện thời
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 );

}
2.3. Nạp chồng hàm khởi tạo
// Ham khoi tao khong tham so
23


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

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à lớp khơng thể có lớp con
Public final class NoChild {...}
Biến final: là biến không thể thay đổi khi đã gán giá trị
Private final int MAX = 100;
Phương thức final: là phương thức không thể nạp chồng
Public final void NoOverride();
-Từ khoá static
Được dùng với phương thức và biến.
Biến static: là biến chung cho mọi đối tượng của lớp, nó được truy cập
qua đối tượng của lớp hoặc qua tên lớp.
private static char TAB = ‘\t’;
Phương thức static: là phương thức chỉ được phép truy cập tới các biến
static của lớp, nó có thể gọi ngay cả khi chưa có đối tượng nào của lớp.
24



×