Ky thuat lap trinh Java

239 4 0
Ky thuat lap trinh Java

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

• Cải tạo hoặc làm trống bộ nhớ đã định vị cho các đối tượng mà các đối tượng này không sử dụng trong thời gian dài • Sự dọn rác thực thi như là một tuyến. riêng biệt có quyền[r]

(1)(2)

Chương 1

(3)

Giới thiệu

(4)

Các đặc trưng Java

 Đơn giản

 Hướng đối tượng  Độc lập phần cứng  Mạnh

(5)(6)(7)

Các loại chương trình Java

Applets

Ứng dụng độc lập (console Application) Ứng dụng giao diện (GUI Application) Servlet

(8)

Máy ảo Java

• Là phần mềm dựa sở máy tính ảo • Là tập hợp lệnh logic để xác định hoạt

động máy tính

• Được xem hệ điều hành thu nhỏ • Nó thiết lập lớp trừu tượng cho:

– Phần cứng bên – Hệ điều hành

(9)

Q trình dịch chương trình Java

• Trình biên dịch chuyển mã nguồn thành tập lệnh không phụ thuộc vào phần cứng cụ thể

• Trình thông dịch máy chuyển tập lệnh thành chương trình thực thi

• Máy ảo tạo môi trường để thực thi lệnh cách:

(10)

Trình dịch Java

Java Development Kit

• Java 1.0 - Sử dụng lần đầu vào năm 1995

(11)

Bộ công cụ JDK

• Trình biên dịch, 'javac'

javac [options] sourcecodename.java

• Trình thơng dịch, 'java'

java [options] classname

• Trình dịch ngược, 'javap'

javap [options] classname

• Cơng cụ sinh tài liệu, 'javadoc'

(12)

• Chương trình tìm lỗi - Debug, 'jdb‘

jdb [options] sourcecodename.java

OR

jdb -host -password [options]

sourcecodename.java

• Chương trình xem Applet , 'appletviewer‘

appletviewer [options]

(13)

Các gói chuẩn Java

java.lang

java.applet

java.awtjava.io

java.util

java.net

java.awt.event

java.rmi

java.security

(14)

Các đặc trưng mớI Java2

Swing

Kéo thả Java 2D API

Âm

(15)

Chương 2

(16)

Cấu trúc

chương trình Java

• Xác lập thơng tin mơi trường • Khai báo lớp đối tượng (Class) • Các thành phần (Tokens):

– Định danh

– Từ khóa / từ dự phòng – Ký tự phân cách

(17)

Ví dụ chương trình Java mẫu

// This is a simple program called “Ex1.java”

class Ex1 {

public static void main(String args[]) {

System.out.println(“My first program in Java”); }

(18)

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

\jdk\bin>javac Ex1.java \jdk\bin>java Ex1

• Kết quả:

(19)

Truyền đối số dòng lệnh class Pass

{

public static void main(String parameters[]) {

System.out.println("This is what the main method received");

System.out.println(parameters[0]); System.out.println(parameters[1]); System.out.println(parameters[2]); }

(20)(21)

Các phần tử củangơn ngữ Java

• Lớp phương thức (Classes & Methods)

• Kiểu liệu • Biến số

• Tốn tử

(22)

Lớp Java • Cú pháp khai báo lớp (Class)

class Classname {

var_datatype variablename; :

met_datatype methodname(parameter_list) :

(23)(24)

Các lớp lồng (Nested Classes)

Việc định nghĩa lớp bên lớp

khác gọi “xếp lồng” (Nesting)

Các kiểu xếp lồng:

Tĩnh (Static)

(25)

Kiểu liệu

 Kiểu liệu sở (Primitive Data Types)

(26)

Kiểu liệu sở

• byte • char

• boolean • short

(27)

Kiểu liệu tham chiếu • Mảng (Array)

(28)

Ép kiểu (Type Casting)

• Kiểu liệu chuyển đổi sang một kiểu liệu khác

• Ví dụ

(29)

Biến số

• Khai báo biến số gồm thành phần:

– Kiểu liệu biến số – Tên biến

– Giá trị ban đầu biến (không bắt buộc)

• Cú pháp

(30)(31)

Khai báo mảng • Ba cách để khai báo mảng:

datatype identifier [ ];

datatype identifier [ ] = new datatype[size];

(32)

Phương thức

(Methods in Classes)

• Phương thức định nghĩa một hành động tác vụ thật của đối tượng

• Cú pháp

access_specifier modifier datatype method_name(parameter_list) {

(33)

Ví dụ sử dụng phương thức class Temp {

static int x = 10; // variable

public static void show( ) { // method

System.out.println(x); }

public static void main(String args[ ]) {

Temp t = new Temp( ); // object

t.show( ); // method call

Temp t1 = new Temp( ); // object

t1.x = 20;

t1.show( );

(34)

Access specifiers

• public • private

(35)

Method Modifiers

• static

• abstract • final

• native

(36)

Những phương thức nạp chồng :

(Methods Overloading)

• Những phương thức nạp chồng :

– Cùng lớp – Có tên

– Khác danh sách tham số

(37)

Ghi đè phương thức (Methods Overriding)

• Những phương thức ghi đè:

– Có mặt lớp cha (superclass) lớp kế thừa (subclass)

– Được định nghĩa lại lớp kế thừa (subclass)

(38)

Phương thức khởi tạo (Class Constructors)

• Là phương thức đặc biệt dùng để khởi tạo giá trị cho biến thành viên lớp đối tượng

• Có tên với tên lớp khơng có giá trị trả

• Được gọi đối tượng tạo • Có loại:

(39)

Phương thức khởi tạo lớp dẫn xuất (Derived class constructors)

• Có tên với lớp dẫn xuất (subclass) • Mệnh đề gọi constructor lớp cha

(40)

Các tốn tử • Các loại tốn tử:

– Toán tử số học (Arithmetic operators) – Toán tử dạng Bit (Bitwise operators) – Toán tử so sánh (Relational operators) – Toán tử logic (Logical operators)

(41)

Toán tử số học

Arithmetic Operators

+ Addition (Phép cộng) - Subtraction (Phép trừ)

* Multiplication (Phép nhân) / Division (Phép chia)

(42)

+= Phép cộng gán

-= Phép trừ gán

*= Phép nhân gán

/= Phép chia gán

(43)

Toán tử Bit

(Bitwise Operators)

~ Phủ định (NOT)

& Và (AND)

| Hoặc (OR)

^ Exclusive OR

(44)

Toán tử so sánh

(Relational Operators)

== So sánh

!= So sánh khác

< Nhỏ hơn

> Lớn hơn

<= Nhỏ bằng

(45)

Toán tử Logic

(Logical Operators )

&& Logical AND

|| Logical OR

(46)

Toán tử điều kiện

(Conditional Operator)

• Cú pháp

Biểu thức ? Biểu thức : Biểu thức 3;

Biểu thức

Điều kiện kiểu Boolean trả giá trị True False • Biểu thức

Trả giá trị kết mệnh đề True • Biểu thức

(47)

Toán tử gán

(Assignment Operator)

= Assignment (Phép gán)

Giá trị gán cho nhiều biến số • Ví dụ

(48)

Thứ tự ưu tiên toán tử

 Thứ tự tốn tử thay đổi cách sử dụng dấu ngoặc đơn mệnh đề

Thứ tự Toán tử

1 trong ngoặc tính trước

2 Các toán tử đơn

+,-,++, Các toán tử số học và các toán tử dịch *,/,+,-,<<,>>

(49)

Các kí tự định dạng xuất liệu (Escape Sequences)

Escape

Sequence Mô tả

\n Xuống dòng

\r Chuyển trỏ đến đầu dòng hành

\t Chuyển trỏ đến vị trí dừng Tab (ký tự Tab)

\\ In dấu \

(50)

Các lệnh điều khiển

• Điều khiển rẻ nhánh: – Mệnh đề if-else

– Mệnh đề switch-case • Vòng lặp (Loops):

– Vòng lặp while

(51)

Lệnh if-else

• Cú pháp

if (condition) {

action1 statements; }

else {

(52)

Lệnh switch-case

• Cú pháp

switch (expression) {

case 'value1': action1 statement(s); break;

case 'value2': action2 statement(s); break;

: :

case 'valueN': actionN statement(s); break;

(53)

Lệnh lặp while

 Cú pháp

while(condition) {

action statements; :

(54)

Lệnh lặp do-while

• Cú pháp

do {

action statements; :

:

(55)

Vòng lặp for

• Cú pháp

for(initialization statements; condition; increment statements)

{

action statements; :

(56)(57)

Chương 3

Gói & Interface

(58)

Giới thiệu

•Những thành phần chương trình Java:

– Gói (Packages)

– Giao diện (Interfaces)

•Những phần chương trình Java: – Lệnh khai báo gói(package )

– Lệnh định gói dùng (Lệnh import)

– Khai báo lớp public (một file java chứa lớp public class)

– Các lớp khác (classes private to the package)

(59)

Interfaces

• Chương trình Java kế thừa từ lớp thời điểm, dẫn xuất lúc nhiều Interfaces

• Khơng phép có phương thức cụ thể (concrete methods)

(60)

Các bước tạo interface • Định nghĩa Interface

• Biên dịch Interface • Hiện thực Interface

• Tính chất interface:

– Tất phương thức interface phải

public.

(61)

Sử dụng Interface

• Khơng thể dẫn xuất từ lớp khác, dẫn xuất từ interface khác

• Nếu lớp dẫn xuất từ interface mà interface dẫn xuất từ interface khác lớp phải định nghĩa tất phương thức có interface

(62)

Gói (Packages)

(63)

• Những ưu điểm dùng gói (Package):

– Cho phép tổ chức lớp vào đơn vị nhỏ

– Giúp tránh tình trạng trùng lặp đặt tên

– Cho phép bảo vệ lớp đối tượng

(64)

• Những lưu ý tạo gói:

– Mã nguồn phải bắt đầu lệnh ‘package’

– Mã nguồn phải nằm thư mục mang tên gói

– Tên gói nên bắt đầu ký tự thường (lower case) để phân biệt lớp đối tượng gói

– Những lệnh khác phải viết phía dịng khai báo gói mệnh đề import, mệnh đề định nghĩa lớp đối tượng

– Những lớp đối tượng gói cần phải biên dịch

(65)

• Import gói (Importing packages):

(66)

Các bước tạo gói (Package)

• Khai báo gói

• Import gói chuẩn cần thiết • Khai báo định nghĩa lớp đối

tượng có gói

• Lưu định nghĩa thành tập tin

(67)

Sử dụng gói người dùng định nghĩa (user-defined packages)

• Mã nguồn chương trình phải thư mục gói người dùng định nghĩa

• Để chương trình Java khác sử dụng gói này, import gói vào mã nguồn • Import lớp đối tượng cần dùng

• Import tồn gói

(68)

Xác lập CLASSPATH

• Là danh sách thư mục, giúp cho việc tìm kiếm tập tin lớp đối tượng tương ứng

(69)(70)

Gói java.lang

• Mặc định chương trình Java nào import gói java.lang

(71)

Lớp String

• Phương thức khởi tạo (Constructor):

String str1 = new String();

String str2 = new String(“Hello World”); char ch[ ] = {“A”,”B”,”C”,”D”,”E”};

String str3 = new String(ch);

(72)

String Pool

• ‘String Pool’ đại diện cho tất ký tự tạo chương trình

(73)

Những phương thức lớp String

charAt( )

startsWith()endsWith( )

copyValueOf( ) toCharArray( ) indexOf( )

toUpperCase( )toLowerCase( )trim( )

(74)

Lớp StringBuffer

• Cung cấp phương thức khác để thao tác đối tượng string (chuỗi ký tự)

• Những đối tượng lớp linh hoạt

• Cung cấp phương thức khởi tạo (constructor) nạp chồng (overloaded) • Những phương thức lớp StringBuffer:

append( )

insert( )

charAt( )

setCharAt( )

setLength( )getChars( )

(75)

Lớp java.lang.Mathabs()

ceil()

floor()max()min()

round()

random()

sqrt()

(76)

Lớp Runtime

• Đóng gói (Encapsulates) mơi trường thực thi • Dùng để quản lý nhớ, thi hành

tiến trình cộng thêm • Phương thức:

exit(int)

freeMemory( )

getRuntime( )

gc( )

totalMemory( )

(77)

Lớp System

• Cung cấp hạ tầng chuẩn nhập (Input), xuất (Output) luồng lỗi(Error Streams)

• Cung cấp khả truy xuất đến thuộc tính hệ thống thực thi Java, thuộc tính mơi trường phiên bản, đường dẫn, nhà cung cấp…

• Phương thức:

exit(int)

gc()

getProperties()

setProperties()

currentTimeMillis()

(78)

Lớp Class

• Thể (Instance) lớp che giấu tình trạng thực thi đối tượng một ứng dụng Java

• Đối tượng thể lớp có thể tạo cách sau:

– Sử dụng phương thức getClass( ) đối tượng

– Sử dụng phương thức tĩnh forName( ) lớp để tạo thể lớp lúc đặt tên cho lớp

(79)

Lớp Object

• Là lớp cha (superclass) tất lớp • Phương thức:

equals(Object) finalize()

(80)

Gói java.util

• Cung cấp phần lớn lớp Java hữu dụng thường xuyên cần đến trong hầu hết ứng dụng

• Giới thiệu lớp trừu tượng sau:

– Hashtable – Random – Vector

(81)

Lớp Hashtable

• Mở rộng lớp trừu tượng Dictionary

• Dùng để nối kết khóa vào giá trị cụ thể

• Phương thức khởi tạo Hashtable:

Hashtable(int)

(82)

Những phương thức lớp Hashtableclear()done()contains(Object)containsKey(Obj ect)elements()

get(Object key)

isEmpty()

keys()

put(Object, Object)

rehash()

remove(Object

key)

size()

(83)

Lớp Random

• Tạo số ngẫu nhiên theo thuật tốn pseudo • Những phương thức nhận giá trị ngẫu nhiên:

nextDouble( )

nextFloat( )

nextGaussian( )

nextInt( )

nextLong( )

• Phương thức khởi tạo (Constructors):

random()

(84)

Những phương thức lớp

Random

nextDouble()

nextFloat()

nextGaussian() nextInt()

nextLong()

(85)

Lớp Vector

• Cung cấp khả co giản cho mảng thêm phần tử vào mảng

• Lưu trữ thành phần kiểu Object

• Một Vector riêng rẽ lưu trữ phần tử khác nhau, instance lớp khác

• Phương thức khởi tạo (Constructors):

Vector(int)

Vector(int, int)

(86)

Những phương thức lớp

Vector

addElement(Object)

capacity( )

clone( )

contains(Object)

copyInto(Object [ ])

elementAt(int)

elements( )

ensureCapacity(int)

firstElement( )

indexOf(Object)

indexOf(Object, int)

insertElementAt(Object, int)

isEmpty( )

lastElement( )

lastIndexOf(Object)

lastIndexOf(Object, int)

removeAllElements( )

removeElement(Object)

removeElementAt(int)

setElementAt(Object, int)

setSize(int)

size( )

toString( )

(87)

Lớp StringTokenizer

• Có thể dùng để tách chuỗi thành thành phần cấu thành (constituent tokens)

• Ký tự phân cách định đối tượng StringTokenizer khởi tạo

• Phương thức khởi tạo (Constructors):

StringTokenizer(String)

StringTokenizer(String, String)

StringTokenizer(String, String, Boolean)

(88)

Những phương thức lớp

StringTokenizer

countTokens( )

hasMoreElements( )

hasMoreTokens( ) nextElement( )

nextToken( )

(89)

Chương 4

(90)

Giới thiệu biệt lệ

• Là kiểu lỗi đặc biệt

• Nó xảy thời gian thực thi đoạn lệnh • Thơng thường điều kiện thực thi chương

trình gây biệt lệ

(91)

Mục đích việc xử lý biệt lệ

• Giảm thiểu việc kết thúc bất thường hệ thống chương trình

(92)

Xử lý biệt lệ

• Khi biệt lệ xảy ra, đối tượng tương ứng với biệt lệ tạo

• Đối tượng sau truyền tới phương thức nơi mà biệt lệ xảy

• Đối tượng chức thơng tin chi tiết biệt lệ Thơng tin nhận xử lý

(93)

Mô hình xử lý biệt lệ

• Mơ hình biết đến mơ hình ‘catch and throw’

• Khi lỗi xảy ra, biệt lệ đuợc chặn vào khối

• Từ khóa để xử lý biệt lệ: – try

(94)

Cấu trúc mơ hình xử lý biệt lệ

Cú pháp

try { … }

(95)

Mơ hình ‘Catch and Throw’ nâng cao • Người lập trình quan tâm tới lỗi

khi cần thiết

(96)

Khối ‘try’ ‘catch’

• Được sử dụng để thực mơ hình ‘catch and throw’ xử lý biệt lệ

• Khối lệnh ‘try’ gồm tập hợp lệnh thực thi • Một phương thức mà bắt biệt lệ,

cũng bao gồm khối lệnh ‘try’

• Một nhiều khối lệnh ‘catch’ sau khối lệnh ‘try’

(97)

Khối lệnh ‘try’ ‘catch’ Blocks (tt)

• Để bắt loại biệt lệ nào, ta phải kiểu biệt lệ ‘Exception’

catch(Exception e)

• Khi biệt lệ bị bắt khơng biết thuộc kiểu nào, sử dụng lớp ‘Exception’ để bắt biệt lệ

(98)

Khối lệnh chứa nhiều Catch

• Các khối chứa nhiều ‘catch()’ xử lý kiểu biệt lệ khác cách độc lập

• Ví dụ

try

{ doFileProcessing(); displayResults(); } catch(LookupException e)

{ handleLookupException(e); } catch(Exception e)

{

(99)

Khối lệnh chứa nhiều Catch (tt)

• Khi sử dụng ‘try’ lồng nhau, khối ‘try’ bên thi hành

• Bất kỳ biệt lệ bị chặn khối lệnh ‘try’ bị bắt giữ khối lệnh ‘catch’ tiếp sau

• Nếu khối lệnh ‘catch’ thích hợp khơng tìm thấy, khối ‘catch’ khối ‘try’ bên ngồi xem xét

(100)

Khối ‘finally’

• Thực tất việc thu dọn biệt lệ xảy

• Có thể sử dụng kết hợp với khối ‘try’

• Chứa câu lệnh thu hồi tài nguyên cho hệ thống hay lệnh in câu thơng báo:

– Đóng tập tin

– Đóng lại kết (được sử dụng chương

trình sở liệu)

(101)

Khối ‘finally’ (tt)

• Ví dụ

try {

doSomethingThatMightThrowAnException( ); }

finally {

(102)

Khối ‘finally’ (tt)

• Là tùy chọn khơng bắt buộc • Được đặt sau khối ‘catch’

(103)

Các biệt lệ định nghĩa với lệnh ‘throw’ ‘throws’

• Các biệt lệ chặn với trợ giúp từ khóa ‘throw’

• Từ khóa ‘throw’ biệt lệ vừa xảy

• Tốn hạng throw đối tượng lớp, mà lớp dẫn xuất từ lớp ‘Throwable’

• Ví dụ lệnh ‘throw’

try{

if (flag < 0) {

throw new MyException( ) ; // user-defined }

(104)

Các biệt lệ định nghĩa với lệnh ‘throw’ ‘throws’(tt)

• Một phương thức đơn chặn nhiều biệt lệ

• Ví dụ từ khóa ‘throw’ xử lý nhiều biệt lệ

public class Example {

public void exceptionExample( ) throws ExException, LookupException {

try

{ // statements }

catch(ExException exmp) { … }

(105)

Các biệt lệ định nghĩa với lệnh ‘throw’ ‘throws’(tt)

• Lớp ‘Exception’ thực thi giao diện ‘Throwable’ cung cấp tính hữu dụng để phân phối cho biệt lệ. • Một lớp lớp Exception

(106)

Danh sách biệt lệ

• RuntimeException • ArithmeticException

• IllegalAccessException • IllegalArgumentException

• ArrayIndexOutOfBoundsException • NullPointerException

• SecurityException

(107)

Danh sách biệt lệ (tt) • NumberFormatException

• AWTException • IOException

• FileNotFoundException • EOFException

(108)

Chương V

(109)

• AWT viết tắt Abstract Windowing Toolkit

• AWT tập hợp lớp Java cho phép tạo GUI

• Cung cấp mục khác để tạo hoạt động hiệu ứng GUI

– Containers – Components

– Layout managers

– Graphics drawing capabilities – Fonts

– Events

(110)(111)

Components

• Tất thành phần cấu tạo nên chương trình GUI gọi component

Ví dụ

Containers,

(112)

Containers

• Là thành phần mà chứa thành phần khác vẽ tơ màu.

• Có frames, panes,latches, hooks

• Java.awt chứa lớp có tên Container Lớp dẫn xuất trực tiếp và không trực cách là:

(113)

Frames

• Là cửa sổ

• Là lớp Windows

(114)

Panels

• Là vùng chứa cửa sổ

• Hiển thị cửa sổ mà trình duyệt appletviewer cung cấp khơng có đường viền. • Được sử dụng để nhóm số thành phần • Một panel khơng có sẳn cần

phải thêm vào frame • Hàm dựng

(115)

Dialog

• Là lớp lớp Window

• Đối tượng dialog cấu trúc sau :

Frame myframe = new Frame(“My frame”); String title = “Title”;

boolean modal = true;

(116)

Các Components khác

Ví dụ

(117)

Label

• Được dùng để hiển thị chuỗi (String) • Các hàm dựng:

Label( )

Label(String labeltext)

Label(String labeltext, int alignment)

• Các phương thức:

setFont(Font f)

(118)

TextField

• Là điều khiển text cho phép hiển thị text cho user nhập liệu vào

• Các hàm dựng:

TextField( )

TextField(int columns)TextField(String s)

TextField(String s, int columns)

• Các phương thức:

setEchoChar(char)

setTest(String s) getText( )

(119)

TextArea

• Được dùng text có nội dung từ hai dịng trở lên

• Là điều khiển text soạn thảo được với nhiều dịng

• Các bước để tạo TextArea:

– Tạo phần tử (element)

– Chỉ số dòng hay số cột (tùy chọn)

(120)

TextArea (tt…) • Các hàm dựng:

TextArea( )

TextArea(int rows, int cols ) TextArea(String text)

(121)

Các phương thức TextArea

setText(String) getText( )

setEditable(boolean)

isEditable( )

insertText(String, int)

(122)

Button

• Các nút Push hay Command cách dễ để lấy sư kiện user

• Các bước để tạo button:

– Tạo phần tử button, nên tạo cho caption

để mục đích

– Chỉ vị trí đặt button hình – HIển thị hình

• Các hàm dựng:

Button( )

(123)

Checkboxes and RadioButtons

• Checkboxes dùng cho phép user nhiều cọn chọn lựa

• Radiobuttons dùng để user lựa chọn

• Các bước để tạo checkbox radiobutton:

– Tạo phần tử (element)

– Khởi tạo giá trị ban đầu (có giá trị selected hay unselected) – Chỉ vị trí hình

– Hiển thị hình

• Các hàm dựng để tạo checkbox:

Checkbox( )

Checkbox(String text)

(124)

Choice Lists

• Lớ p ‘Choice’ cho phép ta tạo danh sách có nhiều chọn lựa

• Khi list tạo lần đầu tiên, khởi tạo empty

• Các bước để tạo danh sách chọn lựa: – Tạo phần tử

– Thêm mục (có kiểu Strings) vào danh sách đó, mục

– Chỉ vị trí hình – Hiển thị hình

• Ví dụ

Choice colors=new Choice( ); colors.addItem(“Red”);

(125)

Trình quản lý bố trí Layout Manager • Các loại layout khác nhau:

– Flow Layout – Border Layout – Card Layout – Grid Layout

– GridBag Layout

(126)

FlowLayout

• Là trình quản lý layout mặc định cho applet panel

• Với FlowLayout thành phần xắp xếp từ góc trái đến góc phải của hình

• Các constructor:

FlowLayout mylayout = new FlowLayout(); FlowLayout exLayout = new

(127)

BorderLayout

• Là trình quản lý layout mặc định cho Window, Frame Dialog

• Trình quản lý xắp xếp đến thành phần container

• Các thành phần đặt vào hướng NORTH, EAST, SOUTH, WEST CENTER container

Ví dụ: Để thêm thành phần vào vùng North container

Button b1= new Button(“North Button”); setLayout(new BorderLayout( ));

(128)

CardLayout

• Có thể lưu trữ danh sách kiểu layout khác

• Mỗi layout xem thẻ (card) • Thẻ thường đối tượng Panel

• Một thành phần độc lập button điều khiển thẻ đặt phía

• Các bước để tạo CardLayout:

(129)

GridLayout

• Hỗ trợ việc chia container thành lưới

• Các thành phần bố trí dịng cột

• Một lưới nên chứa thành phần • Kiểu layout sử dụng tất

các thành phần có kích thước • Hàm constructor

(130)

GridBagLayout

• Bố trí thành phần cách xác

• Các thành phần khơng cần có kích thước

• Các thành phần xắp xếp lưới chứa dịng cột

• Thứ tự đặt thành phần không tuân theo hướng từ trái-sang-phải trên-xuống-dưới • Hàm constructor

(131)

GridBagLayout

• Để sử dụng layout này, bạn cần phải biết thơng tin kích cỡ cách bố trí của thành phần

(132)

Xử lý kiện

• Các kiện (Events) xử lý công cụ sau:

– Abstract Windowing Toolkit – Trình duyệt

– Các trình xử lý kiện lập trình viên tạo

riêng

• Các ứng dụng cần đăng ký trình xử lý kiện với đối đối tượng

(133)

Xử lý kiện (tt…)

• Event Listener lắng nghe kiện cụ thể mà đối tượng tạo

• Mỗi event listener cung cấp phương thức để xử lý kiện

(134)

Xử lý kiện(tt…)

• Các bước cần tn thủ để sử dụng mơ hình Event Listener:

– Cài đặt Listener tương ứng

– Nhận diện tất thành phần tạo kiện

– Nhận diện tất kiện xử lý

– Cài đặt phương thức listener, viết đoạn mã để xử lý kiện phương thức

(135)(136)

Menus • Các loại menu :

– Pull-down

– Pop-up menu

• Chỉ đặt menubar vào trong Frame mà thơi

• Các thành phần menu:

(137)

Chương VI

(138)

Applets

• Là chương trình Java mà chạy với sự hổ trợ trình duyệt web

• Tất applets lớp lớp ‘Applet’

• Để tạo applet, bạn cần import hai gói sau:

(139)

Cấu trúc applet

• Định nghĩa applet từ bốn kiện xảy trình thực thi

• Đối với kiện định nghĩa phương thức tương ứng

• Các phương thức:

init( ) start( ) stop( )

(140)

• Các phương thức khác:

paint( )

repaint( )

showStatus( )

getAppletInfo( )

• Các phương thức init(), start(), stop(), destroy(), and paint() thừa kế từ applet • Mỗi phương thức mặc định rỗng Vì

(141)

Biên dịch thực thi applet

• Một applet biên dịch theo cú pháp sau

javac Applet1.java

• Để thực thi applet, tạo tập tin HTML có sử dụng thẻ applet

– Thẻ applet có hai thuộc tính:

• Width

• Height

– Để truyền tham số tới applet, sử dụng thẻ ‘param’, thẻ ‘value’

(142)

Điểm khác biệt applet ứng dụng • Các ứng dụng thực thi phải sử dụng

trình biên dịch Java, applets thực thi trình duyệt mà hổ trợ Java, sử dụng ‘AppletViewer’ JDK.

• Một ứng dụng bắt đầu với phương thức ‘main()’ Cịn applet khơng sử dụng phương thức này

• Một ứng dụng sử dụng

(143)

Những hạn chế bảo mật trong applet

• Khơng thể đọc viết tập tin hệ thống tập tin người sử dụng

• Khơng thể giao tiếp với site internet Mà giao tiếp với dịch vụ trang web có applet

• Khơng thể chạy chương trình hệ thống người đọc

(144)(145)

Truyền tham số tới applet

• Để truyền tham số, sử dụng PARAM trong thẻ HTML

• Ví dụ

(146)

Lớp đồ họa

• Được cung cấp gói AWT

• Cung cấp tập hợp phương thức để vẽ sau:

– Oval

– Rectangle – Square – Circle – Lines

(147)

Graphical Background • Các phương thức để vẽ :

getGraphics( ) repaint( )

update(Graphics g)

(148)

Hiển thị chuổi, ký tự bytes • Phương thức để vẽ hiển thị chuổi

trên frame

Cú pháp

drawString(String str, int xCoor, int yCoor);

• Phương thức để vẽ hiển thị ký tự frame

Cú pháp

drawChars(char array[ ], int offset, int length, int xCoor, int yCoor);

• Phương thức để vẽ hiển thị bytes frame

Cú pháp

(149)

Vẽ hình thể

• Phương thức sử dụng để vẽ đường thẳng sau

Cú pháp

drawLine(int x1, int y1, int x2, int y2);

• Các phương thức sử dụng để vẽ đường tròn sau

Cú pháp

drawOval(int xCoor, int yCoor, int width,

int height);

setColor(Color c);

(150)

• Phương thức sử dụng để vẽ hình vng:

Cú pháp

drawRect(int xCoor, int yCoor, int width, int height);

fillRect(int xCoor, int yCoor, int width, int height);

• Các phương thức sử dụng để vẽ hình vng có góc trịn

Cú pháp

drawRoundRect(int xCoor, int yCoor, int width, int height, int arcWidth, int arcHeight);

(151)

3D Rectangles & Arcs

• Các phương thức sử dụng để vẽ hình 3D Cú pháp

draw3DRect(int xCoord, int yCoord, int

width, int height, boolean raised);

drawArc(int xCoord, int yCoord, int width,

int height, int arcwidth, int archeight);

fillArc(int xCoord, int yCoord, int width, int

(152)

Drawing PolyLines

• Các phương thức sử dụng để vẽ nhiều thẳng

Cú pháp

drawPolyline(int xArray[ ], int yArray[ ], int

totalPoints);

g.setFont(new Font("Times Roman",

(153)

Vẽ tơ hình đa giác

• Các phương thức để vẽ tơ hình đa giác

Cú pháp

drawPolygon(int x[ ], int y[ ], int

numPoints);

(154)

Màu

• Java sử dụng màu RGB • Bảng giá trị màu

Element Range

Red 0-255

Green 0-255

Blue 0-255

 Cú pháp hàm dựng để tạo màu

(155)

• Bảng trình bày giá trị màu RGB thơng thường

Color Red Green Blue

White 255 255 255

Light Gray 192 192 192

Gray 128 128 128

Dark Gray 64 64 64

Black 0

Pink 255 175 175

Orange 255 200

Yellow 255 255

(156)

Font

• Gói java.awt package cung cấp lớp ‘Font’

• Các phương thức lớp Font:

getAllFont( )

getLocalGraphicsEnvironment( ) getFont( )

(157)

• Hàm dựng Font nhận tham số

– Tên font chuổi định dạng; tên có phương thức getFontList( )

– Kiểu font Ví dụ như: Font.BOLD, Font.PLAIN, Font.ITALIC

– Kích thước font

• Ví dụ

(158)

Lớp FontMetrics

• Đo lường ký tự khác hiển thị font khác

• Việc đo lường bao gồm ‘height’, ‘baseline’, ‘ascent’, ‘descent’ ‘leading’ font

(159)

Lớp FontMetrics (tiếp theo…)

• Phương thức:

getFontMetrics(f1) getHeight( )

(160)

Kiểu vẽ

• Các đối tượng để vẽ sử dụng.

• Method used to make old and new contents visible on the screen

setXORMode(Color c)

• Method used to revert to the overwrite mode

(161)

Chương VII

(162)

Tuyến

• Lập trình đa tuyến đặc trưng của Java

(163)

Đa tuyến

• Là khả làm việc với nhiều tuyến • Đa tuyến chuyên sử dụng cho việc

thực thi nhiều công việc đồngthời

(164)

Tạo quản lý tuyến (1)

• Khi chương trình Java thực thi hàm main() tức tuyến main thực thi Tuyến tạo cách tự động :

- Các tuyến tạo từ

- Nó tuyến cuối kết thúc việc thực Trong chốc lát tuyến ngừng thực thi, chương trình bị chấm dứt

• Tuyến tạo cách:

(165)(166)

Trạng thái tuyến phương thức lớp tuyến

trạng thái:

born

ready to runrunningsleepingwaitingreadyblockeddead

Phương thức:

(167)

Các phương thức Khác

enumerate(Thread t)

getName( )

isAlive( )

getPriority( )

setName(String name)

join( )

isDaemon( )

setDaemon(Boolean on)

(168)

Phân chia thời gian tuyến

• CPU thực thi tuyến thời điểm định.

(169)

tuyến Daemon(ngầm)

• Hai kiểu tuyến chương trình Java:

– Các tuyến người sử dụng – tuyến ngầm

(170)

Đa tuyến với Applets

• Các chương trình Java dựa Applet thường sử dụng nhiều tuyến

• Trong đa tuyến với Applets, Lớp ‘java.applet.Applet’ lớp tạo Applet người sử dụng định nghĩa

• khơng thể thực trực tiếp lớp lớp tuyến applet

• Con đường để lớp sử dụng lớp tuyến:

– Sử dụng đối tượng tuyến người sử dụng định

(171)

Sự đồng tuyến

• Thâm nhập tài nguyên/dữ liệu nhiều tuyến

• Sự đồng (Synchronization) • Sự quan sát (Monitor)

(172)

Mã đồng

• Để thâm nhập quan sát đối tượng, lập trình viên sử dụng từ khóa ‘synchronized’ để gọi phương thức hiệu chỉnh (modified method)

(173)

Khuyết điểm phương thức đồng

• Các trạng thái chắn khơng lợi ích cho đa tuyến

• Trình biên dịch Java từ Sun không chứa nhiều phương thức đồng

(174)

Kỹ thuật “wait-notify” (đợi – thơng báo) (1)

• tuyến chia tác vụ thành đơn vị riêng biệt logic (hợp lý)

• Để tránh trường hợp kiểm sốt vòng, Java bao gồm thiết kế tốt tiến trình kỹ thuật truyền thơng sử dụng phương thức “wait()” (đợi), “notify()” (thông báo) “notifyAll()” (thông báo hết) :

(175)

Kỹ thuật “wait-notify” (đợi – thơng báo) (1)

• Các chức phương thức “wait()”, “notify()”, “notifyAll()” :

wait( ) notify( )

notifyAll( )

• tuyến ưu tiên cao chạy đầu tiên • Cú pháp phương thức:

final void wait( ) throws IOExceptionfinal void notify( )

(176)

Một số điểm cần nhớ sử dụng phương thức wait():

• tuyến gọi đưa vào CPU • tuyến gọi đưa vào khóa

(177)

Các điểm cần nhớ phương thức notify()

• Một tuyến đưa ngồi vùng đợi monitor, vào trạng thái sẵn sàng

• tuyến mà thơng báo phải thu trở lại khóa monitor trước bắt đầu

• Phương thức notify() khơng xác

• Trong số trường hợp này, phương thức monitor đưa đề phòng:

– Trạng thái monitor kiểm tra vòng lặp “while” tốt câu lệnh if

(178)

Sự bế tắt (Deadlocks)

• Một “deadlock” (sự bế tắt) xảy hai tuyến có phụ thuộc vịng quanh cặp đối tượng đồng

• Nó khó để gỡ lỗi bế tắt nguyên nhân sau:

– Nó hiểm xảy ra, hai tuyến chia nhỏ thời gian đường

– Nó bao hàm nhiều hai tuyến hai đối tượng đồng

(179)

Thu dọn “rác” (Garbage collection)

• Cải tạo làm trống nhớ định vị cho đối tượng mà đối tượng này không sử dụng thời gian dài • Sự dọn rác thực thi tuyến

riêng biệt có quyền ưu tiên thấp

• Sử dụng câu lệnh sau để tắt dọn rác ứng dụng:

(180)

Phương thức finalize() (hoàn thành)

• Java cung cấp đường để làm tiến trình trước điều khiển trở lại hệ điều hành

• Phương thức finalize(), diện, thực thi đối tượng, trước dọn rác • Câu lệnh phương thức finalize() sau :

protected void finalize( ) throws Throwable

(181)

Chương VIII

(182)

Các luồng

• Các luồng đường ống dẫn để gửi nhận thơng tin chương trình java • Khi luồng đọc ghi , luồng khác

bị khố

• Nếu lỗi xẩy đọc ghi luồng, ngoại lệ kích hoạt

(183)

Các lớp luồng I/O • Lớp System.out

(184)

Lớp InputStream

• Là lớp trừu tượng

• Định nghĩa cách nhận liêu

• Cung cấp số phương thức dùng để đọc luồng liệu làm đầu vào

• Các phương thức:

read( )

available( ) close ( )

mark ( )

markSupported( ) reset( )

(185)

Lớp OutputStream

• Là lớp trừu tượng

• Định nghĩa cách ghi liệu vào luồng

• Cung cấp tập phương thức trợ giúp việc tạo, ghi xử lý luồng xuất • Các phương thức:

write(int)

write(byte[ ])

write(byte[ ], int, int) flush( )

(186)

Nhập mảng Byte • Sử dụng đệm nhớ

• Lớp ByteArrayInputStream

• Tạo luồng nhập từ đệm nhớ không mảng byte.

– Khơng hỗ trợ phương thức

(187)

Byte Array Output • sử dụng vùng đệm nhớ • Lớp ByteArrayOutputStream

– Tạo luồng kết xuất mảng byte – Cung cấp khả bổ sung cho

mảng kết xuất tăng trưởng nhằm chừa chổ cho liệu ghi vào

(188)

• Phương thức lớp

ByteArrayOutputStream :

reset( )size( )

(189)

Các lớp nhập/xuất tập tin

• Các lớp trợ giúp Java để hổ trợ thao tác nhập xuất:

– File

– FileDescriptor – FileInputStream – FileOutputStream

(190)

Lớp tập tin

• Được sử dụng truy cập đối tượng tập tin thw mục

• Những tập tin có tên đặt tên theo qui ước hệ điều hành chủ

• Lớp cung cấp phương thức khởi tạo để tạo thư mục tập tin

(191)

Lớp FileDescriptor

• Cung cấp việc truy cập tới tập tin mơ tả

• Khơng cung cấp tính rõ nét tới thơng tin mà hệ điều hành trì.

(192)

Lớp FileInputStream

• Cho phép đầu vào đọc từ tập tin trong mẫu dịng

• Các đối tượng tạo sử dụng chuỗi tên tập tin, tập tin, đối tượng FileDescriptor tham số.

(193)

Lớp FileOutputStream

• Cho phép kết xuất để ghi luồng tập tin

• Các đối tượng tạo sử dụng chuỗi tên tập tin, tạp tin, hay đối tượng FileDescriptor tham số.

(194)

Nhập xuất lọc

• Lọc:

– Là kiểu luồng sửa đổi cách điều quản luồng

hiện có

– sử dụng để thích ứng luồng

theo nhu cầu chương trình cụ thể

– Bộ lọc nằm luồng nhập luồng xuất

– Thực số tiến trình đặt biệt byte

được chuyển giao từ đầu vào đến kết xuất

– Có thể phối hợp để thực dãy tuỳ

(195)

Lớp FilterInputStream

• Là lớp trừu tượng

• Là cha tất lớp luồng nhập lọc

• Cung cấp khả tạo luồng từ luồng khác • Một luồng đọc cung cấp cung cấp

dạng kết xuất cho luồng khác

• trì dãy đối tượng lớp ‘InputStream’ • Cho phép tạo nhiều lọc kết xích (chained

(196)

Lớp FilterOutputStream

• Là dạng bổ trợ cho lớp

‘FilterInputStream’

• Là cha tất lớp luồng kết xuất. • Duy trì đối tượng lớp ‘OutputStream’

như biến ‘out’.

(197)

Vùng đệm nhập/xuất • Vùng đệm:

– Là kho lưu trữ liệu

– Có thể cung cấp liệu thay quay trợ lại nguồn

liệu gốc ban đầu

– Java sử dụng vùng đệm nhập kết xuất để tạm thời

lập cache liệu đọc ghi vào luồng • Trong thực vùng đệm nhập:

– Số lượng byte lớn đọc thời điểm, lưu

trữ vùng đệm nhập

– Khi chương trình đọc luồng nhập, byte nhập

(198)

Vùng đệm nhập/xuất (tt…)

• Trong trường hợp vùng đệm kết xuất, chương trình ghi luồng

• Dữ liệu kết xuất đựơc lưu trữ vùng đệm kết xuất

• Dữ liệu lưu trữ vùng đệm trợ nên đầy, hay luồng kết xuất xả trống • Kết thúc, vùng đệm kết xuất chuyển gửi

(199)

Lớp BufferedInputStream

• Tự động tạo trì vùng đệm để hổ trợ vùng đệm nhập

• lớp ‘BufferedInputStream’ đệm, áp đụng cho số đối tượng định lớp ‘InputStream’

• Cũng phối hợp tập tin đầu vào khác

(200)

Lớp BufferedInputStream (Contd…)

• Định nghĩa hai phương thức thiết lập:

– Một chó phép định kích thước vùng đệm nhấp – phương thức khơng

• Cả hai phương thức thiết lập tiếp nhận đối tượng lớp ‘InputStream’ tham số

Ngày đăng: 30/05/2021, 03:56

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan