Bài giảng Lập trình Java - Nguyễn Việt Hà
Nội dung
Lịch sửcủa Java
Cácđặctrưng cơbản
Java applications và Java applets
Tạoứng dụng Java đơn giản
Tóm tắt nội dung Bài giảng Lập trình Java - Nguyễn Việt Hà, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
háp (tt)
CompositeGraphic là
một danh sách nên nó có add(), remove() và count()
Graphic nên nó còn có rotate(), move() và setColor()
Các thao tác đó đối với một đối tượng hợp
thành sử dụng một vòng lặp ‘for all’
Thao tác thực hiện ngay cả với trường hợp
thành phần của Composite lại là một Composite
khác - cấu trúc dữ liệu dạng cây
Có khả năng giữ thứ tự của các thành phần
Nguyên lý thiết kế… 37Nguyễn Việt Hà
Giải pháp (tt)
Ví dụ tạo một đối tượng hợp thành:
CompositeGraphic cg;
cg = new CompositeGraphic();
cg.add(new Line(0,0,100,100));
cg.add(new Circle(50,50,100));
cg.rotate(90);
Nguyên lý thiết kế… 38Nguyễn Việt Hà
Sơ đồ lớp
Kế thừa đơn
Lớp cơ sở (root) chứa phương thức
add(), remove()
Nguyên lý thiết kế… 39Nguyễn Việt Hà
Ứng dụng
Được dùng trong hầu hết các hệ thống
HĐT
Chương trình soạn thảo
Giao diện đồ họa
Cây phân tích cho biên dịch (một khối là
một tập các lệnh/lời gọi hàm/các khối
khác)
Nguyên lý thiết kế… 40Nguyễn Việt Hà
Proxy Pattern
Các đối tượng có kích thước lớn, chỉ nên nạp
vào bộ nhớ khi thực sự cần thiết; hay các đối
tượng ở vùng địa chỉ khác (remote objects)
Ví dụ: Xây dựng một trình soạn thảo văn bản
có nhúng các đối tượng Graphic
Vấn đề đặt ra: Việc nạp các đối tượng Graphic
phức tạp thường rất tốn kém, trong khi văn bản
cần được mở nhanh
Giải pháp: sử dụng ImageProxy
Nguyên lý thiết kế… 41Nguyễn Việt Hà
Sơ đồ lớp
Nguyên lý thiết kế… 42Nguyễn Việt Hà
Áp dụng
Proxy được sử dụng khi nào cần thiết phải có
một tham chiếu thông minh đến một đối tượng
hơn là chỉ sử dụng một con trỏ đơn giản
cung cấp đại diện cho một đối tượng ở một không
gian địa chỉ khác (remote proxy).
trì hoãn việc tạo ra các đối tượng phức tạp (virtual
proxy).
quản lý truy cập đến đối tượng có nhiều quyền truy
cập khác nhau (protection proxy).
smart reference
Nguyên lý thiết kế… 43Nguyễn Việt Hà
Strategy
Chương trình cần chuyển đổi động giữa
các thuật toán
Ví dụ, chương trình soạn thảo sử dụng
vài thuật toán hiển thị với các hiệu
ứng/lợi ích khác nhau
Nguyên lý thiết kế… 44Nguyễn Việt Hà
Yêu cầu
Thuật toán phức tạp và sẽ không có lợi khi
cài đặt chúng trực tiếp trong lớp sử dụng
chúng
ví dụ: việc cài thuật toán hiển thị vào lớp
Document là không thích hợp
Cần thay đổi động giữa các thuật toán
Dễ dàng thêm thuật toán mới
Nguyên lý thiết kế… 45Nguyễn Việt Hà
Giải pháp
Định nghĩa lớp trừu tượng để biểu diễn
thuật toán:
class Renderer {
abstract void render(Document d);
}
Mỗi thuật toán là một lớp dẫn xuất
FastRenderer, TexRenderer, …
Nguyên lý thiết kế… 46Nguyễn Việt Hà
Giải pháp (tt)
Đối tượng "document" tự chọn thuật toán vẽ:
class Document {
render() {
renderer.render(this);
}
setFastRendering() {
renderer = new FastRenderer();
}
private Renderer renderer;
}
Nguyên lý thiết kế… 47Nguyễn Việt Hà
Sơ đồ lớp
Nguyên lý thiết kế… 48Nguyễn Việt Hà
Ứng dụng
Chương trình vẽ/soạn thảo
Tối ưu biên dịch
Chọn lựa các thuật toán heuristic khác
nhau (trò chơi...)
Lựa chọn các phương thức quản lý bộ
nhớ khác nhau
Một số lớp cơ sở
Một số lớp cơ sở 2Nguyễn Việt Hà
Nội dung
Các lớp dữ liệu nguyên thủy
Xâu ký tự
Lớp Math
Mảng
Các lớp Container
Một số lớp cơ sở 3Nguyễn Việt Hà
Tài liệu tham khảo
Bruce Eckel, Thinking in Java, chapter 11
Deitel, Java – How to program, chapter 7,
11, 20
Đoàn Văn Ban, Lập trình hướng đối tượng
với Java, NXB Khoa học kỹ thuật, chương
6.
Một số lớp cơ sở 4Nguyễn Việt Hà
Một số lớp cơ bản
Object
Boolean Character Void Number Math String StringBuffer
IntegerShortByte Long Float Double
...
Một số lớp cơ sở 5Nguyễn Việt Hà
Lớp Object
Class getClass(): trả lại tên lớp của
đối tượng hiện thời.
boolean equals(Object): so sánh đối
tượng, thường được định nghĩa lại.
String toString(): trả lại biểu diễn
văn bản của đối tượng, thường được định
nghĩa lại.
Một số lớp cơ sở 6Nguyễn Việt Hà
Person p = new Person(”John”);
Class c = p.getClass();
System.out.println(c);
----
class Person
Một số lớp cơ sở 7Nguyễn Việt Hà
Các lớp dữ liệu nguyên thủy
Các phương thức tiện ích
valueOf(String s): trả đối tượng thuộc
kiểu tương ứng
typeValue(): trả giá trị nguyên thủy tương
ứng
static parseType(String s): trả giá trị
nguyên thủy tương ứng
Hằng số
Type.MAX_VALUE, Type.MIN_VALUE
Một số lớp cơ sở 8Nguyễn Việt Hà
Lớp Character
Các phương thức
static boolean isUppercase(char ch)
static boolean isLowercase(char ch)
static boolean isDigit(char ch)
static boolean isLetter(char ch)
static boolean isLetterOrDigit(char ch)
static char toUpperCase(char ch)
static char toLowerCase(char ch)
Một số lớp cơ sở 9Nguyễn Việt Hà
Lớp String
Xâu ký tự không thay đổi được nội dung
Khởi tạo
String(String),
String(StringBuffer)
String(byte[]), String(char[])
Phương thức
int length(): kích thước của xâu
char charAt(int index): ký tự ở vị trí
index
Một số lớp cơ sở 10Nguyễn Việt Hà
Lớp String
So sánh
boolean equals(String)
boolean equalsIgnoreCase(String)
boolean startWith(String)
boolean endWith(String)
int compareTo(String)
Một số lớp cơ sở 11Nguyễn Việt Hà
Lớp String
Chuyển đổi
String toUpperCase()
String toLowerCase()
Ghép xâu
String concat(String)
toán tử “+”
Một số lớp cơ sở 12Nguyễn Việt Hà
Lớp String
Tìm kiếm
int indexOf(char), int
indexOf(char ch, int from)
int indexOf(String), int
indexOf(String s, int from)
int lastIndexOf(char),
lastIndexOf(char, int)
lastIndexOf(String),
lastIndexOf(String, int)
Một số lớp cơ sở 13Nguyễn Việt Hà
Lớp String
Thay thế
String replace(char ch, char
new_ch)
Trích xâu
String trim(): loại bỏ ký tự trắng
String substring(int startIndex)
String substring(int startIdx, int
endIdx)
Một số lớp cơ sở 14Nguyễn Việt Hà
Lớp StringBuffer
Xâu ký tự thay đổi được nội dung
Khởi tạo
StringBuffer(String)
StringBuffer(int length)
StringBuffer(): đặt kích thước mặc định 16
Các phương thức
int length(), void setLength()
char charAt(int index)
void setCharAt(int index, char ch)
String toString()
Một số lớp cơ sở 15Nguyễn Việt Hà
Lớp StringBuffer
Thêm, xóa
append(String), append(type)
insert(int offset, String s),
insert(int offset, char[] chs),
insert(int offset, type t)
delete(int start, int end): xóa xâu
con
delete(int index): xóa một ký tự
reverse(): đảo ngược
Một số lớp cơ sở 16Nguyễn Việt Hà
Lớp Math
Hằng số
Math.E
Math.PI
Các phương thức static
type abs(type)
double ceil(double), double floor(double)
int round(float), long round(double)
type max(type, type), type min(type, type)
double random(): sinh số ngẫu nhiên trong đoạn
[0.0,1.0]
Một số lớp cơ sở 17Nguyễn Việt Hà
Lớp Math
Lũy thừa
double pow(double, double)
double exp(double)
double log(double)
double sqrt(double)
Lượng giác
double sin(double)
double cos(double)
double tan(double)
Một số lớp cơ sở 18Nguyễn Việt Hà
Mảng
Mảng là đối tượng
chứa một tập các đối tượng khác
cần tạo ra trước khi sử dụng (new)
Ví dụ:
int a[];
a = new int[10];
for (int i=0; i<a.length; i++) a[i] = i*i;
int b[] = {2, 3, 5, 7};
a = b;
int m, n[];
double[] arr1, arr2;
Một số lớp cơ sở 19Nguyễn Việt Hà
Truyền tham số và nhận giá trị trả lại
int[] myCopy(int[] a) {
int b[] = new int[a.length];
for (i=0; i<a.length; i++)
b[i] = a[i];
return b;
}
...
int a[] = {0, 1, 1, 2, 3, 5, 8};
int b[] = myCopy(a);
Một số lớp cơ sở 20Nguyễn Việt Hà
Mảng nhiều chiều
int a[][];
a = new int[10][20];
a[2][3] = 10;
for (int i=0; i<a[0].length; i++)
a[0][i] = i;
int b[][] = { {1 , 2}, {3, 4} };
int c[][] = new int[2][];
c[0] = new int[5];
c[1] = new int[10];
Một số lớp cơ sở 21Nguyễn Việt Hà
Copy mảng
System.arraycopy(src, s_off,
des, d_off, len)
src: mảng nguồn, s_off: offset của mảng
nguồn
des: mảng đích, d_off: offset của mảng đích
len: số phần tử cần copy
Copy nội dung của dữ liệu nguyên thủy,
copy tham chiếu đối với đối tượng
Một số lớp cơ sở 22Nguyễn Việt Hà
Lớp Arrays
Nằm trong gói java.util
Cung cấp 4 phương thức static để làm
việc với mảng
fill(): khởi tạo các phần tử của mảng với
một giá trị như nhau
sort(): xắp xếp mảng
equals(): so sánh hai mảng
binarySearch(): tìm kiếm nhị phân trên
mảng đã sắp xếp
Một số lớp cơ sở 23Nguyễn Việt Hà
So sánh mảng equals()
So sánh mảng dữ liệu nguyên thủy
Gọi phương thức equals() để so sánh mảng
đối tượng
----
int a[] = { 1, 3 , 2 , 4 };
int b[] = new int[a.length];
System.arraycopy(a,0,b,0,a.length);
System.out.println(Arrays.equals(a,b));
Một số lớp cơ sở 24Nguyễn Việt Hà
Sắp xếp mảng sort()
Làm việc với các mảng dữ liệu nguyên
thủy
Làm việc với các lớp đối tượng có cài đặt
giao diện Comparable
phương thức compareTo()
Một số lớp cơ sở 25Nguyễn Việt Hà
Các lớp tuyển tập (Container)
Tree Map
HashSet >
Sorted Set
Array List Vector LinkedList
>
Map
>
Sorted Map
>
List
HashMap
HashTable
>
Set
Tree Set
>
Collection
Một số lớp cơ sở 26Nguyễn Việt Hà
Iterator
Mẫu dùng để duyệt các phần tử của một
tập hợp
Là một interface trong Java:
hasNext()
next()
remove()
Các lớp Collection cài đặt Iterator
Một số lớp cơ sở 27Nguyễn Việt Hà
import java.util.*;
public class TestList {
static public void main(String args[]) {
Collection list = new LinkedList();
list.add(3);
list.add(2);
list.add(1);
list.add(0);
list.add(“happy new year!");
Iterator i = list.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
Một số lớp cơ sở 28Nguyễn Việt Hà
import java.util.*;
public class Test {
static public void main(String args[]) {
List list = new LinkedList();
list.add(3);
list.add(2);
list.add(1);
list.add(0);
list.add("go!");
for (int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
}
}
File đính kèm:
Bài giảng Lập trình Java - Nguyễn Việt Hà.pdf

