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