môn lập trình hướng đối tượng

14
Trang 1 Môn Lp trình hướng ₫ối tượng Bài thc hành s5 : Làm quen vi Jbuilder & Java. Xây dng 1 class ₫ối tượng theo yêu cu Mc tiêu : Giúp SV làm quen vi môi trường lp trình trc quan JBuilder. Giúp SV làm quen vi vic viết code bng Java. Ni dung : To ₫ặc tclass miêu t1 stack nhiu snguyên (slượng không hn chế), người dùng chthy 2 tác v: push(newVal) và pop (retVal). Hin thc class va ₫ặc t. Viết 1 ng dng nh₫ể kim tra hot ₫ộng ca class stack va xây dng. Dch và chy chương trình. Debug chương trình ₫ể tìm li nếu có. Qui trình : Xem chi tiết trong các trang kế.

Upload: others

Post on 04-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Trang 1

Môn Lập trình hướng ₫ối tượng Bài thực hành số 5 : Làm quen với Jbuilder & Java.

Xây dựng 1 class ₫ối tượng theo yêu cầu Mục tiêu :

Giúp SV làm quen với môi trường lập trình trực quan JBuilder. Giúp SV làm quen với việc viết code bằng Java.

Nội dung : Tạo ₫ặc tả class miêu tả 1 stack nhiều số nguyên (số lượng không hạn chế), người dùng chỉ thấy 2

tác vụ : push(newVal) và pop (retVal). Hiện thực class vừa ₫ặc tả. Viết 1 ứng dụng nhỏ ₫ể kiểm tra hoạt ₫ộng của class stack vừa xây dựng.

Dịch và chạy chương trình. Debug chương trình ₫ể tìm lỗi nếu có.

Qui trình : Xem chi tiết trong các trang kế.

Trang 2

1. Chạy JBuilder (hoặc bằng icon shortcut trên desktop hoặc bằng menu Start.Programs...), cửa sổ ₫ầu tiên có dạng :

2. Nếu thấy JBuilder hiển thị Project nào ₫ó (của lần cuối cùng trước ₫ó), chọn menu File.Close Projects ₫ể hiển thị cửa sổ Close Projects rồi chọn button All và OK ₫ể ₫óng các Project lại.

Trang 3

3. Tạo Project mới bằng cách vào menu File.New Project. Khi cửa sổ Step 1 dưới ₫ây hiển thị, nhập tên Project, chọn vị trí thư mục rồi ấn button Next.

Trang 4

4. Khi cửa sổ Step 2 dưới ₫ây hiển thị, hiệu chỉnh các thông số cần thiết (nên dùng giá trị mặc ₫ịnh) rồi ấn button Next.

5. Khi cửa sổ Step 3 dưới ₫ây hiển thị, hiệu chỉnh các thông số cần thiết (nên hiệu chỉnh nội dung của mục Encoding thành UTF8 ₫ể hỗ trợ tốt các chuỗi tiếng Việt Unicode trong các phần tử giao diện) rồi ấn button Finish ₫ể hoàn tất việc thiết lập các tham số của Project.

Trang 5

6. Chọn menu File.New ₫ể mở lại của sổ Object Gallery, chọn icon Application ₫ể tạo ứng dụng mới.

Trang 6

7. Khi cửa sổ Step 1 dưới ₫ây hiển thị, nhập tên ứng dụng rồi ấn button Next.

8. Khi cửa sổ Step 2 dưới ₫ây hiển thị, nhập tên class quản lý Form giao diện ứng dụng và title bar cho Form, rồi ấn button Next.

Trang 7

9. Khi cửa sổ Step 3 dưới ₫ây hiển thị, ₫ánh dấu chọn checkbox "Create a runtime…", nhập tên file quản lý cấu hình run-time cho ứng dụng, rồi ấn button Finish.

Trang 8

10. Cửa sổ ₫ầu tiên của ứng dụng như sau (nó ₫ang hiển thị mã nguồn miêu tả Form giao diện của ứng dụng).

11. Chọn menu File.New ₫ể mở lại cửa sổ Object Gallery, chọn icon Interface và OK ₫ể tạo 1 interface mới.

Trang 9

12. Khi cửa sổ Interface Wizard sau ₫ây hiển thị, nhập tên interface và OK ₫ể tạo interface.

Trang 10

12. Khi cửa sổ hiển thị mã nguồn của interface vừa tạo hiển thị, ₫ịnh nghĩa interface với 2 tác vụ push và pop như sau : public interface T_IntStack { boolean push(int newVal); // de gia tri vao dinh stack int pop() throws Exception ; // lay gia tri tu dinh stack ra } 13. Chọn menu File.New ₫ể mở lại cửa sổ Object Gallery, chọn icon Class và OK ₫ể tạo 1 interface mới. Khi cửa sổ Interface Wizard sau ₫ây hiển thị, nhập tên class và OK ₫ể tạo class.

14. Khi cửa sổ hiển thị mã nguồn của class vừa tạo hiển thị, ₫ịnh nghĩa class với 2 tác vụ push và pop như sau : public class C_IntStack implements T_IntStack { // khai báo các hằng cần dùng cho class private final int GROWBY = 4; private int data[]; //danh sách chứa các phần tử trong stack private int top; // chỉ số phần tử ở ₫ỉnh stack private int max; // ố lượng max hiện hành của stack

Trang 11

// hiện thực hàm constructor cho class public C_IntStack() { try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } } private void jbInit() throws Exception { top = max = 0; } //hiện thực hàm push vào stack public boolean push(int newVal) { if (top==max) try { //hết stack hiện hành //phân phối lại stack mới lớn hơn GROWBY phần tử int newdata[] = new int[GROWBY+max]; //di chuyển nội dung từ stack cũ sang stack mới for (int i = 0; i<max; i++) newdata[i] =data[i]; //không delete stack cũ (₫ể JVM làm) //ghi nhớ stack mới data = newdata; max += GROWBY; } catch (Exception e){ return false; } //chứa giá trị mới vào ₫ỉnh stack data[top++] =newVal; return true; } //hiện thực hàm pop 1 phần tử từ ₫ỉnh stack public int pop() throws Exception { if (top == 0) //cạn stack throw new Exception ("Cạn stack"); else //return giá trị từ ₫ỉnh stack return data[--top];

Trang 12

} } 15. Dời chuột về cửa sổ Project, ấn kép chuột vào mục IntStackDlg.java ₫ể làm việc với class miêu tả form giao diện của ứng dụng. Chọn tab Design phía dưới vùng làm việc ₫ể hiển thị Form theo góc nhìn thiết kế trực quan, cửa sổ sau sẽ hiển thị :

16. Dời chuột về cửa sổ Structure (thường nằm phía dưới cửa sổ Project), tìm và chọn phần tử contentPane của this ₫ể hiển thị cửa sổ thuộc tính của nó. Thiết lập lại thuộc tính layout về giá trị XYLayout ₫ể có thể thiết kế tự do các phần tử trong Form. Tìm phần tử JScrollPane (trong nhóm Swing Container) và vẽ nó vào Form với diện tích chiếm gằn hết Form. Tìm phần tử Jlist và vẽ nó vào JscrollPane, ₫ây là listbox hiển thị nội dung kiểm thử stack.

Trang 13

17. Chọn tab Source dưới vùng làm việc ₫ể hiển thị góc nhìn mã nguồn của Form. Viết thêm ₫oạn code sau vào hàm jbinit() ₫ể tạo stack và thử 1 số hoạt ₫ộng push, pop trên nó. private void jbInit() throws Exception { contentPane = (JPanel) getContentPane(); contentPane.setLayout(xYLayout1); setSize(new Dimension(300, 300)); setTitle("Trinh test stack chua cac so nguyen"); contentPane.setFont(new java.awt.Font("Arial", Font.PLAIN, 12)); contentPane.setToolTipText(""); jList1.setFont(new java.awt.Font("Arial Unicode MS", Font.PLAIN, 12)); //thiết lập lại kích thước form cho đúng this.setSize(new Dimension(280, 320)); //thiết lập đối tượng ListModel chứa nội dung của ListBox DefaultListModel model = new DefaultListModel(); jList1.setModel((ListModel)model); int i,j ; //tạo 1 đối tượng IntStack T_IntStack s = new C_IntStack(); //push lần lượt các số từ -5 đến 10 for (i=-5; i<=10; i++) if (!s.push(i)) {

Trang 14

model.addElement("Không push được nữa!!!"); return; } //pop ra và hiển thị cho đến khi hết stack try { for (i = -5; i <= 11; i++) model.addElement("Trị vừa pop ra là : " + s.pop()); } catch (Exception e) { model.addElement(e.toString()); } contentPane.add(jScrollPane1, new XYConstraints(10, 9, 255, 269)); jScrollPane1.getViewport().add(jList1); } 18. Chọn menu Run.Run Project ₫ể dịch và chạy thử ứng dụng. Nếu bạn nhập ₫úng các ₫oạn code trên mà vẫn bị báo lỗi thì nguyên nhân thông thường nhất là class tương ứng thiết lệnh import phần tử cần dùng trong class ₫ó. Hãy kiểm tra và thêm vào hay hiệu chỉnh lệnh import phần tử cần thiết. Nếu chạy ₫úng thì kết quả Form có dạng sau :

Nội dung quá nhiều so với chiều ngang/dọc của ListBox, bạn có thể dời marquer trên scrollbar tương ứng ₫ể xem phần thông tin mong muốn trong listbox. Lưu ý rằng ₫oạn code thử stack ở trên cố ý thử pop ra nhiều hơn 1 phân tử so với push vào. Kết quả là chương trình báo lỗi "Cạn stack" trong lần pop cuối cùng ₫ó.