116
Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường Đại học Sư phạm TP.HCM 1

Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Ths. Lương Trần Hy Hiến

Khoa Công Nghệ Thông Tin

Trường Đại học Sư phạm TP.HCM1

Page 2: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Giảng viên: Ths. Lương Trần Hy Hiến (HIENLTH)

Khoa CNTT, ĐH Sư phạm TpHCM (FIT – HCMUE)

Các môn dạy:▪ Phát triển ứng dụng Web

▪ Phát triển Ứng dụng Di động

▪ Công nghệ NET, Bảo mật và An ninh mạng

Hướng nghiên cứu:▪ Software Engneering, Semantic Web, Information Security…

Email: [email protected]

Website môn học: https://ptuddd.weebly.com

2

Page 3: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Slide bài giảng được soạn từ nhiều nguồn: Bài giảng (bao gồm cả ví dụ) của các giảng viên trong

nước và quốc tế.

https://developer.android.com/training/index.html

https://developers.google.com/training/android/

Các khóa học về Thiết kế ứng dụng Di động, Lập trình

Di động trên Udemy, Udacity, …

3

Page 4: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lect 01 : Java cơ bản

Lect 02 : Tổng quan Android

Lect 03 : Layout và các điều khiển cơ bản

Lect 04 : Intents

Lect 05 : RecycleView

Lect 06 : Preferences

Lect 07 : SQLite

Lect 08 : Content Provider

Lect 09 : Background Task

4

Page 5: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lect 10 : Fragment

Lect 11 : FireBase

Lect 12 : Place/Location

Lect 13 : Publish App

5

Page 6: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

6

Page 7: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

1. Kiểu dữ liệu cơ sở

2. Mảng (Array)

3. Tập hợp (Collection)

4. Hướng đối tượng trong Java

5. Bẫy lỗi ngoại lệ (Exception)

7

Page 8: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

8

Page 9: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Kiểu dữ liệu

Kiểu cơ sở

(Primitive data types)

Kiểu tham chiếu

(Reference data types)

Kiểu dữ

liệu

Kích

thước

Miền giá trị

byte 8 bit -27 .. 27-1

short 16 bit -215 .. 215-1

int 32 bit -231..231-1

long 64 bit -263..263-1

float 32 bit 1.40129846432481707e-45 ..

3.40282346638528860e+38

double 64 bit 1.40129846432481707e-45 ..

3.40282346638528860e+38

Boolean true hoặc false

char 16 bit Ký tự Unicode 16 bit

Kiểu dữ

liệu

Mô tả

Array Kiểu mảng

Class Kiểu lớp đối tượng

Interface Kiểu giao diện lập

trình

String Chuỗi ký tự

9

Page 10: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Cơ chế chuyển đổi kiểu dữ liệu

Trạng thái 2 kiểu của việc chuyển đổi kiểu

int

float

Chuyển đổi kiểu ngầm địnhChuyển đổi kiểu tường minh

10

Page 11: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Cơ chế chuyển đổi kiểu dữ liệu

Chuyển đổi kiểu ngầm định

▪ Hai kiểu phải tương thích

▪ Kiểu đích có tầm giá trị lớn hơn kiểu nguồn qui luật của sự

phát triểnint i=1000;

long l= i;

Chuyển đổi kiểu tường minh

▪ Chuyển từ kiểu có độ chính xác cao sang kiểu có độ chính xác

thấp hơnlong l=1000;

int i=(int)l;

11

Page 12: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Khai báo biến Cú pháp: KiểuDữLiệu TênBiến;

Ví dụ: int tuoi;

String ten;

double luong;

10

soNguyenA

0FFFA

Tên biến

Giá trị

Địa chỉ12

Page 13: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Hằng số

Hằng là những giá trị không thay đổi trong suốt quá

trình hoạt động của ứng dụng

Khai báo hằng

▪ Cú pháp: final Kiểu_Dữ_Liệu Tên_Hằng = <giá_trị>;

▪ Ví dụ:▪ final double PI=3.14;

13

Page 14: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự số, dấu

gạch dưới ‘_’, và dấu ‘$’

Tên biến phải bắt đầu bằng ký tự chữ

Tên biến không được trùng với từ khóa và từ dành riêng của Java

Tên biến có phân biệt chữ hoa – thường

Nếu tên biến chỉ gồm một từ đơn, tên biến nên viết chữ thường

Nếu tên biến gồm nhiều từ, ký tự đầu của từ đầu viết thường, ký tự đầu của mỗi từ kế tiếp viết hoa

14

Page 15: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Kiểu String Trong Java, String là lớp quản lý dữ liệu văn bản

Trong các ngôn ngữ khác, xâu là mảng ký tự, trong Java xâu là các đối tượng

Khai báo:String s1 = new String();

String s2 = “Hello”;

s

H E L L O

15

Page 16: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Nội dung của đối tượng String là không thể

thay đổi

Khi String được tạo ra, trật tự các ký tự của xâu là

cố định

Khi cần tạo một biến thể của xâu, chúng ta nên

tạo một xâu mới

Có thể sử dụng String trong lệnh switch

16

Page 17: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

equals

length

charAt

compareTo

indexOf

lastIndexOf

concat

Substring

https://docs.oracle.com/javase/tutorial/java/data/strings.html 17

Page 18: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lưu trữ 1 ký tự (1 phần tử của biến kiểu string)

Ví dụ:

char letter = 'S';

out.println(letter);

String food = "cookie";

char firstLetter = food.charAt(0); // 'c'

18

Page 19: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Các phương thức xử lý trên kiểu String

Vấn đề:

Cần có các giá trị để phục vụ cho

việc hiển thị và tính toán

Ví dụ:

• Tính chiều dài của chuỗi s

• Nối chuỗi s1 vào chuỗi s

• Lấy một ký tự tại vị trí index trong

chuỗi s

• So sánh hai chuỗi s1 và s2

• Tìm vị trí xuất hiện đầu tiên của

chuỗi s2 trong chuỗi s

Giải quyết:

Sử dụng hàm chuỗi trong thư viện

hàm của Java

String s = “Happy "; String s1 = “New Year”;// Tính chiều dài chuỗi

int len = s.length(); // 6// Nối chuỗi s1 vào chuỗi s: tương đương s

+ s1s.concat(s1); // Happy New Year// Lấy một ký tự tại vị trí số 8 của s

char result = s.charAt(8); // e// So sánh hai chuỗi s1 và s2

String s2 = “New Year”; s2.compareTo(s1); // 0 (trả về 0, <0 hoặc >0)// Tìm vị trí xuất hiện đầu tiên của chuỗi s2

trong chuỗi s

s.indexOf(s2); // 6 (vị trí đầu tiên)

19

Page 20: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Các phương thức xử lý trên kiểu String

Vấn đề:

Cần có các giá trị để phục vụ cho

việc hiển thị và tính toán

Ví dụ:

• Tìm vị trí xuất hiện cuối cùng của

chuỗi s2 trong chuỗi s

• Thay thế chuỗi s1 bằng chuỗi s2

trong chuỗi s

• Loại bỏ các khoảng trắng thừa

của chuỗi s3

• Tạo chuỗi con s4 từ chuỗi s từ vị

trí số 6

Giải quyết:

Sử dụng hàm chuỗi trong thư

viện hàm của Java

String s = “Happy New Year"; String s1 = “Happy”;String s2 = “New”;// Tìm vị trí xuất hiện cuối cùng của chuỗi s2 trong chuỗi ss.lastIndexOf(s2); // 6 (trả về -1 nếu không tìm thấy)// Thay thế chuỗi s1 bằng chuỗi s2 trong chuỗi ss.replace(s1, s2); // New New Year// Loại bỏ các khoảng trắng thừa của chuỗi s3String s3 = “ Hello Bi ”;s3.trim();// Hello Bi// Tạo chuỗi con s4 từ chuỗi s từ vị trí số 6String s4 = s.substring(6); // New Year

20

Page 21: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringBuilder

Quản lý một chuỗi có thể thay đổi kích thước và nội dung

// Phương thứcappend()

insert()

delete()

reverse()

// Khởi tạoStringBuilder()

StringBuilder(int capacity)

StringBuilder(String s)

http://developer.android.com/intl/vi/reference/java/lang/StringBuilder.html21

Page 22: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringBuilder

Các hàm khởi tạo của lớp

▪ StringBuilder(): Mặc định tạo ra một đối tượngStringBuilder có thể lưu giữ được 16 ký tự

▪ StringBuilder(int capacity): Tạo ra một đốitượng StringBuilder có thể lưu giữ được capacity ký tự

▪ StringBuilder(String s): Tạo một đối tượngStringBuilder lấy thông tin từ chuỗi s

22

Page 23: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringBuilder

Ví dụ:StringBuilder sb = new StringBuilder();

sb.append(“Wellcome to ");

sb.append(“Java ”);

sb.append(“world”);

System.out.println(sb);

// Wellcome to Java world

23

Page 24: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringBuilder

append()

▪ append(char c): Gắn thêm chuỗi đại diện của ký tự c vào chuỗi

▪ append(int i): Gắn thêm chuỗi đại diện của số nguyên i vào chuỗi

▪ append(Object obj): Gắn thêm chuỗi đại diện của đối tượng obj

vào chuỗi

▪ append(String s): Gắn thêm chuỗi cụ thể s vào chuỗi

24

Page 25: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringBuilder

insert()▪ insert(int offset, char c): Chèn chuỗi đại diện của

ký tự c vào chuỗi

▪ insert(int offset, int i): Chèn chuỗi đại diện của

số nguyên i vào chuỗi

▪ insert(int offset, Object obj): Chèn chuỗi đại

diện của đối tượng obj vào chuỗi

▪ append(int offset, String s): Chèn chuỗi cụ thể s

vào chuỗi

25

Page 26: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringBuilder

delete()

▪ delete(int start, int end): Xóa các ký tự từ start

tới end ra khỏi chuỗi

▪ deleteCharAt(int index): Xóa ký tự tại vị trí index ra

khỏi chuỗi

reverse(): Đảo ngược chuỗi trong đối tượng đang có,

có kết quả trả về là một tham chiếu đến đối tượng này

26

Page 27: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringTokenizer

Chia chuỗi thành các chuỗi con

// Khởi tạoStringTokenizer(String str)

StringTokenizer(String str, String delim)

StringTokenizer(String str, String delim,

boolean returnDelims)

// Phương thứccountTokens()

hasMoreTokens()

nextToken()

hasMoreElements()

nextElement()

27

Page 28: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringTokenizer

Các hàm khởi tạo của lớp▪ StringTokenizer(String str): Xây dựng một chuỗi

tokenizer cho một chuỗi cụ thể str. Sử dụng các delim mặcđịnh là: “\t\n\r\f"

▪ StringTokenizer(String str, String delim): Xâydựng một chuỗi tokenizer cho một chuỗi cụ thể str. Các ký tựtrong delim là ký tự để phân tách cách token.

▪ StringTokenizer(String str, String delim,

boolean returnDelims): Xây dựng một chuỗi tokenizercho một chuỗi cụ thể str. Nếu returnDelims = true thì mỗidelim được trả về là một chuỗi có chiều dài =1, ngược lại thìdelim sẽ được bỏ qua và xem như là một dấu phân cách giữacác token

28

Page 29: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringTokenizer

Ví dụString s = “Lập trình Java”;

StringTokenizer st = new StringTokenizer(s);

while (st.hasMoreTokens())

System.out.println(st.nextToken());

s = “Lập/trình/Java”;

st = new StringTokenizer(s,”/”);

while (st.hasMoreTokens())

System.out.println(st.nextToken());

29

Page 30: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp StringTokenizer

countTokens(): Tính số lượng token trong chuỗi còn lại khi sử

dụng delim mặc định

hasMoreTokens(): Kiểm tra xem có còn token trong chuỗi các

token hay không. (*)

nextToken(): Trả về token tiếp theo trong chuỗi các token (**)

hasMoreElements(): Tương tự như (*), tuy nhiên nó ở trong

Enumeration<Object>

nextElement(): Tương tự như (**), tuy nhiên giá trị trả về là Object

30

Page 31: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

31

Page 32: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

32

Page 33: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Khai báo và khởi tạo

Khai báo không khởi tạo kích thước và giá trị

KiểuDữLiệu[] TênMảng;

KiểuDữLiệu TênMảng[];

▪ Ví dụ:

▪ int[] a;

▪ int a[];

33

Page 34: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Khai báo và khởi tạo

Khai báo khởi tạo kích thước nhưng không có giá trị

ban đầu

KiểuDữLiệu[] TênMảng = new KiểuDữLiệu[SốPhầnTử];

KiểuDữLiệu TênMảng[] = new KiểuDữLiệu[SốPhầnTử];

▪ Ví dụ:

int[] a = new int[5];

int a[] = new int[5];

34

Page 35: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Khai báo và khởi tạo

Khai báo có khởi tạo kích thước và khởi tạo giá trị ban đầu:KiểuDữLiệu[] TênMảng = new KiểuDữLiệu[]

{giá trị 1, giá trị 2, giá trị 3, ...};

hoặcKiểuDữLiệu[] TênMảng = {giá trị 1, giá trị 2, giá trị 3,

...};

Ví dụ:

int[] a = new int[]{2,10,4,8,5};

int[] a = {2, 10, 4, 8, 5};

35

Page 36: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Thao tác cơ bản

Truy xuất giá trị 1 phần tử: TênMảng[vị _trí_i]

▪ Vị trí của 1 phần tử trong mảng bắt đầu từ 0

▪ Vị_trí_i có giá trị từ 0 đến (số phần tử - 1)

Lấy chiều dài của mảng: thuộc tính lengthTênMảng.length

5 8 1 0 3 2 7 6

0 1 2 3 4 5 6 7

Mảng a

Chỉ sốa[3] ?

a.length ?

36

Page 37: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Duyệt mảng

Duyệt và xử lý từng phần tử của mảng:for (int i = 0; i < TênMảng.length; i++)

{

// Xử lý trên phần tử TênMảng[i]

}

Ví dụ: duyệt và xuất mảngint[] a = {1,2,3,4,5};

for (int i = 0; i < a.length; i++)

System.out.println(a[i]);

37

Page 38: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Mảng String

Ví dụ: Duyệt và xuất mảng

String[] list = { “JAVA”, “C#”, “PHP”};

for (int i = 0; i < list.length; i++)

System.out.println(list[i]);

list

J A V A

C #

P H P

38

Page 39: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

// import java.util.Arrays;int array[] = { 2, 5, -2, 6, -3, 8, 0, 7, -9, 4 };int array1[] = { 2, 5, 6, -3, 8};// Sắp xếp mảng số nguyênArrays.sort(array);// So sánh hai mảng số nguyên array1 và arrayarray1.equals(array);// Gán giá trị cho các phần tử trong mảng array1Arrays.fill(array1, 10); // 10, 10, 10, 10, 10 // Sao chép mảng array1 sang array2int[] arr2 = Arrays.copyOf(arr1, 6); // 10 10 10 10 10 0

39

Page 40: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

40

Page 41: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Collections Framework bao gồm

Interfaces: Là các giao tiếp thể hiện tính chất của các

kiểu collection khác nhau như List, Set, Map.

Implementations: Là các lớp collection có sẵn được

cài đặt các collection interfaces.

Algorithms: Là các phương thức tĩnh để xử lý trên

collection, ví dụ: sắp xếp danh sách, tìm phần tử lớn

nhất...

41

Page 42: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

<<interface>>

Collection

<<interface>>

Set

<<interface>>

List

<<interface>>

Map

<<interface>>

SortedMap

<<interface>>

SortedSet

42

Page 43: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Cung cấp các thao tác chính trên collection như

thêm/xoá/tìm phần tử... Ví dụ:

boolean add(Object element);

boolean remove(Object element);

boolean contains(Object element);

int size();

boolean isEmpty();

Nếu lớp cài đặt Collection không muốn hỗ trợ các

thao tác làm thay đổi collection như add, remove,

clear... nó có thể tung ra ngoại lệ

UnsupportedOperationException.

43

Page 44: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

List kế thừa từ Collection, nó cung cấp thêm các

phương thức để xử lý collection kiểu danh sách

(Danh sách là một collection với các phần tử được

xếp theo chỉ số).

Một số phương thức của List

Object get(int index);

Object set(int index, Object o);

void add(int index, Object o);

Object remove(int index);

int indexOf(Object o);

int lastIndexOf(Object o);

44

Page 45: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Set kế thừa từ Collection, hỗ trợ các thao tác xử

lý trên collection kiểu tập hợp (Một tập hợp yêu

cầu các phần tử phải không được trùng lặp).

Set không có thêm phương thức riêng ngoài các

phương thức kế thừa từ Collection.

45

Page 46: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

SortedSet kế thừa từ Set, nó hỗ trợ thao tác trên tập hợp

các phần tử có thể so sánh được. Các đối tượng đưa

vào trong một SortedSet phải cài đặt giao tiếp

Comparable hoặc lớp cài đặt SortedSet phải nhận một

Comparator trên kiểu của đối tượng đó.

Một số phương thức của SortedSet:

Object first(); // lấy phần tử đầu tiên (nhỏ nhất)

Object last(); // lấy phần tử cuối cùng (lớn nhất)

SortedSet subSet(Object e1, Object e2); // lấy một tập các phần

tử nằm trong khoảng từ e1 tới e2.

46

Page 47: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Các phần tử trong collection có thể được duyệt

thông qua Iterator.

Các lớp cài đặt Collection cung cấp phương thức trả

về iterator trên các phần tử của chúng.

...

Collection c;

Iterator it = c.iterator();

47

Page 48: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Iterator cho phép duyệt tuần tự một collection.

Các phương thức của Iterator:

boolean hasNext();

Object next();

void remove();

Ví dụ:Iterator it = c.iterator();

while ( it.hasNext() ) {

Point p = (Point) it.next();

System.out.println( p.toString() );

}

48

Page 49: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Giao tiếp Map cung cấp các thao tác xử lý trên các

bảng ánh xạ (Bảng ánh xạ lưu các phần tử theo

khoá và không được có 2 khoá trùng nhau).

Một số phương thức của Map

Object put(Object key, Object value);

Object get(Object key);

Object remove(Object key);

boolean containsKey(Object key);

boolean containsValue(Object value);

...

49

Page 50: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Map cung cấp 3 cách view dữ liệu:

View các khoá:

Set keySet(); // Trả về các khoá

View các giá trị:

Collection values(); // Trả về các giá trị

View các cặp khoá-giá trị

Set entrySet(); // Trả về các cặp khoá-giá trị

Sau khi nhận được kết quả là một collection, ta

có thể dùng iterator để duyệt các phần tử của

nó.

50

Page 51: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Giao tiếp SortedMap kế thừa từ Map, nó cung cấp

thao tác trên các bảng ánh xạ với khoá có thể so

sánh được.

Giống như SortedSet, các đối tượng khoá đưa vào

trong SortedMap phải cài đặt giao tiếp Comparable

hoặc lớp cài đặt SortedMap phải nhận một

Comparator trên đối tượng khoá.

51

Page 52: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Các cài đặt trong Collections Framework chính là

các lớp collection có sẵn trong Java. Chúng cài đặt

các collection interface ở trên để thể hiện các cấu

trúc dữ liệu cụ thể. Ví dụ: mảng động, danh sách

liên kết, cây đỏ đen, bảng băm...

52

Page 53: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

ListLinkedList

ArrayList

Map LinkedHashMap

SortedMap

HashMap

TreeMap

Set

HashSet

LinkedHashSet

SortedSet TreeSet

53

Page 54: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

ArrayList: Mảng động, nếu các phần tử thêm vào

vượt quá kích cỡ mảng, mảng sẽ tự động tăng kích

cỡ.

LinkedList: Danh sách liên kết 2 chiều. Hỗ trợ thao

tác trên đầu và cuối danh sách.

HashSet: Bảng băm.

LinkedHashSet: Bảng băm kết hợp với linked list

nhằm đảm bảo thứ tự các phần tử.

TreeSet: Cây đỏ đen (red-black tree).

54

Page 55: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

HashMap: Bảng băm (cài đặt của Map).

LinkedHashMap: Bảng băm kết hợp với linked list

nhằm đảm bảo thứ tự các phần tử (cài đặt của

Map).

TreeMap: Cây đỏ đen (cài đặt của Map).

55

Page 56: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Kế thừa AbstractList và triển khai List Interface. Constructor: ArrayList( )

ArrayList(Collection c)

ArrayList(int capacity)

Phương thức: void add(int index, Object element)

boolean add(Object o)

boolean addAll(Collection c)

boolean addAll(int index, Collection c)

void clear()

56

Page 57: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức (tt):

boolean contains(Object o)

Object get(int index)

int indexOf(Object o)

int lastIndexOf(Object o)

Object remove(int index)

void removeRange(int fromIndex, int toIndex)

Object set(int index, Object element)

int size()

Object[] toArray()

57

Page 58: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

/*Tạo mảng*/ArrayList<String> obj = new ArrayList<String>();

/*Thêm phần tử*/obj.add("Mận");obj.add("Đào");obj.add("Cam”);obj.add("Ổi");

/*Thêm phần tử vào vị trí*/obj.add(0, "Quýt");

/*Xóa phần tử*/obj.remove("Đào");/*Xóa phần tử dựa vào vị trí*/obj.remove(1);

58

Page 59: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

59

Page 60: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Khái niệm lập trình hướng đối tượng

Là phương pháp thiết kế và phát triển phần mềm dựa

trên kiến trúc lớp (class) và đối tượng (object)

Mô hình hóa các đối tượng trong thế giới thực thành

các đối tượng trong chương trình

60

Page 61: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Đặc điểm của LT HĐT

Tập trung vào dữ liệu thay cho các hàm

Chương trình được chia thành các đối tượng độc lập.

Cấu trúc dữ liệu được thiết kế sao cho đặc tả được

các đối tượng.

Dữ liệu được che giấu, bao bọc.

Các đối tượng trao đổi với nhau thông qua các hàm

Chương trình được thiết kế theo hướng tiếp cận từ

dưới lên

61

Page 62: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Ưu điểm của LT HĐT

Loại bỏ được những dư thừa, trùng lặp trong việc xây

dựng ứng dụng.

Cài đặt đối tượng giúp xúc tiến việc sử dụng lại, trao

đổi giữa các đối tượng với nhau do đó sẽ giảm kích

thước, thời gian xử lý,… thời gian phát triển hệ thống,

tăng năng xuất lao động.

Dễ bảo trì, nâng cấp, giảm lỗi.

62

Page 63: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

• Biểu diễn 1 đối tượng trong thế giới thực

• Mỗi đối tượng được đặc trưng bởi các thuộc tính

và các hành vi riêng của nó

63

Page 64: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Đặc trưng – Tính trừu tượng Abstraction

Lớp (Class) là một khái niệm trừu tượng, đối tượng là

một thể hiện cụ thể của lớp

Ví dụ:

▪ Bản thiết kế của chiếc xe hơi là lớp

▪ Chiếc xe hơi được tạo ra từ bản thiết kế là đối tượng

Class

Object

64

Page 65: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Đặc trưng – Tính trừu tượng Abstraction

Từ những đối tượng giống nhau: có thể trừu tượng

hóa thành một lớp.

▪ Loại bỏ tính chất phức tạp của đối tượng bằng cách chỉ đưa ra

các thuộc tính và phương thức cần thiết của đối tượng trong

lập trình.

ClassObjects

Trừu tượng hóa

65

Page 66: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Đặc trưng – Tính đóng gói (Encapsulation)

Mỗi lớp được xây dựng để thực hiện một nhóm chức

năng đặc trưng của riêng lớp đó

▪ Tất cả mọi thao tác truy xuất vào thành phần dữ liệu từ đối

tượng này qua đối tượng khác phải được thực hiện bởi các

phương thức (method) của chính đối tượng chứa dữ liệu.

▪ Tính đóng gói cho phép dấu thông tin của đối tượng bằng

cách kết hợp thông tin và các phương thức liên quan đến

thông tin trong đối tượng.

66

Page 67: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Đặc trưng – Tính đóng gói (Encapsulation)

ngungXe()

chayToi()

chayLui()

kiemTraXang()mucXang

ngungXe()

chayToi()

chayLui()

Ồ, tôi lái

được!

67

Page 68: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Đặc trưng – Tính kế thừa (Inheritance)

Cho phép xây dựng một lớp mới dựa trên các định

nghĩa của một lớp đã có.

▪ Lớp đã có gọi là lớp Cha, lớp mới phát sinh gọi là lớp Con

▪ Lớp con kế thừa tất cả các thành phần của lớp Cha, có thể mở

rộng các thành phần kế thừa và bổ sung thêm các thành phần

mới.

68

Page 69: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Tạo lớp

Một lớp dùng định nghĩa một kiểu dữ liệu mới

Cú pháp khai báo lớp

class <TênLớp>

{

...

}

69

Page 70: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Tạo lớp Một lớp dùng định nghĩa một kiểu dữ liệu mới

Cú pháp khai báo lớp:

class <TênLớp>

{

...

}

Ví dụ: khai báo lớp tam giácclass TamGiac

{

}

70

Page 71: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Biến thực thể Mô tả trạng thái của đối tượng

Mỗi đối tượng đều có 1 bản sao của biến thực thể

TamGiac

a

b

c

t1

a=2;b=3;c=4

a=1;b=3;c=4

a=2;b=4;c=471

Page 72: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Biến thực thể

Ví dụ: khai báo biến thực thể mô tả thông tin lớp

TamGiac

class TamGiac{

// a, b, c là 3 biến thực thể mô tả thông tin 1

//đối tượng thuộc lớp tam giác

private double a,b,c;

}

72

Page 73: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Bổ từ truy xuất

public

protected

private

Không có

chỉ định từ

truy xuất

(default)

interface

class

Thành viên của

interface/class

Truy xuất tự do

package/ lớp con

Không thể truy xuất

từ bên ngoài

package

Cấp độ truy xuất Áp dụng choTừ khóa

73

Page 74: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Bổ từ truy xuấtChỉ định từ

truy xuất

Các thành viên sẽ thấy trong

Class Package Lớp con

(trong package khác)

Ngoài

public yes yes yes yes

protected yes yes yes no

private yes no no no

Không có

chỉ định từ

truy xuất

yes yes no no

74

Page 75: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Các lớp đều mặc định kế thừa lớp Object

Không phải khai báo kế thừa lớp Object khi khai

báo một lớp

75

Page 76: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức khởi tạo (Constructor) Là phương thức (method) đặc biệt dùng để khởi tạo

các biến thành viên của lớp

Tên của phương thức trùng với tên lớp và không có kiểu trả về

Được gọi tự động khi đối tượng được tạo ra

Có hai loại phương thức:▪ Phương thức mặc định

▪ Phương thức có tham số

76

Page 77: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức khởi tạo Ví dụ: Khai báo hàm dựng có tham số cho lớp tam giác vừa tạo

class TamGiac{

private double a,b,c;

public TamGiac(){

//xử lý khởi tạo giá trị mặc định

}

public TamGiac(int _a,int _b,int_c){

a = _a; b = _b; c = _c;

}

}

77

Page 78: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức khởi tạo Đối tượng (ĐT) được khai báo tượng trưng cho lớp

Quá trình tạo ĐT cho lớp gồm hai bước:▪ Đầu tiên, một biến có kiểu của lớp được khai báo, biến này

chưa được định nghĩa là một ĐT. Nó chỉ là biến tham chiếu đến ĐT.

▪ Tiếp theo, một bản sao chép ĐT của lớp trên bộ nhớ được tạo ra và được gán cho biến. Điều này được thực hiện bằng toán tử new

Toán tử new cấp phát bộ nhớ động cho ĐT và trả về tham chiếu tới nó

Tất cả các ĐT của lớp phải được cấp phát động

78

Page 79: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức khởi tạo Ví dụ: Khai báo đối tượng có kiểu TamGiac

TamGiac t;

t = new TamGiac();

TamGiac t1;

t1 = new TamGiac(2,3,4);

t

TamGiac t

a=0 b=0 c=0

t1

TamGiac t1

a=2 b=3 C=4

79

Page 80: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức khởi tạo Ví dụ: Truy xuất các thành phần của đối tượng

TamGiac t;

t = new TamGiac();

t.setA() = 2;

t.setB() = 3;

t.setC() = 4;

System.out.printf(“Tam giac (%d, %d, %d)”,

t.getA(), t.getB(), t.getC());

80

Page 81: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức xử lý

Một phương thức được định nghĩa để cài đặt cho một

hành động của đối tượng

Cú pháp:

BổTừTruyXuất KiểuDữLiệu

TênPhươngThức(DanhSáchThamSố){

//xử lý của phương thức

}

TamGiac

abc

tinhChuVi()tinhDienTich()

Phương thức

81

Page 82: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức xử lý Ví dụ: Khai báo phương thức tính chu vi cho lớp tam giác

class TamGiac{

// biến thực thể

private double a, b, c;

// hàm dựng mặc định

public TamGiac() {}

// phương thức tính chu vi

public double tinhChuVi(){

return a + b + c;

}

}

82

Page 83: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức xử lý

Ví dụ: tính chu vi tam giác

TamGiac t = new TamGiac();

t.setA() = 2;

t.setB() = 3;

t.setC() = 4;

System.out.printf(“Tam giac (%f, %f, %f)”,

t.getA(), t.getB(), t.getC());

System.out.printf(“Chu vi tam giac: %f”,

t.tinhChuVi());

83

Page 84: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Truyền tham trị Được sử dụng cho các kiểu dữ liệu cơ bản, mọi thay

đổi diễn ra bên trong phương thức không ảnh hưởng đến giá trị truyền vào

Truyền tham chiếu Thay đổi bên trong phương thức sẽ làm thay đối giá

trị của tham số truyền vào

Tham số của phương thức có kiểu dữ liệu là tham chiếu sẽ được truyền theo kiểu tham trị chứ không phải kiểu tham chiếu. Ví dụ: khi phương thức kết thúc, tham chiếu này vẫn trỏ đến cùng đối tượng khi truyền vào

84

Page 85: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Truyền tham số cho phương thức Ví dụ: Truyền tham trị

public static void Swap(int a,int b){

int temp = a; a = b; b = temp;

}

public static void main(String args[]){

int a = 1, b = 2;

System.out.printf(“a = %d, b = %d”, a, b);

Swap(a,b);

System.out.printf(“a = %d, b = %d”, a, b);

}

a=?

b=?

85

Page 86: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Truyền tham số cho phương thức Ví dụ: Truyền tham chiếu

public static void Swap(MyClass a,MyClass b){

MyClass temp = a; a = b; b = temp;

}

public static void main(String args[]){

MyClass a = new MyClass(1);

MyClass b = new MyClass(2);

System.out.printf(“a = %d, b = %d”, a.x, b.x);

Swap(a,b);

System.out.printf(“a = %d, b = %d”, a.x, b.x);

}

a=?

b=?

class MyClass{

public int x;

public MyClass(int _x){

x=_x;

}

}

86

Page 87: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Truyền tham số cho phương thức Ví dụ: truyền tham chiếu

public static void Swap(MyClass a,MyClass b){

MyClass temp = new MyClass(a);

a.x = b.x; b.x = temp.x;

}

public static void main(String args[]){

MyClass a = new MyClass(1);

MyClass b = new MyClass(2);

System.out.printf(“a = %d, b = %d”, a.x, b.x);

Swap(a,b);

System.out.printf(“a = %d, b = %d”, a.x, b.x);

}

a=?

b=?

class MyClass{

public int x;

public MyClass(int _x){

x=_x;

}

}

87

Page 88: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức có tham số thay đổi

Tham số thay đổi cho phép gọi phương thức với số

tham số khác nhau.

Cú pháp

KiểuDữLiệu TênPhươngThức

(KiểuDữLiệu ... TênThamSố)

{

// các lệnh

}

88

Page 89: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Phương thức có tham số thay đổi Ví dụ:

public static void Test(int … a){

for (int i : a)

System.out.println(i);

}

public static void main(String args[]){

Test(1, 2, 3, 4, 5, 6);

Test(10, 20);

}

89

Page 90: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Các lớp trong Java tồn tại trong một hệ thống

thứ bậc, gọi là cây thừa kế

Các lớp ở bậc trên một lớp đã cho trong một hệ

thống thứ bậc là lớp cha (superclass) của lớp đó

Lớp cụ thể là một lớp con (subclass) của tất cả

các lớp bậc cao hơn

90

Page 91: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Lớp con có thể truy cập các biến và phương thức công

khai (public) của lớp cha

Lớp con có thể truy cập các biến và phương thức được

bảo vệ (protected) của lớp cha

Các hàm tạo là đặc biệt, chúng không được thừa kế

Lớp con không thể truy cập thành viên private của lớp

cha

Sử dụng phương thức để truy cập thành viên private của

lớp

91

Page 92: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Truy cập đến các thành viên của lớp cha bằng

cách sử dụng từ khóa super

Có thể sử dụng super để truy cập đến hàm tạo

của lớp cha

92

Page 93: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Ngăn cản ghi đè hàm

Ngăn cản thừa kế

93

Page 94: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Java package là một nhóm các lớp và giao diện có liên hệ

với nhau được tổ chức thành một đơn vị để quản lý.

Package có thể do người dùng tạo ra hoặc do Java tạo sẵn.

Lệnh package, nếu sử dụng, phải đặt ở đầu chương trình

Lệnh import được dùng để import một hoặc nhiều lớp từ

package vào chương trình

Chỉ định từ truy xuất điều khiển việc truy xuất các lớp và sự

nhìn thấy các thành viên của lớp

Chỉ định từ truy xuất cho biến và phương thức là các từ khóa

được dùng để xác định các biến và phương thức cần được

khai báo để điều khiển việc truy xuất từ người dùng

94

Page 95: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Package được định nghĩa trước

import java.util.*;

import java.io.*;

class A

{ …………

}

Bạn có thể xem nội

dung của các package

Bằng WINZAR/ WINZIP

95

Page 96: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Các class mà dự định sẽ được sử dụng bên

ngoài package sẽ được khai báo là public.

Các package khác nhau có thể có các class

trùng tên với nhau.

Nếu các package khác nhau mà có các class có

tên trùng nhau thì khi sử dụng bắt buộc phải

import đầy đủ tên package và tên class.

96

Page 97: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

97

Có 4 kiểu truy cập

vào package

private protected public default

Page 98: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

98

Từ khóaTrong cùng

class

Trong cùng

package

Trong sub-

package

Package

khác

private Có Không Không Không

default Có Có Không Không

protected Có Có Có Không

public Có Có Có Có

Page 99: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Truy cập các thành phần trong package

99

private: Chỉ có thể

được truy cập bởi

chính class đó.

default: Được truy cập

bởi các class

cùng package.

protected: Được truy

cập bởi các class cùng

trong package và các

class là sub-class

của class này.

public: Được truy cập

bởi tất cả các class ở

cùng package hay

khác package.

Page 100: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Package được định nghĩa trước

● Tạo packagepackage myPackage;

class A

{ …….

}

● Sử dụng packageimport myPackage.A;

class B

{ …….

void method3()

{ A obj = new A();

……..

}

}

100

Page 101: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Cú pháp:

import tên_package.tên_class

Ví dụ:

import mypack.MyClass;

import mypack.*;

Ký hiệu *: là import tất cả các class trong

package mypack.

101

Page 102: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

102

Tên Package Mô tả

java.lang

Chứa các class như Integer, String,

System… và được tự động import vào mỗi

chương trình Java.

java.utilCác các Java collections như List, Set, Map

java.ioChứa các class liên quan đến việc nhập,

xuất dữ liệu như File, Reader, Writer…

java.awt và

java.swing

Chứa các class liên quan đến việc trình bày

giao diện đồ họa và xử lý sự kiện.

. . .

Page 103: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

103

Page 104: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Java cung cấp 5 từ khoá sau để xử lý các ngoại lệ:

try

catch

throw

throws

finally

104

Page 105: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

try{

// đoạn mã có khả năng gây ra ngoại lệ

}

catch(Exception e1) {

// Xử lý

}

catch(Exception e2) {

// Xử lý

}

...

catch(Exception eN) {

// Xử lý

}

finally {

// luôn được thực hiện cho dù ngoại lệ có xảy ra hay không.

}

105

Page 106: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

NullPointerException

ArrayIndexOfBoundException

ArthmeticException

FileNotFoundException

EOFException

IllegalArgumentException

106

Page 107: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

107

• Class Throwable xử lý lỗi và ngoại lệ (Error, Exception).

• Tất cả các class dưới đây đều nằm trong gói java.lang, ngoại trừ class IOException là nằm trong gói java.io

ClassNotFoundException

CloneNotSupportedException

IllegalAccessException

InstantialtionException

IOException *

RuntimeException

LinkageError

ThreadDeath

VitualMachineError

ArithmeticException

IllegalArgumentException

IndexOutOfBoundsException

NullPointerException

More class …

Exception

Error

Throwable

Page 108: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

108

Ngoại lệ ‘unchecked’:

• Là các ngoại lệ không cần phải ‘catch’ khi viết

• Là các class Error, RuntimeException và các

lớp con của chúng

Ngoại lệ ‘checked’:

• Là các ngoại lệ phải được ‘catch’ khi viết mã

• Là các class còn lại

Page 109: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

109

Một số ngoại lệ ‘checked’:

• ClassNotFoundException

• IOException

• FileNotFoundException

• EOFException

Một số ngoại lệ ‘unchecked’

• ArithmeticException

• IllegalArgumentException

• IndexOutOfBoundException

• NullPointerException

• InputMismatchException

Page 110: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Từ khóa throws được sử dụng trong method

dùng để đề xuất các ngoại lệ có thể xảy ra trong

method đó. Có những method sử dụng một số

lệnh mà các lệnh đó có thể xảy ra ngoại lệ

‘checked’ nên chúng ta bắt buộc phải xử lý

ngoại lệ đó. Ví dụ khi xử lý các lệnh thao tác với

file, phải xử lý ngoại lệ ‘checked’

FileNotFoundException. Tất cả các ngoại lệ

được khai báo bởi throws đều phải được xử lý,

nếu không có đủ sẽ bị thông báo lỗi.

110

Page 111: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

111

Page 112: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

112

Page 113: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

Dùng cách throws trong phương thức main

113

Page 114: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

bằng cách kế thừa class Exception của Java:

114

Page 115: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

115

Page 116: Ths. Lương Trần Hy Hiến Khoa Công Nghệ Thông Tin Trường ... · Quy ước đặt tên biến và hằng số Tên biến có thể gồm các ký tự chữ, ký tự

116