Thứ Ba, 1 tháng 4, 2008

Bài tập Cấu Trúc Dữ Liệu & Thuật Toán

Chương I: Tìm Kiếm


//Tim kiem tuyen tinh
Bài 1: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. In ra tất cả các phần tử nào có giá trị bằng x trong mảng.

Bài 3: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết số x đó có trong mảng hay không.

Bài 4: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết có bao nhiêu phần tử của mảng bằng x.

Bài 5: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Liệt kê các số <>

Bài 6: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết có số nào <>

Bài 7: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết có bao nhiêu phần tử <>

Bài 8: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết có bao nhiêu phần tử > x trong mảng.

Bài 9: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Cho biết có bao nhiêu số chẵn trong mảng.

Bài 10: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Cho biết có số lẻ trong mảng hay không

Bài 11: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Đếm xem có bao nhiêu số có 2 chữ số .

Bài 12: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Liệt kê các số mà bình phương của nó <>

Bài 13: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và một số x. Liệt kê các phần tử là ước của x trong mảng.

Bài 14: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và một số x. Cho biết có bao nhiêu phần tử là bội của x có trong mảng.

Bài 15: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Liệt kê tất cả các số nguyên tố có trong mảng.

Bài 16: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Liệt kê các số nguyên tố > 20 có trong mảng.

Bài 17: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và 1 số x. Liệt kê các số nguyên tố <>

//Tim kiem nhị phân

Bài 18: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và 1 số x. Dùng thuật toán tìm kiếm nhị phân liệt kê các phần tử bằng x có trong mảng.

Bài 19: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và 1 số x. Dùng thuật toán tìm kiếm nhị phân cho biết x có trong mảng hay không.

Bài 20: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và 1 số x. Dùng thuật toán tìm kiếm nhị phân cho biết x có trong mảng hay không.


Bài tập Cấu Trúc Dữ Liệu & Thuật Toán

Chương I: Tìm Kiếm

//Tim kiem tuyen tinh
Bài 1: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. In ra tất cả các phần tử nào có giá trị bằng x trong mảng.

Bài 3: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết số x đó có trong mảng hay không.

Bài 4: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết có bao nhiêu phần tử của mảng bằng x.

Bài 5: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Liệt kê các số < x có trong mảng.

Bài 6: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết có số nào < x trong mảng hay không.

Bài 7: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết có bao nhiêu phần tử < x trong mảng.

Bài 8: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào), và một số x. Cho biết có bao nhiêu phần tử > x trong mảng.

Bài 9: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Cho biết có bao nhiêu số chẵn trong mảng.

Bài 10: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Cho biết có số lẻ trong mảng hay không

Bài 11: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Đếm xem có bao nhiêu số có 2 chữ số .

Bài 12: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Liệt kê các số mà bình phương của nó < 100.

Bài 13: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và một số x. Liệt kê các phần tử là ước của x trong mảng.

Bài 14: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và một số x. Cho biết có bao nhiêu phần tử là bội của x có trong mảng.

Bài 15: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Liệt kê tất cả các số nguyên tố có trong mảng.

Bài 16: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào). Liệt kê các số nguyên tố > 20 có trong mảng.

Bài 17: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và 1 số x. Liệt kê các số nguyên tố < x có trong mảng.


//Tim kiem nhị phân
Bài 18: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và 1 số x. Dùng thuật toán tìm kiếm nhị phân liệt kê các phần tử bằng x có trong mảng.

Bài 19: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và 1 số x. Dùng thuật toán tìm kiếm nhị phân cho biết x có trong mảng hay không.

Bài 20: Viết chương trình nhập vào 1 mảng có n phần tử (n do người dùng nhập vào) và 1 số x. Dùng thuật toán tìm kiếm nhị phân cho biết x có trong mảng hay không.





Thứ Bảy, 23 tháng 2, 2008

Class, Object Và Vấn Đề Đa Hình trong Java

Java là một ngôn ngữ thuần hướng đối tượng. Nó mang đầy đủ các đặc tính của một ngôn ngữ hướng đối tượng như:

  • Encapsulation – đóng gói: Hides the implementation details of an object and therefore hides its complexity.
  • Abstraction – trừu tượng hóa: we just focuses on the essential features of an object.
  • Inheritance – kế thừa: creates a hierarchy of clauses and helps in reuse of attibutes and methods of class.
  • Polysmorphism – đa xạ: performs different reactions in objects in response to the some method

Các bổ tử của một method:

* public: cỏ thể truy cập từ bên ngoài class

* protected: chỉ được truy cập từ class đó và các class kế thừa từ class đó

* private: chỉ được truy cập trong class định nghĩa

* static: phương thức chung cho mọi mẫu của class

* abstract: không cài đặt gì trong class, việc cài đặt được giao cho các class đế thừa của class đó

* final: không cho phép overloading ở các class dẫn xuất

* native: một cài đặt phụ thuộc một ngôn ngữ khác, như C hay hợp ngữ

* synchronized: dùng để chỉ một phương thức tới hạn ngăn các tác động của các object khác lên object trong khi việc đồng bộ hóa đang thực hiện.

Các bổ tử của một class:

* public: lớp có thể truy cập từ các lớp khác trong package

* final: lớp không cho phép tạo dẫn xuất

* abstract: lớp trừu tượng

Lớp trừu tượng (abstract):

class không cụ thể, chứa những method nhưng không có dòng lệnh thi hành phương thức đó, việc thi hành method được giao lại cho các lớp kế thừa lớp đó

Ví dụ: thức ăn là một class trừu tượng cho các class cụ thể như cơm, cháo.

Class thức ăn có phương thức mùi vị nhưng khi nói mùi vị của thức ăn chung chung ta không định nghĩa được, nhưng class cơm kế thừa từ class thức ăn thì có mùi vị là khô, class cháo có mùi vị là có mùi vị là lỏng






Một lần nữa chúng ta khẳng định abstract là một class không thể biết và định nghĩa các phương thức nhưng không có sự thi hành cụ thể, việc thi hành các phương thức này được giao lại cho các class kế thừa. Đây là tư tưởng chính cho vấn đề đa hình, đa xạ trong Java sẽ được đề cập ở phần sau.


Giao diện (interface):

Interface là một khái niệm mới trong các ngôn ngữ lập trình hiện đại như C++, C#. Interface là giao diện của một lớp đối tượng.

Interface của một class là phần đặc tả các method của class đó nhưng không bao gồm phần cài đặt, việc cài đặt các method này được giao lại cho các class kế thừa từ các interface này.

Một class kế thừa một interface nào thì bắt buộc phải cài đặt tất cả các method của interface đó.

Một đối tượng có thể đưa ra nhiều interface của mình, và class kế thừa interface nào phải cài đặt đầy đủ các method của interface đó. Java không cho phép đa kế thừa (một class của Java không thể có hơn một class cha) nhưng nhờ đặc điểm này (interface) cho phép cài đặt nhiều giao diện để thừa hưởng thêm các vùng và method của những interface này.

Interface được khai báo như là một lớp nhưng các thuộc tính là hằng (final) và các phương thức là abstract (có nghĩa là các phương thức đều rỗng dù không có từ khóa abstract) và trong các lớp sử dụng interface phải cài đặt các phương thức này

Để một class kế thừa một giao diện ta dùng từ khóa implements (thay vì extends)

public interface MyInterface {

static final String s = "Interface";

public void outText();

}
//---------------------------
public
class Ex1 implements MyInterface{

public void outText(){
System.out.println("Ex1 thua ke interface");
}
}

//---------------------------
public
class Ex2 implements MyInterface{

public void outText(){
System.out.println("Ex2 thua ke interface");
}

}
//---------------------------

public
class Interface {

public static void main(String args[]){

Ex1 e1 = new Ex1();
e1.outText();
Ex2 e2 =
new Ex2();
e2.outText();
}
}

Đa hình trong Java:

Phát biểu bài toán:

Một công ty có 2 loại nhân viện là kỹ sư và công nhân, mỗi loại nhân viên có các thuộc tính chung như tên, lương cơ bản nhưng có phương thức tính lương khác nhau với kỹ sư hệ số lương là 2 và công nhân hệ số lương là 1. Viết chương trình tính lương nhân viên cho công ty

Mô hình hóa:

Phân tích theo hướng đối tượng ta có 2 class chính là class kỹ sư và class công nhân cùng một class chung là class nhân viên. Hai class kỹ sư và công nhân cùng kế thừa class chung là nhân viên. Vấn đề phát sinh là mỗi class có cùng method tính lương nhưng cách tính lại khác nhau. Một trong các cách giải quyết là dùng đặc tính đa hình, đa xạ trong hướng đối tượng (cụ thể ở đây là Java)

abstract class nhanVien {

protected String ten = null;
protected int lcb = 0;
abstract int tinhLuong();
}

//----------------------------
public
class congNhan extends nhanVien{

public congNhan(){
this.ten = "Cong nhan B";
this.lcb = 100;
}

public int tinhLuong(){
return (this.lcb * 1);
}
}

//---------------------------

public class kySu extends nhanVien{

public kySu(){
this.ten = "Ky su A";
this.lcb = 100;
}

public int tinhLuong(){
return (this.lcb * 2);
}
}
//---------------------------

public
class Main {

public static void main(String args[]){

nhanVien a;
a =
new congNhan();
System.
out.println(a.tinhLuong());
a =
new kySu();
System.
out.println(a.tinhLuong());
}
}

Chúng ta tạo một biến a kiểu nhanVien nhưng khi cần sử dụng a là công nhân hay kỹ sư chúng ta có thể new với class tương ứng, và khi tính lương không cần quan tâm dùng method tinhLuong() của class nào mà chỉ cần ghi a.tinhLuong().

Thứ Hai, 18 tháng 2, 2008

Tài liệu tham khảo J2ME

Đây là đề tài tham khảo bao gồm các thành phần cơ bản của công nghệ J2ME rất hữu ích cho bước đầu làm quen với J2ME LapTrinhThietBiDiDongVoiJ2ME.pdf

Bài viết kỹ thuật hỗ trợ lập trình MobileGame 2007


Bài tập thực hành tin học căn bản

Đề cương thực hành tin học căn bản (Word, Excel) bao gồm phần cơ bản, nâng cao và một số đề thi thử tham khảo
download

Ebook về Java (J2SE - J2EE)

Core Java & J2SE

Tài liệu nước ngoài
AddisonWesley-TheJavaDevelopersAlman.chm (tham khảo các đoạn code mẫu)
aprogrammersguidetojavacertificatio.chm (sách dạy Java)
core java 2, volume i fundamentals 5th.pdf (ebook of sun)
core java 2, volume ii advanced features.pdf (ebook of sun)

Tài liệu tếng Việt
Java_LaptrinhOOP.doc (lập trình hướng đối tượng trong Java)
JavaUIVN.doc (Lập trình giao diện đồ họa trong Java)
CoreJava.rar (Loạt bài Core Java tiếng Việt)

Thứ Năm, 14 tháng 2, 2008

Dùng NetBean 6.0 lập trình J2ME

Sau bài Dùng Eclipse lập trình J2ME, mình xin giới thiệu tiếp làm thế nào đề lập trình J2ME với NetBean (một IDE lập trình Java do Sun phát triển)

Đề lập trình J2ME trên IDE NetBean chúng ta cần bộ NetBeans Mobility Pack và cần lưu ý là version của bộ Mobiliy phải tương ứng với version của NetBean đang sử dụng, cũng cần lưu ý là NetBeans Mobility Pack không thể chạy trên NetBeans IDE 5.5, nếu muốn chúng ta phải sử dụng NetBeans IDE 5.5.1.

Nếu không muốn quá rắc rối chúng ta có thể down bộ NetBeans 6.0.1 đã được tích hợp sẵn phần lập trình J2ME tại địa chỉ sau:

http://download.netbeans.org/netbeans/6.0/final/

Các bạn có thể chọn NetBeans IDE 6.0 Mobility (65Mb) hay Full edition (195 Mb), để nhỏ gọn chúng ta chọn bộ NetBeans IDE 6.0 Mobility, sau này muốn bổ sung thêm các phần khác các bạn có thể vào Tools/Plugin để cập nhật thêm.

Chúng ta cũng cần WTK: Một bộ giả lập máy di động trên máy tính, ở đây mình sẽ dùng Sun Wireless Toolkit (WTK), nó sẽ tạo ra một cái máy di động ảo trong máy tính, và các ứng dụng sẽ chạy trên cái máy ảo đấy (down tại http://java.sun.com/products/sjwtoolkit/download.html).

Sau khi đã cài đặt xong 2 phần đó, chúng ta bắt đầu viết ứng dụng J2ME trên NetBean

NetBean hỗ trợ chúng ta tạo ứng dụng MIDP bằng 2 cách là bằng Visual Mobile Designer (VMD) hay bằng Source Code Editor. Có thể hiểu là

· Visual Mobile Designer (VMD): hỗ trợ giao diện kéo thả một cách trực quan để thiết kế ứng dụng

· Source Code Editor: mọi việc đều viết code thủ công.

Mỗi cách đều có các ưu khuyết điểm riêng, trong bài viết này mình xin giới thiệu cả 2 cách tùy các bạn lựa chọn.

Creating a MIDP Application Using the Visual Mobile Designer

Chọn File/New Projects…., trong hộp thoại New Project chọn Mobility trong Categories và MIDP Application trong Projects, sau đó chọn Next

Nhập tên Project trong phần Project Name, thay đổi nơi lưu trữ Project trong Project Location

Click chọn Set as Main Project và Create Hello MIDlet (cả hai đã được chọn mặc định). Chọn Next

Chọn Sun Java Wireless Toolkit 2.5.2 for CLDC trong Emulator Platform (mặc định). Chọn Next.

Mở rộng thư mục “Configuration templates provided by installed CLDC platforms" và"Sun Java Wireless Toolkit 2.52 for CLDC”. Check chọn các configurations. Chọn Finish

Sau khi đã tạo xong Project, chúng ta bắt đầu viết code.

Các bạn chọn Screen View

Các bạn chú ý dòng chữ Hello, World!, giả sử chúng ta muốn hiển thị dòng chữ khác ((VD: “Hello, J2ME”), các bạn click chọn nó. Trong cửa sổ Properties, chọn Text field và nhập text muốn hiển thị (VD: “Hello, J2ME”)

Để chạy thử ứng dụng, các bạn chọn Run / Run Main Project (F6)

Creating a MIDP Application Using Source Editor

Chọn File/New Projects…., trong hộp thoại New Project chọn Mobility trong Categories và MIDP Application trong Projects, sau đó chọn Next

Nhập tên Project trong phần Project Name, thay đổi nơi lưu trữ Project trong Project Location

Click chọn Set as Main Project và bỏ chọn Create Hello MIDlet (được chọn mặc định). Chọn Next.

Chọn Sun Java Wireless Toolkit 2.5.2 for CLDC trong Emulator Platform (mặc định). Chọn Next.

Mở rộng thư mục “Configuration templates provided by installed CLDC platforms" và"Sun Java Wireless Toolkit 2.52 for CLDC”. Check chọn các configurations. Chọn Finish

Right click vào MyHelloMIDlet trong cửa sổ Explorer và chọn New/MIDlet

Nhập HelloMIDlet trong MIDlet name. Chọn Finish.

Double click vào file HelloMIDlet.java trong cửa sổ Explorer để hiển thị source code trong Editor.

Trong cửa sổ soạn thảo thay đổi như đoạn code sau

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class HelloMIDlet extends MIDlet implements CommandListener{

private Form mMainForm;

private Display display;

private Command cmdExit;

private StringItem str;

public HelloMIDlet() {

display = Display.getDisplay(this);

mMainForm = new Form("Chuong trinh so 2");

str = new StringItem(null,"Chao cac ban,MIDP");

cmdExit = new Command("Exit",Command.EXIT,0);

mMainForm.append(str);

mMainForm.addCommand(cmdExit);

mMainForm.setCommandListener(this);

}

public void startApp() {

display.setCurrent(mMainForm);

}

public void pauseApp() {

}

public void destroyApp(boolean unconditional) {

}

public void commandAction(Command c, Displayable s){

notifyDestroyed();

}

}

Thứ Tư, 13 tháng 2, 2008

Chương 2 – Phân Tích Code J2ME

Sau khi đã tìm hiểu kiến trúc J2ME ở chương 1 chúng ta bắt đầu khảo sát “lập trình J2ME như thế nào” hay nói rõ hơn là code của 1 ứng dụng J2ME được viết như thế nào.

Chương trình J2ME có thể xem là một ứng dụng thu nhỏ của J2SE (ứng dụng Java chạy trên Desktop) nên cũng bao gồm các đối tượng như Form, TextBox, ListBox,…. Các đối tượng này có thể được thêm vào ứng dụng bằng code hay các công cụ thiết kế trực quan khác và chúng ta cần biết chúng sẽ được thêm vào hiện thực như thế nào?

Như một ứng dụng J2SE để hiện thị một câu chào chúng ta có thể cần 1 Form, 1 chuỗi chứa câu chào vào cho hiển thị lên Form. Ở J2ME cũng vậy, chúng ta cùng phân tích 1 đoạn code mẫu sau đây:

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class HelooJ2ME extends MIDlet implements CommandListener{

private Form mMainForm;

private Display display;

private Command cmdExit;

private StringItem str;

public HelooJ2ME() {

// TODO Auto-generated constructor stub

display = Display.getDisplay(this);

mMainForm = new Form("Chuong trinh so 2");

str = new StringItem(null,"Chao cac ban,MIDP");

cmdExit = new Command("Exit",Command.EXIT,0);

mMainForm.append(str);

mMainForm.addCommand(cmdExit);

mMainForm.setCommandListener(this);

}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException

{

// TODO Auto-generated method stub

}

protected void pauseApp() {

// TODO Auto-generated method stub

}

protected void startApp() throws MIDletStateChangeException {

// TODO Auto-generated method stub

display.setCurrent(mMainForm);

}

public void commandAction(Command c, Displayable s){

notifyDestroyed();

}

}

Các bạn có thể dùng bất kì công cụ lập trình J2ME nào để chép đoạn code trên vào chạy thử nhưng để tiện theo dõi mình sử dụng IDE eclipse (các bạn có thể xem thêm bài Dùng eclipse lập trình J2ME)

Các bạn mở eclipse, chọn File/New/Project…. Trong hộp thoại New Project chọn J2ME/ J2ME Midlet Suite. Chọn Next, nhập tên Project, chọn Finish. Vậy là chúng ta đã tạo xong một Project J2ME, nhưng project này chưa có file .java nào cả hay nói khác đi là một project trống rỗng.

Để tạo thêm các file .java các bạn chọn Project mới tạo sau đó chọn File/New/Other… (hoặc Right Click vào Project mới tạo chọn File/New/Other… ). Trong hộp thoại New các bạn chọn J2ME/J2ME Midlet, chọn Next, nhập tên Midlet (không cần giống tên project) sau đó chọn Finish. Các bạn lưu ý file .java sẽ được chứa trong thư mục src của Project tương ứng.

Các bạn copy toàn bộ đoạn code trên vào file .java. Để chạy thử chúng ra right click vào file .java này chọn Run As/Emulated J2ME Midlet. Nếu không có lỗi các bạn sẽ thấy hình một chiếc di động hiện ra với câu chào “Chao cac ban,MIDP"

Bây giờ chúng ta bắt đầu phân tích đoạn code trên. Như Chương Tìm hiểu kiến trúc J2ME mình đã giới thiệu, một ứng dụng J2ME có khung chương trình chuẩn như sau

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class HelooJ2ME extends MIDlet {

public HelooJ2ME() {

// TODO Auto-generated constructor stub

}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException{

// TODO Auto-generated method stub

}

protected void pauseApp() {

// TODO Auto-generated method stub

}

protected void startApp() throws MIDletStateChangeException {

// TODO Auto-generated method stub

}

}

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

include các lớp cần thiết từ các thư viện CLDC và MIDP.

public class HelooJ2ME extends MIDlet implements CommandListener{

Một ứng dụng J2ME là một lớp kế thừa từ MIDlet nên chúng ta sử dụng “extends MIDlet”, do trong chương trình chúng ta có một nút exit nên chúng ta cần tạo một bộ lắng nghe sự kiện CommandListener mục đích là đón bắt sự kiện người dùng nhấn nút exit.

Các bạn lưu ý trong J2ME có 2 giao diện Listener chính cho mỗi MID Profile là: CommandListener và ItemStateListener mục đích là lắng nghe các sự kiện do người dùng tác động vào ứng dụng như bấm nút, nhập chữ vào textbox, thay đổi lựa chọn trên listbox,….. Phần này mình sẽ trình bày kĩ hơn ở chương sau “Giao diện người dùng cấp cao”

private Form mMainForm;

private Display display;

private Command cmdExit;

private StringItem str;

tạo một Form để hiển thị, đối tượng Display (chúng ta có thể xem Display là một bộ quản lý điều khiển và hiển thị các thông tin trên màn hình), Command để người dùng chọn Exit và StringItem chứa câu chào.

public HelooJ2ME() {

// TODO Auto-generated constructor stub

display = Display.getDisplay(this);

mMainForm = new Form("Chuong trinh so 2");

str = new StringItem(null,"Chao cac ban,MIDP");

cmdExit = new Command("Exit",Command.EXIT,0);

mMainForm.append(str);

mMainForm.addCommand(cmdExit);

mMainForm.setCommandListener(this);

}

Ở phương thức khởi dụng này chúng ta thấy, đầu tiên chúng ta lấy Display hiện thời gán cho biến display, tạo một Form mới với tiêu đề là ("Chuong trinh so 2"), tạo một câu chào và một nút nhấn Exit. Phần chi tiết tạo các thành phần trên mình sẽ trình bày ở chương “Giao diện người dùng cấp cao”

Sau đó chúng ta gắn thành phần str lên form bằng lệnh append() và nút exit bằng lệnh addCommand(), tạo bộ lắng nghe sự kiện cho nút exit bằng lệnh setCommandListener(this).

protected void startApp() throws MIDletStateChangeException {

// TODO Auto-generated method stub

display.setCurrent(mMainForm);

}

Phương thức startApp() đơn giản là đưa lên form đã gắn các thành phần kia lên màn hình bằng lệnh setCurrent().

public void commandAction(Command c, Displayable s){

notifyDestroyed();

}

Do chúng ta sử dụng giao diện CommandListener nên nhất thiết phải cài đặt phương thức

commandAction(Command c, Displayable s). Chúng ta có thể hiểu rằng khi một nút được nhấn lậpo tức phương thức commandAction(Command c, Displayable s) được gọi và các lệnh trong phương thức này sẽ được thực thi, ở đây đơn giản là thoát khỏi ứng dụng. Nếu chúng ta có nhiều nút nhấn thì cần sử dụng câu lênh if ví dụ:

if (c==cmdExit)

notifyDestroyed();

else if (c==cmdHelp)

display.setCurrent(txtHelp);

else if (c==cmdBack)

display.setCurrent(mainForm);

Tổng kết:

Đến đây chúng ta có thể hình dùng chương trình sẽ chạy như sau:

B1 : đầu tiên phương thức khởi tạo sẽ được gọi và các đối tựợng cần thiết sẽ được tạo

B2: phương thức startApp() được gọi và hiện lên Form ra màn hình

B3: không làm gì cả đến khi người dùng nhấn nút exit, thực hiện phương thức commandAction(Command c, Displayable s)

Đến đây chúng ta đã hình dung được một ứng dụng J2ME sẽ được thực hiện như thế nào ở chương sau chúng ta sẽ khảo sát các đối tượng như TexBox, ListBox,… còn khung chương trình thì vẫn như trên, giả sử để tạo thêm một TextBox các bạn chỉ cần bổ sung thêm vào phương thức khởi tạo sau đó gắn nó vào Form còn phần hiển thị ra màn hình thì vẫn như cũ.