1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tài liệu học tập dành cho sinh viên - Lậ p trình Java

60 8 0

Đ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

Thông tin cơ bản

Tiêu đề Lập Trình Java
Tác giả James Gosling, Bill Joy
Người hướng dẫn GV Dương Thăng Long
Trường học Viện Đại học Mở Hà Nội
Chuyên ngành Công Nghệ Tin Học
Thể loại Tài liệu học tập
Năm xuất bản 2009
Thành phố Hà Nội
Định dạng
Số trang 60
Dung lượng 3,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lập trình HĐT trong Java l Các giai đoạn phát triển phần mềm nói chung l Đặc trưng của lập trình hướng đối tượng bao gói, che dấu, kế thừa, đa hình l Khái niệm về đối tượng, thuộc tính,

Trang 1

Bài 1 Giới thiệu lập trình Java

1.1- Quá trình phát triển của Java

l Nguồn gốc của Java (Oak)

l Ứng dụng đầu tiên (applets) và mở rộng ngày nay

*Sun Microsystem*

James Gosling,

Bill Joy và cộng sự

Ngôn ngữOak1990

Các thiết gia đình, cầm tay,…

Ngôn ngữJava1993

Internet

Applets

J2SE

J2EE J2ME

Hiện nay

1.1- Quá trình phát triển của Java

l Giới thiệu tóm tắt về 3 công nghệ của Java: J2SE, J2ME, J2EE

l J2SE: Java 2 Platform, Standard Edition

l Phiên bản desktop của Java, cung cấp GUI, threads, networking, XML, Applets, security, database,…

l J2ME: Java 2 Platform, Micro Edition

l Phiên bản dành cho các thiết bị nhỏ, không phải là J2SE thu nhỏ, gồm hai phần cơ bản

là cấu hình (configuration) và mô tả (profile)

l J2EE: Java 2 Platform, Enterprise Edition

l Phiên bản cho các ứng dụng lớn, có phân tán, gồm rất nhiều công nghệ được tích hợp như Java Servlet, JavaServer Pages, JDBC, JMS, Java Webservice,…

l Các ưu điểm của Java

l Độc lập với thiết bị phần cứng (hệ nền)

l Độ an toàn cao

l Mức độ chuẩn hóa các phần cao

l Các nhược điểm của Java

l Tốc độ chậm

Trang 2

1.1- Quá trình phát triển của Java

l So sánh công nghệ Java và Microsoft.Net

l So sánh ngôn ngữ Java và C++

Ngôn ngữJava

Các công nghệ

Công nghệMicrosoft.Net

Object-Oriented Programming Structural programming

Cú pháp tốtTốc độ nhanh

1.3- Các khái niệm cơ bản

l Tên được dùng để định danh mọi thành phần trong chương trình

l Quy ước tên trong Java:

lTên lớp : chữ cái đầu từ viết hoa, còn lại viết thường (Frame, ActionEvent, …)

lTên hàm : từ đầu viết thường, các từ còn lại chữ cái đầu viết hoa (setVisible, close, getText, setDefaultCloseOperation,…)

lCác tên khác (biến, đối tượng,…) : viết chữ thường

lTên hằng : viết chữ hoa (CLOSE_ON_EXIT, YES_NO_OPTION,…)

const for package switch super while

new volatile class long finally char

static interface final

catch

void short

int extends case

try return

instanceof else

byte

throws public

import double break

throw protected

implements do

boolean

this private

if default abstract

Trang 3

1.3- Các khái niệm cơ bản

l Các kiểu dữ liệu nguyên thủy (int, long, float, double, char, boolean,…)

l Dữ liệu xâu ký tự (String) là kiểu lớp đối tượng

l Các hằng số viết bình thường, hằng xâu phải dùng nháy kép (“…”), hằng

ký tự dùng nháy đơn (‘…’)

l Biến nhớ chứa dữ liệu, chỉ dành cho dữ liệu đơn ( int, float, char,…)

l Tham chiếu là một biến đặc biệt (như biến trỏ) để tham chiếu (trỏ) đến các

1.3- Các khái niệm cơ bản

l Mảng được quản lý theo tham chiếu

l Mảng hai chiều, tham chiếu tương tự, mỗi chiều là một

tham chiếu

Mảng

length

tham chiếu mảng tham chiếu

mảng tham chiếu

int[ ] a = new int[ 8 ];

int[ ][ ] b = new int[ 4 ][ 3 ];

1.3- Các khái niệm cơ bản

hằng,… cung cấp cho việc lập trình

l java.awt, java.io, javax.swing,…

l Kết thúc câu lệnh phải có dấu chấm phẩy ( ;), khối lệnh phải đóng khung

Trang 4

1.4- Các cấu trúc điều khiển

l Lệnh nhập/xuất dữ liệu đơn giản

lập trình chương trình chính

} }

l Tên tệp chứa phải trùng với tên lớp chính trong chương trình, có

phần mở rộng là *.java

l Lệnh nạp gói thư viện import có thể không dùng.

l Một tệp chương trình có thể nhiều lớp, nhưng chỉ một lớp chính và

có quy định public

1.5- Cách lập trình Java

l Cách thực hiện một chương trình Java

chương trình đó, thực hiện hàm main Nếu không tìm thấy

lớp hoặc không có hàm main sẽ xuất hiện một thông báo lỗi.

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

javac tên_tệp_ct.java

lKiểm tra và sửa lỗi nếu có

l Chạy thử chương trình

l Chú ý: phải đặt đường dẫn tự động đến thư mục cài

đặt java, hoặc chạy bên trong thư mục đó.

Trang 5

1.5- Cách lập trình Java

l Quy trình lập trình một chương trình java

Lập chương trình Java (*.java)

public class Vidu_1_1 {

public static void main(String[] args) {

int a,b,c;

Scanner s=new Scanner(System.in);

System.out.print("Nhap so a:"); a=s.nextInt();

System.out.print("Nhap so b:"); b=s.nextInt();

c = (a>b)?a-b:b-a;

System.out.print("\nHieu so la:"+c);

Trang 6

1.6- Bài tập

l Bài tập tham khảo (http://longhlk.googlepages.com)

1 Nhập một số nguyên, một số thực và tính tổng / C1_VD1.java

2 Nhập hai số nguyên, tìm USCLN của chúng / C1_VD2.java

3 Nhập một xâu, tách và hiện ra các từ trên mỗi dòng / C1_VD3.java

4 Tính tổng các số được viết trong tham số dòng lệnh, hoặc thông báo

không có tham số / C1_VD4.java

l Bài tập tự làm

1 Nhập hai điểm trên mặt phẳng, tính khoảng cách giữa chúng.

2 Nhập mảng N số nguyên, hiện ra màn hình, tìm số lớn nhất hiện ra cùng

các vị trí của nó.

3 Nhập một xâu, đếm tần suất xuất hiện của các ký tự trong xâu đó.

1 Nhập một mảng N số thực, sắp xếp mảng giảm dần và hiện ra màn

hình, tính tổng các số dương và trung bình các số âm.

Bài 2 Lập trình HĐT trong Java

l Các giai đoạn phát triển phần mềm nói chung

l Đặc trưng của lập trình hướng đối tượng (bao gói, che dấu, kế thừa, đa hình)

l Khái niệm về đối tượng, thuộc tính, phương thức, lớp,

Tìm hiểu,Khảo sátPhân tích

hệ thốngThiết kế

hệ thống Lập trình Kiểm thử

Ứng dụngBảo trì, nâng cấp

Bài toán

Lớp

Kế thừaKhắc phục

Bổ sung

Bài 2 Lập trình HĐT Java

F2.1 Khái niệm về LTHĐT

Trang 7

Bài 2 Lập trình HĐT Java

F2.2 LT lớp và đối tượng

l Sự khác nhau giữa lớp và đối tượng

l Cú pháp định nghĩa lớp và các thành viên

phạm_vi class tên_lớp {

phạm_vi đặc_tính kiểu thành_viên_dữ_liệu ;

l Đối tượng và gọi phương thức

tham_chiếu = newtên_lớp;

tham_chiếu • tên_phương_thức();

l Tham chiếu this

Được định nghĩa mặc định (có sẵn) trong các

phương thức của lớp, this tham chiếu đến đối

tượng hiện đang xử lý

Ví dụ: Lập trình lớp các đối tượng Nhân_viên, nhập danh sách, in ra và tính tổng lương của các nhân viên ( Ref:C2_VD1.java )

Bài 2 Lập trình HĐT Java

F2.2 LT lớp và đối tượng

l Cách chạy phương thức qua Stack

Khi gọi một phương thức máy sẽ đẩy nó vào

một stack để chạy, xong sẽ giải phóng nó khỏi

stack

l Cơ chế truyền trị trong tham số

Mọi tham số trong phương thức đều có dạng

Có thể dùng từ khóa this để gọi thực hiện một

phương thức tạo khác từ một phương thức

tạo này

Trang 8

Bài 2 Lập trình HĐT Java

F2.3 Kỹ thuật kế thừa

l Chỉ được phép kế thừa đơn

l Cách định nghĩa một lớp dẫn xuất

phạm_vi class lớp_mới extends lớp_cũ {

… định nghĩa thành viên cho lớp mới … }

l Viết đè (overriding) một phương thức

Định nghĩa một phương thức trong lớp mới hoàn toàn giống lớp cũ Khác với

nạp chồng

l Từ khóa super và final

- Từ khóa super cho phép gọi các thành viê n lớp cơ sở bên trong lớp dẫn

xuất

- Từ khóa final quy định một thành viê n là cuối cùng, không thể viết đè lại nó

trong mọi lớp dẫn xuất

l Phương thức tạo trong kế thừa

- Phương thức tạo thực hiện theo thứ tự trên xuống

- Gọi phương thức tạo lớp cơ sở bên trong lớp dẫn xuất bằng

lệnh super(…); và nằm ở lệnh đầu tiên.

Ví dụ: Lập trình hai lớp hình tròn (HT) và hình elíp (HEL) có kế thừa, tính diện tích và chu vi của hai hình được nhập ( Ref:C2_VD2.java )

Bài 2 Lập trình HĐT Java

F2.4 Kỹ thuật đa hình

l Cơ chế đa hình

l Đa hình trong tham chiếu và từ khóa instanceof

- Một tham chiếu lớp cơ sở có thể tham chiếu đến các đối tượng lớp dẫn xuất trực tiếp hoặc gián tiếp

- Từ khóa instanceof cho biết đối tượ ng đang được tham chiếu thuộc lớp nào:

tham_chiếu instanceof tên_lớp

- Để gọi phương thức trên đối tượ ng qua tham chiếu cơ sở phải ép kiểu

( ( kiểu_lớp_mới ) tham_chiếu_lớp_cũ ) • tên_phương_thức (…);

l Mọi phương thức đều mặc định có thuộc tính ảo (virtual)

Bài 2 Lập trình HĐT Java

F2.4 Kỹ thuật đa hình

l Đa hình khi chạy phương thức ảo

Khi chạy một phương thức, máy tìm nó bắt

đầu trong lớp dẫn xuất của đối tượng được

tham chiếu, nếu không thấy sẽ tìm ngược lên

các lớp cơ sở và thực hiện tại phiên bản viết

đè mới nhất

l Đa hình trong tham số

Tham số là một tham chiếu thì có thể truyền

bất kỳ một đối tượng của lớp đó hoặc các lớp

dẫn xuất từ nó

l Các lớp wrapper

Lớp wrapper được tạo để gói các dữ liệu

nguyên thủy thành đối tượng, như Integer,

Float, Double, Character, Boolean, Long,…

Trang 9

Bài 2 Lập trình HĐT Java

F2.4 Kỹ thuật đa hình

l Danh sách đối tượng khác kiểu

Dùng mảng các tham chiếu cơ sở để quản

lý các đối tượng dẫn xuất khác kiểu nhau

Bài 2 Lập trình HĐT Java

F2.5 Cơ chế ảo và trừu tượng

l Phương thức ảo và sự đa hình

Một phương thức lớp cơ sở có thể gọi một phương

thức lớp dẫn xuất bằng cơ chế ảo và đa hình

l Lớp trừu tượng

- Là lớp không dùng để tạo đối tượng, quy định bằng

từ khóa abstract đầu lớp.

- Lớp trừu tượng được dùng khi nó đóng vai trò lớp

cơ sở, cấm không cho tạo đối tượng xử lý từ lớp này

l Phương thức trừu tượng

- Là phương thức không được lập trình, phải quy

định bằng từ khóa abstract.

- Một lớp chứa phương thức trừu tượng bắt buộc lớp

đó cũng phải trừu tượng

Ví dụ: Lập trình có cơ chế ảo, trừu tượng và đa hình?

Bài 2 Lập trình HĐT Java

F2.6 Lập trình gói

l Khái niệm về gói

Gói là một kỹ thuật lập trình thư viện, cho phép tổ chức các lớp theo cấu trúc phân cấp, tạo không

gian tên cho mỗi lớp

l Cách tổ chức lớp theo gói

- Các gói được tổ chức phân cấp theo cây thư mục, mỗi gói tương ứng với một thư mục chứa các lớp

trong đó

Lớp 1 Lớp 2 Lớp 3

Gói 1

Lớp 1 Lớp 2 Lớp 3 Gói 2

Trang 10

Bài 2 Lập trình HĐT Java

F2.6 Lập trình gói

l Cách tạo gói cho các lớp

- Các lớp được tạo hoặc chép vào thư mục ứng với gói, trong đó mỗi tệp chương trình trong gói phải sử dụng từ câu

lệnh sau để định nghĩa gói:

package tên_gói_cấp1 tên_gói_cấp2 ;

l Cách sử dụng gói và không gian tên của lớp

- Để sử dụng gói trong một chươ ng trình ta sử dụng lệnh import, khi đó chương trình có thể dùng tất cả các lớp của

gói đó

- Có thể sử dụng các lớp trực tiếp với tên đầy đủ như sau:

tên_gói_cấp1•tên_gói_cấp2• tên_lớp

- Java sử dụng biến môi trườ ng CLASSPATH của Windows để xác định đường dẫn tự động tìm kiếm đến các gói và

lớp

KL

HL

abc.java myprogram.java

khali.java yourprogram.java

Bài 2 Lập trình HĐT Java

F2.6 Lập trình gói

l Sự ảnh hưởng của phạm vi truy xuất đến gói và lớp

Tức là không quy định phạm vi cho thành viên khi khai báo, chỉ được phép truy xuất từ các lớp bên trong gói

Ví dụ: Tạo 2 gói chứa hai lớp bất kỳ, sử dụng 2 gói trên tạo hai đối tượng và thử / C2_VD3

l Khái niệm giao diện

- Giao diện là một tập các phương thức trừu tượng (chỉ được khai báo, chưa được lập trình)

- Giao diện dùng để trích ra các phương thức cần thiết từ một lớp, có thể hiểu giao diện ở đây là thể hiện

giữa các lớp với người lập trình

l Định nghĩa giao diện

Trang 11

- Trong giao diện chủ yếu chứa khai báo phương thức, nếu là dữ liệu thì phải quy định cảstaticfinal.

- Ví dụ về định nghĩa giao diện

interface myInterface { static final int count ; public void paint() ; public void run() ; }

- Một giao diện có thể kế thừa (extends) từ nhiều giao diện khác

l Sử dụng giao diện

- Giao diện được sử dụng trong xây dựng lớp, các lớp cài đặt một giao diện có nghĩa nó phải được lập

trình cho các phương thức

- Một lớp có thể cài đặt cho nhiều giao diện khác nhau

class tên_lớp implements giao_diện1 , giao_diện2 , {

1) Xây dựng lớp đối tượng nhân viên gồm họ tên, năm sinh, hệ số lương, mức lương cơ bản ở dạng

x mức lương cơ bản), một phương thức tĩnh để cập nhật mức lương cơ bản

Lập trình tạo và nhập danh sách n nhân viên, sắp xếp theo họ tên và hiện ra, tính tổng tiền lương

Nhập lại lương cơ bản và tính tổng lương mới / C2_VD1

2) Xây dựng lớp đối tượng hình tròn có tâm, bán kính, các phương thức tạo, nhập, hiện, tính chu vi,

tính diện tích, phương thức thay đổi bán kính

Kế thừa xây dựng lớp đối tượng hình elíp có thêm bán kính phụ, các phương thức tạo, nhập, hiện, tính

chu vi, diện tích

Lập trình tạo hai đối tượng hình tròn và hình elíp, chạy thử các phương thức trên hai đối tượng đó /

C2_VD2

l Các bài tập yêu cầu

Bài 2 Lập trình HĐT Java

F2.8 Bài tập

Bài 3 Lập trình GUI trong Java

Trang 12

3.1- Cơ chế đồ họa GUI trong Java

l Java cung cấp cơ chế lập trình đồ họa theo các đối

tượng thành phần (components)

l Hệ thống tọa độ theo pixels

Chương Trình Java

Thư viện GUI của Java

(Giao diện) (Người dùng)

3.1- Cơ chế đồ họa GUI trong Java

l Có hai mức xử lý đồ họa:

l Cơ chế giao diện theo cửa sổ (windowing)

l Phiên bản GUI đầu của Java là AWT (Abstract Window Toolkit), với

nhiệm vụ làm trong suốt giữa chương trình có giao diện cửa sổ với các

hệ nền mà chương trình đó chạy

l Tuy nhiên, các đối tượng AWT làm việc dựa trên đối tượng đồ họa của

hệ nền (native component) thông qua đối tượng trung gian (peer

object), điều này làm tăng độ phức tạp khi máy làm việc với các đối

Bài 3 Lập trình GUI trong Java

F3.2 Thư viện AWT & Swing

Trang 13

Bài 3 Lập trình GUI trong Java

F3.2 Thư viện AWT & Swing

l Phiên bản Swing làm việc hoàn toàn của Java, không

phụ thuộc các đối tượng đồ họa của hệ nền, cho phép

bạn quyết định họat động của một đối tượng đồ họa

Ví dụ cho nút lệnh (button) làm việc như là một cửa sổ

(window)

l Các đối tượng swing được gọi là đối tượng

lightweight, với lý do như trên.

l Mỗi đối tượng swing có ba phần cơ bản sau:

* Contents : chứa nội dung, trạng thái của đối tượng

* Visual Appearance: quy định sự nhìn thấy của đối

tượng như màu sắc, hình dáng, kích thước,

* Behaviour : quy định những phản hồi của đối tượng

đối với các sự kiện

l Ba thành phần trên tương tác với nhau qua mô hình

MVC (Model-View-Controller) như hình bên

l Các phương thức cơ bản của JFrame

l JFrame (String title);

l setDefaultCloseOpration (int operation);

Trang 14

3.3- Container & Component

l Component là các đối tượng giao diện đồ họa mức

cao, như cửa sổ, nút lệnh, menu,…

l Container là đối tượng chứa, quản lý & hiển thị các đối

tượng khác (components).

l Container cũng là một Component & nó có thể được

chứa trong một Container khác, gọi là các Container

lồng nhau.

l Đặt một component vào container:

3.3- Container & Component

Component

Container Button, Canvas, Checkbox, Label, …

JComponent

Window Panel ScrollPane

Frame

JMenuBar, JToolBar, JList, JTextComponent, JLabel, JComboBox, JToolTip, JTree, JSlider, JPanel, JSplitPane, JPopupMenu, JRootPane, JScrollBar, …

JFrame java.awt.*

javax.swing.*

3.3- Container & Component

l Một số component cơ bản

Trang 15

3.4- Quản lý Layout

l Java cung cấp hai cách sắp các components trong

container: theo tọa độ và theo layout

l Layout: các components trong container được sắp xếp

tự động thông qua đối tượng LayoutManager.

l Cách đặt thêm một Component vào Container, sử dụng phương thức của lớp

java.awt.Container như sau:

public Component add ( Component c);

public Component add ( Component c, int index);

public Component add ( Component c, Object constraints);

với c là đối tượng cần thêm, index là chỉ số của đối tượng thêm trong Container,

constraints là ràng buộc của đối tượng được thêm vào, phương thức này trả về tham

chiếu của đối tượng thêm thành công

l Đối tượng chứa Container sử dụng cơ chế Layout quy định vị trí và kích

thước các đối tượng Component trong nó Mỗi Container có thể được thiết lập

một trong nhiều kiểu Layout bằng câu lệnh sau:

void setLayout ( LayoutManager m);

với m là một đối tượng LayoutManager (là một giao diện) gồm một trong các kiểu lớp

thể hiện sau:

Bài 3 Lập trình GUI trong Java

F3.5 Quản lý Layout

l java.awt.FlowLayout, các đối tượng được xếp từ trái sang phải, có kích thước cố định

trước, có thể xuống dòng, có khoảng cách giữa các đối tượng

Để quy định cách trình bày đối tượng theo kiểu này sử dụng các phương thức tạo như

sau:

public FlowLayout ();

public FlowLayout ( int align);

public FlowLayout ( int align, int hgap, int vgap);

với align quy định căn chỉnh các đối tượng trên dòng gồm { FlowLayout.LEFT,

FlowLayout.CENTER, FlowLayout.RIGHT}, hgap và vgap là khoảng rộng giữa các đối tượng

theo chiều ngang và dọc

Bài 3 Lập trình GUI trong Java

F3.5 Quản lý Layout

Trang 16

l java.awt.BorderLayout, các đối tượng được xếp 4 phía xung quanh

{BorderLayout.EAST/WEST/NORTH/SOUTH} và ở giữa {BorderLayout.CENTER}, không cần kích

thước định trước, máy sẽ tự động

Các phương thức tạo c ủa lớp gồm:

public BorderLayout ();

public BorderLayout ( int hgap, int vgap);

Khi thêm một Component phải quy định phía cần đặt bằng cú pháp sau:

public Component add ( Component c, int quy_định_phía);

Bài 3 Lập trình GUI trong Java

F3.5 Quản lý Layout

Ví dụ: Lập trình hai cửa sổ, thêm các điều khiển JLabel để hiện thông tin của bạn và gia đình theo

hai kiểu FlowLayout, BorderLayout như trên / C3_VD3

l java.awt.GridLayout / GridBagLayout, các đối tượng được xếp theo từng hàng cột, có thể liên kết

nhiều hàng hoặc cột để xếp một đối tượng Với GridBagLayout sử dụng đối tượng GridBagConstraints

để tổ chức các đối tượng

- Các phương thức tạo của hai lớp trên gồm:

public GridLayout( int rows, int cols);

public GridLayout( int rows, int cols, int hgap, int vgap);

public GridBagLayout( );

- Khi thêm các đối tượng vào Container theo GridLayout máy sẽ tự động xuống dòng nếu hết các ô trên

dòng, theo GridBagLayout thì máy dựa vào ràng buộc (GridBagConstraints) để định vị đối tượng

l GridBagConstraints, là một lưới có liên kết giữa các ô với nhau để định vị các đối tượng trên

Container, có một số thành phần với ý nghĩa như sau:

-gridx & gridy : là vị trí cột, hàng của đối tượng

-weightx & weighty : độ rộng thêm vào theo cột, hàng

-gridwidth & gridheight : số cột và hàng một đ ối tượng chiếm giữ

-fill : quy định đ ối tượng được phủ đầy vào khoảng trống các ô chiếm giữ {BOTH / NONE / HORIZONTAL /

VERTICAL}

-anchor : căn c hỉnh đối tượng trong phần hiển thị {EAST / WEST/ CENTER}

Bài 3 Lập trình GUI trong Java

F3.5 Quản lý Layout

l Minh họa lưới GridBagConstraints như sau:

l Thêm đối tượng kiểu Layout này phải kèm nó tương ứng:

add ( Component c, Object cons traints);

l Ngoài ra có thể quản lý theo kiểu không Layout, phải đặt nulltrong thiết lập Layout, khi đó phải căn

chỉnh vị trí tọa độ cho từng đối tượng trên cửa sổ (như thiết kế giao diện trong Windows)

gridx=2, gridy=1

gridx=1, gridy=0,gridwidth=2

gridx=2, gridy=1,gridwidth=2gridx=2, gridy=1,gridheight=2

Bài 3 Lập trình GUI trong Java

F3.5 Quản lý Layout

Ví dụ: Lập trình hai cửa sổ sử dụng hai kiểu Layout là GridLayout và GridBagLayout để định vị các điều khiển đơn giản JLabel,

JTextField / C3_VD4

Trang 17

l JPanel, là đối tượng Container để tổ chức và chứa các điều khiển trên cửa sổ, có một số phương

thức quan trọng sau:

-JPanel();

-setLayout( LayoutManager m);

-add( Component c, Object constraints);

l Có thể sử dụng JPanel lồng nhau, kết hợp với Layout để sắp xếp các đối tượng theo ý muốn trên cửa

sổ

Panel 1, CYAN

Panel 0, BLUE

Panel 2, MAGENTA

Bài 3 Lập trình GUI trong Java

F3.5 Quản lý Layout

Ví dụ: Lập trình sử dụng Layout với các Panel lồng nhau để lập cửa sổ trên / C3_VD5.

events

Bài 4 Lập trình GUI cơ bản

l Swing cung cấp các đối tượng GUI cơ bản, đều kế thừa từAbstractButton.

-JLabel: đối tượng văn bản tĩnh

-JTextField / JTextArea / JPasswordField: đối tượng nhập văn bản một hoặc nhiều dòng

-JButton: đối tượng nút lệnh

-JCheckBox: đối tượng ô kiểm tra

-JRadioButton: đối tượng ô lựa chọn

l Mỗi đối tượng đều có phương thức tạo để thiết lập thuộc tính văn bản hiển thị, tạo và đặt lên cửa sổ

bằng phương thức add( )

l Các bước tạo đối tượng Coponent trên Container như sau:

Bước 1) Tạo một đối tượng Component, sử dụng phương thức tạo nếu cần

tham_chiếu = new tên_lớp_component ( văn_bản , độ_rộng );

Bước 2) Sử dụng phương thức add( ) trên Container để thêm

add( tham_chiếu );

l Có thêm thực hiện trực tiếp như sau:

add ( newtên_lớp_component ( văn_bản ) );

Bài 4 Lập trình GUI cơ bản

F4.1 Các đối tượng đơn giản

Trang 18

l Các phương thức xử lý cơ bản trên Component gồm:

*.getText() / setText() : lấy / đặt văn bản trong đối tượng

*.isSelected() : cho biết trạng thái chọn hay không

*.setSelected( boolean b) : đặt trạng thái chọn

*.setEnabled(booleanb) : tắt / bật trạng thái kích họat component

*.getBorder() / setBorder(Borderb) : lấy / đặt kiểu đường viền

*.getBounds(), getX(), getY(), getHeight(), getWidth() : lấy vị trí và kích thước

*.getListeners() : cho mảng các đối tượng nghe sự kiện đăng ký với component

*.setFont(Fontf) / setBackground(Colorc) / setForeground(Colorc),

*.setTooltipText(String t) / setVisible(booleanb),

*.setPreferredSize(Dimension d) : đặt kích thước cố định

*.setOpaque(booleanb) : đặt chế độ nền đặc/trong suốt của component,

Bài 4 Lập trình GUI cơ bản

F4.1 Các đối tượng đơn giản

Ví dụ: Lập trình tạo các đối tượng cơ bản trên JFrame / B4_VD1.

l Sự kiện được phát sinh từ một đối tượng nguồn (source), sau đó được xử lý bởi một đối tượng nghe (listener)

đươc gọi là mô hình delegation trong Java.

l Có ba thành phần chính:

- Nguồn sự kiện (source) : là các đối tượng GUI (component), sự kiện là một đ ối tượng trong Java được tạo ra

bởi các c omponent và chuyển tới các đ ối tượng nghe

- Nghe sự kiện (listener) : là đối tượng đ ược đ ăng ký với nguồn sự kiện để nhận và xử lý các sự kiện phát sinh

l Một đối tượng nghe có thể được đăng ký tới nhiều nguồn, một nguồn có thể đăng ký

cho nhiều đối tượng nghe

l Các sự kiện có thể được chia thành các loại sau:

- Sự kiện chuột (down, up, click, move, drag)

- Sự kiện phím (press, release, type)

- Sự kiện tác-động : chọn nút lệnh, đánh dấu ô checkbox, chọn nút radio, kéo trượt thanh cuộn,

l Các lớp đối tượng sự kiện tương ứng là ( java.awt.event.*)

-MouseEvent : đối tượng sự kiện chuột với các phương thức

+ getButton() :cho biết nút được bấm {NOBUTTON, BUTTON1/2/3}+ getPoint() / getX() / getY() : lấy tọa độ chuột

-ActionEvent : đối tượng sự kiện trên các đối tượng giao diện

+ getActionCommand() : lấy xâu chứa lệnh liên quan đến sự kiện

+ getWhen() : lấy thời điểm phát sinh sự kiệnBài 4 Lập trình GUI cơ bản

F4.2 Xử lý sự kiện

Trang 19

-KeyEvent : đối tượng sự kiện bàn phím

+ getKeyChar() : lấy ký tự được gõ

+ getKeyCode() : lấy mã phím được gõ { VK_UP, VK_DOWN, VK_A, }

+ isActionKey() : cho biết có là phím điều khiển

- Ngoài ra có các sự kiện như WindowEvent, MouseWheelEvent,

l Các giao diện/ lớp để nghe và xử lý sự kiện gồm:

-MouseListener/ MouseAdapter: xử lý click c huột

-MouseMotionListener/ MouseMotionAdapter: xử lý dịch chuyển chuột

-MouseWheelListener: xử lý nút giữa chuột

-KeyListener/ KeyAdapter: xử lý bàn phím

-ActionListener: xử lý sự kiện tác động

-WindowListener/ WindowAdapter: xử lý sự kiện trên cửa sổ

-ItemListener: xử lý sự kiện thay đổi trạng thái chọn trên một số component

l Chúng ta có thể cài đặt giao diện ( Listener) hoặc sử dụng lớp ( Adapter) ở trên để tạo

các đối tượng nghe và xử lý sự kiện tương ứng

Bài 4 Lập trình GUI cơ bản

Bài 4 Lập trình GUI cơ bản

F4.3 Sự kiện Action

Ví dụ: Lập trình xử lý sự kiện Action trên JButton / B4_VD2

l Cách xử lý sự kiện MouseEvent, MouseMotionEvent

void mouseClicked( MouseEvent e) { … }

void mouseEntered( MouseEvent e) { … }

void mouseExited( MouseEvent e) { … }

void mousePressed( MouseEvent e) { … }

void mouseRelease( MouseEvent e) { … }

(Bước 2)

(Khi có sự kiện)Bài 4 Lập trình GUI cơ bản

F4.4 Sự kiện Mouse

Trang 20

Bài 4 Lập trình GUI cơ bản

void windowActivated( WindowEvent e) { … }

void windowClosed( WindowEvent e) { … }

void windowClosing( WindowEvent e) { … }

void windowDeactivated( WindowEvent e) { … }

void windowDeiconified( WindowEvent e) { … }

void windowIconified( WindowEvent e) { … }

void windowOpened( WindowEvent e) { … }

e

Đăng ký

* addWindowListener (

WindowListenera );

(Bước 2)

(Bước 1)

(K

hi c ó sự kiệ

n x ảy ra)

Bài 4 Lập trình GUI cơ bản

(Bước 2)

(Bước 1)

(K

hi c ó sự kiệ

Trang 21

Bài 4 Lập trình GUI cơ bản

(Frame:GridBagLayout, Panel:GridBagLayout)

Panel 3

{gridx=1, gridy=1, gridwidth=1}

Panel 2

{gridx=0,

gridy=1, gridwidth=1}

Panel 4

{gridx=0, gridy=2, gridwidth=2}

Panel 5

{gridx=0,

gridy=3, gridwidth=2}

Bài 4 Lập trình GUI cơ bản

F4.8 Bài tập

l Ví dụ 1: Tạo một nút lệnh và lập trình xử lý sự kiện chọn nút lệnh đó

JButtonbutton1=new JButton ( "Event te st" );

button1.addActionLi stener ( new ActionLi stener () {

public void actionPerformed ( ActionEvente ){

System.out.prin t( "\n Click on button1 " );

} });

l Ví dụ 2: Tạo một textfield và lập trình xử lý sự kiện gõ phím

JTextFieldtext = new JTextFie ld ( 5 );

text.addKeyLi stener ( new KeyAdapter () {

public void keyTyped ( KeyEvente) {

System.out.prin t( "\n Key char = " + e.getKeyChar() );

} });

l Ví dụ 3: Tạo một panel và lập trình xử lý sự kiện chuột

JPanelpanel = new JPanel ();

panel.addMou seMo tionLi stener ( new Mou seMotio nLi stener (){

public void mouseDragged ( Mo useEvente ){

System.out.prin t("\n Dragged : x="+e.getX()+", y="+e.getY());

}

public void mouseMoved ( MouseEvente ){ }

});

panel.addMou seLi stener ( new Mou seAdapter (){

public void mouseClicked ( Mouse Evente ){

System.ou t.print("\n Clicked button="+e.getButton());

} });

Bài 4 Lập trình GUI cơ bản

F4.9 Ví dụ về xử lý sự kiện

Trang 22

Bài 5 Lập trình GUI nâng cao

l JComboBox, JList: danh sách chọn (list) hoặc có thể nhập (combobox)

- Phương thức tạo: JComboBox(), , JList(),

- Thêm mục chọn vào danh sách:

JComboBox.add Item(Object item);

JList.setListData(Object[] items);

- Xóa bỏ mục chọn trong danh sách:

JComboBox.removeItem(Object item), removeItem(int index), removeAllItems();

JList.setListData(null);

- Xác định mục đang được chọn:

JComboBox.getSelectedIndex(), getSelectedItem(), getSelectedObjects();

JList.getSelectedIndex(), getSelectedValue(), getSelectedValues();

- Xử lý sự kiện ListSelectionListener, ActionListener,

JList.addListSelectionListener(ListSelectionListener listener); (sau khi chọn)JComboBox.add ActionListener(ActionListener listener); (sau khi chọn)JComboBox.add ItemListener(ItemListener alistener);

- Một số phương thức xử lý khác:

JComboBox.setEditable(boolean b);

Bài 5 Lập trình GUI nâng cao

F5.1 Các đối tượng dạng List

Ví dụ: Tạo hai đối tượng Combo chọn tháng và List chọn ngày trong tuần / B5_VD1

l JDialog, JOptionPane, JFileChooser, JColorChooser: các hộp thoại, thông báo

- JDialog : tạo các hộp thoại, như Frame nhưng có thể đặt chế độ Modal

- JOptio nPane : hiện các thông báo với người dùng

- JFileChooser, JColorChooser : hộp thoại chọn tệp tin và màu sắc

l Một số phương thức xử lý cơ bản:

JDialog.JDialog( owner , title , modal );

void JOptionPane showMessageDialog( parent , message , title , type );

int JOptionPane showConfirmDialog( parent , message , title , type );

int JFileChooser.showOpenDialog( parent ); {CANCEL_OPTION, }

int JFileChooser.showSaveDialog( parent ); {APPROVE_OPTION, }

File JFileC hooser.getSelectedFile();

File[] JFileC hooser.getSelectedFiles();

String JFileC hooser.getName(File file);

Color JColorChooser showDialog( parent, title, color_init );

l Các phương thức đậm nghiêng là ở dạng tĩnh (static)

Bài 5 Lập trình GUI nâng cao

F5.2 Các đối tượng dạng Dialog

Ví dụ: Tạo một Dialog có nút chọn màu, chọn file, kết thúc có thông báo / B5_VD2

Trang 23

l JMenu, JMenuBar, JMenuItem, JPopupMenu, JCheckBoxMenuItem, JRadioButtonMenuItem: tạo

và xử lý trên đối tượng thực đơn, thực đơn ngang, mục chọn thực đơn, thực đơn dọc

l Phương thức tạo thực đơn, mục chọn thực đơn,

JMenu(String text); JMenuBar(); JMenuItem(String text); JPo pupMenu(String text);

JCheckBoxMenuItem(String text); JRadioButtonMenuItem(String text);

l Phương thức thêm các mục chọn vào thực đơn:

JMenuBar.add(JMenumenu); (thêm một thực đơn dọc vào thực đơn ngang)

*.add(JMenuItemitem), add(Stringtext); (thêm mục chọn cho JMenu / JPopupMenu)

*.addSeparator(); (thêm dòng phân cách giữa các mục chọn)

l Phương thức xử lý sự kiện trên thực đơn (mỗi mục chọn như là một Component):

*.addActionListener(ActionListeneralistener); (cho JMenuItem)

*.addMenuListener(MenuListener mlistener); (cho JMenu )

- Trong đó, phươ ng thức của giao diện xử lý sự kiện thực đơ n gồm:

MenuListener{ menuCanceled(MenuEvent e); menuDeselected( ); menuSelected( ); }

l Đặt thực đơn lên cửa sổ (Frame/JFrame): *.setMenuBar(JMenuBarmenubar);

l Hiển thị thực đơn dọc (JPopupMenu) dạng ngữ cảnh : *.show( parent , x, y );

Bài 5 Lập trình GUI nâng cao

F5.3 Các đối tượng dạng Menu

l Sơ đồ liên quan giữa các đối tượng thực đơn và xử lý sự kiện như sau

Bài 5 Lập trình GUI nâng cao

F5.3 Các đối tượng dạng Menu

Ví dụ: Tạo thực đơn ngang, thực đơn dọc và xử lý các mục chọn tương ứng

Thực đơn dọc được hiển thị khi bấm chuột phải lên cửa sổ /B5_VD3.

l JScrollPane, JSplitPane, JTabbedPane, JOptionPane: các

đối tượng pane hoạt động như là một bảng để chứa và tổ

chức quản lý các đối tượng khác

l JScrollPane có thể cuộn các đối tượng khác trong một khung

nhìn (viewport), một số phương thức xử lý:

*.JScrollPane( Componentview ); tạo và đặt nội dung cho khung nhìn

*.setColumnHeaderView(Component tđ_cột);

*.setRowHeaderView(Component tđ_hàng);

*.setCorner(Stringgóc, Component đối_tượng );

l JSplitPane chia khung nhìn thành hai phần (theo hàng hoặc

cột), mỗi phần hiển thị một đối tượng nào đó, một số phương

thức xử lý:

*.SplitPane( int hướng_chia, Componentleft,

Componentright );

*.setDividerSize(intdsi ze), getDividerSize();

*.setDividerLocation(intdloc);

*.setLeftComponent(Componentc), get ();

Bài 5 Lập trình GUI nâng cao

F5.4 Các đối tượng dạng Panel

Trang 24

l JTabbedPane chia thành các thẻ hiển thị cho mỗi panel, như hình bên, có các phương thức xử lý:

*.JTabbedPane(); tạo một tabbed panel

*.addTab( Stringtitle, Componentc); thêm một thẻ mới vào tabbed panel

*.getSelectedIndex(); lấy thẻ đang được chọn trên tabbed panel

*.getTitleAt(intindex); lấy tiêu đề tại thẻ thứ index

*.setTitleAt(intindex, String title); đặt tiêu đề cho thẻ

*.setToolTipTextAt(intindex, String title); đặt tooltip text cho thẻ

Bài 5 Lập trình GUI nâng cao

F5.4 Các đối tượng dạng Panel

JScrollPane JScrollPane

bên phải là panel

Ví dụ : Lập trình tạo ba kiểu panel như trên để thử nghiệm trên JFrame /B5_VD4.

Bài 5 Lập trình GUI nâng cao

F5.4 Các đối tượng dạng Panel

l JProgressBar, JSlider, JSpinner: các đối tượng tiến trình, thanh trượt, tăng giảm

l Các phương thức xử lý cơ bản:

JProgressBar(int orient, int min, int max);

JSlider(int orient, int min, int max, int value);

JSpinner(SpinnerModelsm);

int *.getValue();

*.addChangeListener(ChangeListenercl);

l Trong đó, các giao diện liên quan gồm:

- SpinnerModel có ba loại cơ bản SpinnerListModel, SpinnerNumberModel, SpinnerDateModel để đặt

spinner làm việc trên danh sách, số hoặc ngày tháng Mỗi model có phương thức tạo sau để thiết lập:

SpinnerListModel(Object[] values);

SpinnerNumberModel(double val, double min,

double max, double step);

SpinnerDateModel(val, start, end, calendar);

- Giao diện ChangeListener { stateChanged(ChangeE vente); }

Bài 5 Lập trình GUI nâng cao

F5.5 Các đối tượng dạng Bar

Trang 25

Bài 5 Lập trình GUI nâng cao

F5.6 Các đối tượng dạng Bar

l JToolBar: tạo thanh công cụ, nó chứa tất cả các đối tượng GUI có thể như một Container, các

phương thức xử lý cơ bản trên thanh công cụ:

JToolBar(int orient); (tạo thanh công cụ mới)

JToolBar.setFloatable (boolean b); (đặt chế độ kéo thả)

JToolBar.setMargin(Insets m); (đặt độ rộng viền xung quanh)

JToolBar.add(Componentc); (thêm các đối tượng vào thanh công cụ)

JToolBar.addSeparator(), addSeparator(Dimensionsize); (thêm khoảng cách)

Ví dụ : Lập trình tạo ba đối tượng trên để thử nghiệm /B5_VD5.

l JTree: tạo cây hiển thị, nó hoạt động theo cơ chế độc lập với dữ liệu được hiển thị thông qua một

mô hình (model) để liên kết như sau:

Bài 5 Lập trình GUI nâng cao

F5.6 Các đối tượng dạng Tree

Root

Child1

Child2

Child1.1 Child1.1

addTreeModelListener(…),…

DefaultTreeModel

TreeNode MutableTreeNode

DefaultMutableTreeNode

JTree

Data

l JTree(TreeNode root); (phương thức tạo cây)

- JTree chứa các nút (Node), mỗi nút trên cây được tham chiếu bởi TreeNode, đối tượng nút có thể sử

dụng lớp DefaultMutableTreeNode.

l Các phương thức cơ bản của DefaultMutableTreeNode:

*.add(TreeNodechild); (thêm một nút con)

*.getChildCount(); (lấy số con của nút)

*.getChildAt(int index); (lấy nút con thứ index)

*.getParent(); (lấy nút mẹ)

*.isLeaf(); (kiểm tra có phải nút lá không)

l JTree.getModel(); trả về model liên kết giữa dữ liệu với cây (TreeModel)

l Xử lý sự kiện trên cây sử dụng:

*.addTreeModelListener(TreeModelListenertml);

- Với giao diện TreeModelListener gồm 4 phương thức xử lý sự kiện như sau:

TreeModelListener{

};

Bài 5 Lập trình GUI nâng cao

F5.6 Các đối tượng dạng Tree

Trang 26

Bài 5 Lập trình GUI nâng cao

F5.6 Các đối tượng dạng Tree

Ví dụ : Lập trình tạo một thanh công cụ và một cây minh họa như hình trên / B5_VD6

l JTable: bảng dữ liệu, hoạt động qua mô hình bảng kết nối tới dữ liệu cần hiển thị

l Các phương thức xử lý cơ bản trên JTable:

- Phương thức tạo bảng:

JTable(Object [][] data, Object [] tên_cột); JTable(TableModel tm);

- Phương thức lựa chọn trên bảng:

clearSelection(), changeSelection(int row,int col, boolean tog, boolean ext);

getSelectedColumn(), getSelectedRow(),

Data TableModel

Bài 5 Lập trình GUI nâng cao

F5.7 Các đối tượng dạng Table

- Phương thức xác định tính chất bảng:

- Phương thức đặt lại các tham số bảng:

Bài 5 Lập trình GUI nâng cao

F5.7 Các đối tượng dạng Table

Trang 27

l Các phương thức cho giao diện TableModel như sau:

getColumnCount(); xác định số cột của bảng dữ liệu

getColumnName(int idx); xác định tên các cột

getRowCount(); xác định số hàng

getValueAt( int row, int col ); xác định dữ liệu tại ô hàng row, cột col

setValueAt( Object data, int row, int col); đặt dữ liệu cho ô hàng row, cột col

fireTableChanged( TableModelEvente); thông báo có sự thay đổi dữ liệu trên bảng, với TableModelEvent mô tả sự

thay đổi qua phương thức tạo sau:

TableModelEvent( TableModeltm, int firstRow, int lastRow, int cols);

TableModel

TableModelEvent

Bài 5 Lập trình GUI nâng cao

F5.7 Các đối tượng dạng Table

l Ngoài ra, có các đối tượng lớp hỗ trợ thêm như:

Font: mô tả và xử lý phông chữ hiển thị trên Component

Color: mô tả màu nền, màu chữ, trên Component

Bài 5 Lập trình GUI nâng cao

F5.7 Các đối tượng dạng Table

Ví dụ: Lập trình tạo bảng với dữ liệu dạng tĩnh của lớp / B5_VD7

Trang 28

l Java API cung cấp lập trình đồ họa phẳng Graphic2D như vẽ hình, văn bản, hình ảnh, gồm các kỹ thuật

chính như:

- Hợp nhất kỹ thuật tô màu (rendering model) trên màn hình và máy in

- Vẽ các hình hình học cơ bản

- Trộn các hình chồng lên nhau

- Quản lý cơ chế màu,

l Một số đặc tính kỹ thuật đồ họa 2D như sau:

setStroke setPaint

setComposite setTransform

setClip setFont

setRenderingHints

Bài 6 Các kỹ thuật nâng cao

F6.1 Đồ họa Graphics2D

l Cơ chế vẽ được thực hiện trong phương thức paint() của các đối tượng Component, chúng ta có thể

yêu cầu thực hiện phương thức này bằng lệnh gọi repaint(), minh họa sau:

l Cơ chế đồ họa được thực hiện trên đối tượng Graphics, có thể thay bằng đối tượng của Graphics2D,

trong gói java.awt.*;

Components

JFrame, JLabel, JTextBox, JPanel,…

Component.paint (Graphicsg) {

Xử lý đồ họa qua Graphics }

*.drawPolygon( int[] xs, int[] ys, int n);

*.drawPolyline( int[] xs, int[] ys, int n);

*.drawRect( x,y,w,h ); drawRoundRect( x,y,w,h, arcW, arcH );

l Các lệnh vẽ (draw) có thể thay bằng lệnh tô (fill) màu cho các hình vẽ

*.drawString( Strings, int x, int y); vẽ xâu ký tự tại tọa độ x,y

l Vẽ ảnh lên đối tượng đồ họa bằng lệnh sau:

*.drawImage( Imageimg, int x, int y, ImageObobs); tọa độ vẽ x,y, quan sát obs có thểnull

Bài 6 Các kỹ thuật nâng cao

F6.1 Đồ họa Graphics2D

Ví dụ: Lập trình xử lý chuột để khi kéo chuột trái vẽ các chấm tròn / B6_VD1

Trang 29

l Đối tượng lớp Image để mô tả và tổ chức dữ liệu ảnh, được lấy từ phương thức:

Image getImage( Stringfilename ); hoặc getImage( URLurl );

l Lệnh getImage trên sử dụng đối tượng Toolkit, xác định bằng phương thức:

Toolkit java.awt.Toolkit.getDefaultToo lkit();

l Khi đọc ảnh vào máy, phải dùng đối tượng đồng bộ có tên MediaTracker, các phương thức cơ bản sau:

MediaTracker( Component com ); tạo với com là đối tượng để vẽ ảnh,

* addImage( Image img , int id ); thêm đối tượ ng ảnh để đồng bộ với số hiệu là id,

* waitForID( int id ); chờ đồng bộ để nạp ảnh vào máy theo số hiệu id

Bài 6 Các kỹ thuật nâng cao

F6.1 Đồ họa Graphics2D

Ví dụ: Lập trình có một nút lệnh để chọn tệp tin hình ảnh hiển thị lên cửa sổ / B6_VD2

Images (GIF, JPEG, PNG)

Toolkit

getDefaultToolkit()

ImagedrawImage Graphics

Đồng bộ bằng đối tượng MediaTracker

E

Checked exceptions Runtime exceptions Errors

Lỗi không biết trước

Lỗi có thể khắc phụcLỗi không thể khắc phục

l Có hai cách xử lý ngoại lệ ?

Exceptions try {…}

catch (…) {…}

finally {…}

throws …

l Ví dụ về xử lý ngoại lệ

int [] x = new int[5];

for (int i=0; i<6; i++) {

Trang 30

l Cơ chế ngoại lệ giữa các lớp đối tượng kế thừa

Bài 6 Các kỹ thuật nâng cao

l Lớp dẫn xuất có thể: (1) không đưa ra ngoại lệ; (2) đưa ra ngoại lệ lớp cơ sở; (3) đưa ra ngoại lệ là

dẫn xuất của ngoại lệ cơ sở

l Lập trình lớp đối tượng ngoại lệ ?

l Ví dụ một lớp ngoại lệ:

classMyException extends Exception{

public voidshow() { System.out.print( “This is my exception” ); }}

Lập trình một lớp đối tượng ngoại

lệ mới kế thừa lớp trên

l Cơ chế vào ra dữ liệu theo dòng (stream)?

A

Z

l Cơ chế bao nhau của các dòng ( thấp/cao ) vào ra ?

Bài 6 Các kỹ thuật nâng cao

F6.3 Xử lý vào ra

Ngày đăng: 15/12/2021, 09:37

HÌNH ẢNH LIÊN QUAN

Sơ đồ liên kết các giao diện ở tầng Interface Layer - Tài liệu học tập dành cho sinh viên - Lậ p trình Java
Sơ đồ li ên kết các giao diện ở tầng Interface Layer (Trang 57)
Sơ đồ phân tầng trong kiến trúc hệ thống WM - Tài liệu học tập dành cho sinh viên - Lậ p trình Java
Sơ đồ ph ân tầng trong kiến trúc hệ thống WM (Trang 57)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w