Upload
nitigan-nakjuatong
View
635
Download
1
Embed Size (px)
DESCRIPTION
slide เสริมวิชา JAVA จากอาจารย์ฝนครับApplet 4 class_composition
Citation preview
การออกแบบ Class แบบ Composition
การออกแบบ Class แบบ Composition คือ ...........................................................................................................................
............................................................................................................................................................................................
Constructor method ) ออกแบบไวเพ่ือ ........................................................................................................................
“get” method) ) ออกแบบไวเพ่ือ ........................................................................................................................
“set” method) ) ออกแบบไวเพ่ือ ........................................................................................................................
Facilities method)) ออกแบบไวเพ่ือ ........................................................................................................................
ตัวอยางการออกแบบ Class แบบ Composition เพ่ือเก็บขอมูลการลงทะเบียน
จากรูป สามารถอธิบายไดวา ..................................................................................................................................................
.............................................................................................................................................................................................
Class Subject
.....................................................................
.....................................................................
.....................................................................
.....................................................................
.....................................................................
.....................................................................
Class Student.....................................................................
.....................................................................
.....................................................................
.....................................................................
.....................................................................
.....................................................................
Class Register.....................................................................
.....................................................................
.....................................................................
.....................................................................
.....................................................................
.....................................................................
Page 1 of 8
ssc
ตัวอยางการสราง Class แบบ Composition เพ่ือเก็บขอมูลการลงทะเบียน
Class Subjectขั้นตอนท่ี 1 สราง Class Subject ขึ้นมา
public class Subject { }
ขั้นตอนท่ี 2 สราง Attribute ตางๆ ตามที่ไดออกแบบไว
! private String SubjectCode;! private String SubjectName;! private int SubjectCredit;
ขั้นตอนท่ี 3 สราง Constructor method ตางๆ ตามที่ไดออกแบบไว
! public Subject() {! ! setSubjectCode("");! ! setSubjectName("");! ! setSubjectCredit(0);! }! public Subject(String Code, String Name, int Credit) {! ! setSubjectCode(Code);! ! setSubjectName(Name);! ! setSubjectCredit(Credit);! }
Constructor method 2 method นี้มีไวเพ่ือ ............................................................................................................................
.............................................................................................................................................................................................
ขั้นตอนท่ี 4 สราง “set” method ตางๆ ตามที่ไดออกแบบไว
! public void setSubjectCode(String Code) {! ! SubjectCode = Code;! }! public void setSubjectName(String Name) {! ! SubjectName = Name;! }! public void setSubjectCredit(int Credit) {! ! SubjectCredit = Credit;! }
“set” method 3 method นี้มีไวเพ่ือ ........................................................................................................................................
.............................................................................................................................................................................................ขั้นตอนท่ี 5 สราง “get” method ตางๆ ตามที่ไดออกแบบไว
! public String getSubjectCode() {! ! return(SubjectCode);! }! public String getSubjectName() {! ! return(SubjectName);! }! public int getSubjectCredit() {! ! return(SubjectCredit);! }
“get” method 3 method นี้มีไวเพ่ือ .......................................................................................................................................
.............................................................................................................................................................................................ขั้นตอนท่ี 6 สราง Facilities method ตางๆ ตามที่ไดออกแบบไว
! public String toString() {! ! String str = "";! ! str = getSubjectCode()+" "+getSubjectName()+" ";! ! str += getSubjectCredit();! ! return(str);! }
Facilities method นี้ มีชื่อวา ........................................ มีไวเพ่ือ ............................................................................................
.............................................................................................................................................................................................ขั้นตอนท่ี 7 ทำการ Compile
โดยใชคำสั่ง ..........................................................................................................................................................................
ผลลัพธที่ได ..........................................................................................................................................................................
Page 2 of 8
Class Studentขั้นตอนท่ี 1 .................................................................................................................
public class Student { }
ขั้นตอนท่ี 2 .................................................................................................................
! String StudentCode;! String StudentName;! String StudentSurName;
ขั้นตอนท่ี 3 .................................................................................................................
! public Student() {! ! setStudentCode("");! ! setStudentName("");! ! setStudentSurName("");! }! public Student(String Code, String Name, String SurName) {! ! setStudentCode(Code);! ! setStudentName(Name);! ! setStudentSurName(SurName);! }
Constructor method 2 method นี้มีไวเพ่ือ ............................................................................................................................
............................................................................................................................................................................................
ขั้นตอนท่ี 4 .................................................................................................................
! public void setStudentCode(String Code) {! ! StudentCode = Code;! }! public void setStudentName(String Name) {! ! StudentName = Name;! }! public void setStudentSurName(String SurName) {! ! StudentSurName = SurName;! }
“set” method 3 method นี้มีไวเพ่ือ ........................................................................................................................................
.............................................................................................................................................................................................
ขั้นตอนท่ี 5 .................................................................................................................
! public String getStudentCode() {! ! return(StudentCode);! }! public String getStudentName() {! ! return(StudentName);! }! public String getStudentSurName() {! ! return(StudentSurName);! }
“get” method 3 method นี้มีไวเพ่ือ .......................................................................................................................................
.............................................................................................................................................................................................
ขั้นตอนท่ี 6 .................................................................................................................
! public String toString() {! ! String str = "";! ! str = getStudentCode()+" "+getStudentName()+" ";! ! str += getStudentSurName();! ! return(str);! }
Facilities method นี้ มีชื่อวา ........................................ มีไวเพ่ือ ............................................................................................
.............................................................................................................................................................................................ขั้นตอนท่ี 7 ทำการ Compile
โดยใชคำสั่ง ..........................................................................................................................................................................
ผลลัพธที่ได ..........................................................................................................................................................................
Page 3 of 8
Class Registerขั้นตอนท่ี 1 .................................................................................................................
public class Register { }
ขั้นตอนท่ี 2 .................................................................................................................
! private Student std;! private Subject sub[];! private int max, count = -1;
ขั้นตอนท่ี 3 .................................................................................................................
! public Register() {! ! std = new Student();! ! max = 0;! }! public Register(Student std, int n) {! ! this.std = std;! ! max = n;! ! createSubject(max);! }
Constructor method 2 method นี้มีไวเพ่ือ ............................................................................................................................
............................................................................................................................................................................................
ขั้นตอนท่ี 4 .................................................................................................................
! public void setStudent(Student std) {! ! this.std = std;! }! public void setSubject(Subject sub) {! ! this.sub[++count] = sub;! }! public void setSubject(Subject sub, int n) {! ! this.sub[n] = sub;! }
“set” method 3 method นี้มีไวเพ่ือ ........................................................................................................................................
.............................................................................................................................................................................................
ขั้นตอนท่ี 5 .................................................................................................................
! public String getStudent() {! ! return(std.toString());! }! public String getSubject(int n) {! ! return(sub[n].toString());! }
“get” method 3 method นี้มีไวเพ่ือ .......................................................................................................................................
.............................................................................................................................................................................................
ขั้นตอนท่ี 6 .................................................................................................................
! private void createSubject(int n) {! ! sub = new Subject[n];! }
Facilities method นี้ มีชื่อวา ........................................ มีไวเพ่ือ ............................................................................................
.............................................................................................................................................................................................ขั้นตอนท่ี 7 ทำการ Compile
โดยใชคำสั่ง ..........................................................................................................................................................................
ผลลัพธที่ได ..........................................................................................................................................................................
Page 4 of 8
การทดสอบการทำงานของ Class แบบ Composition1) สราง testComposition.html เอาไวสำหรับ Run2) สราง testComposition.java เอาไวทดสอบ
ตัวอยางหนาจอการทำงาน
testComposition.html<html>! <body> <h1>Test Composition: Registration Program</h1> <h3>Create by: 5366261111 Supaporn Simcharoen IT1-RC</h3>! ! <applet code="testComposition.class" height="250" width="750">! ! </applet>! </body></html>
testComposition.javaขั้นตอนท่ี 1 สราง Class พรอมกับ import package ที่ตองใช และสราง Method ที่นาจะมี
import java.awt.*;import javax.swing.*;import java.awt.event.*;
public class testComposition extends JApplet implements ActionListener{! public void init(){! }! public void actionPerformed(ActionEvent event){! }}
ทำไมตอง extends JApplet ..................................................................................................................................................
ทำไมตอง implements ActionListener ..................................................................................................................................
method init มีไวเพ่ือ .............................................................................................................................................................
method actionPerformed มีไวเพ่ือ .......................................................................................................................................
ขั้นตอนท่ี 2 สรางหนาจอการทำงาน
! Container c;!! JLabel stdCodeLabel, stdNameLabel, stdSurnameLabel;! JTextField stdCodeText, stdNameText, stdSurnameText, stdText;! JButton addStdBtn;
! JLabel subCodeLabel, subNameLabel, subCreditLabel;! JTextField subCodeText, subNameText, subCreditText;! JButton addSubBtn;! JTextArea subTextArea;! JScrollPane subScroll;!! JButton saveBtn, cancleBtn;
! public void init(){! ! initGui();! }
Page 5 of 8
! public void initGui(){! ! c = getContentPane();! ! c.setLayout( new FlowLayout());! !! ! stdCodeLabel = new JLabel("Enter Student Code:");! ! c.add(stdCodeLabel);! ! stdCodeText = new JTextField(6);! ! c.add(stdCodeText);
! ! stdNameLabel = new JLabel("Name:");! ! c.add(stdNameLabel);! ! stdNameText = new JTextField(10);! ! c.add(stdNameText);! !
! ! stdSurnameLabel = new JLabel("Surname:");! ! c.add(stdSurnameLabel);! ! stdSurnameText = new JTextField(10);! ! c.add(stdSurnameText);!
! ! addStdBtn = new JButton("Add Student");! ! addStdBtn.addActionListener(this);! ! c.add(addStdBtn);! !! ! stdText = new JTextField(60);! ! stdText.setEditable(false);! ! c.add(stdText);!! !! ! subCodeLabel = new JLabel("Enter Subject Code:");! ! c.add(subCodeLabel);! ! subCodeText = new JTextField(6);! ! c.add(subCodeText);! !! !! ! subNameLabel = new JLabel("Name:");! ! c.add(subNameLabel);! ! subNameText = new JTextField(17);! ! c.add(subNameText);! !! !! ! subCreditLabel = new JLabel("Credit:");! ! c.add(subCreditLabel);! ! subCreditText = new JTextField(5);! ! c.add(subCreditText);! ! !
! ! addSubBtn = new JButton("Add Subject");! ! addSubBtn.setEnabled(false);! ! addSubBtn.addActionListener(this);! ! c.add(addSubBtn);! !! ! subTextArea = new JTextArea(5,60);! ! subTextArea.setEditable(false);! ! subScroll = new JScrollPane(subTextArea);! ! c.add(subScroll);! !! !! ! saveBtn = new JButton(" Save ");! ! saveBtn.setEnabled(false);! ! saveBtn.addActionListener(this);! ! c.add(saveBtn);! !! ! cancleBtn = new JButton(" Cancle ");! ! cancleBtn.setEnabled(false);! ! cancleBtn.addActionListener(this);! ! c.add(cancleBtn);! !! }
ขั้นตอนท่ี 3 ทดลอง Compile และ Run
วิธีในการ Run คือ .................................................................................................................................................................
ขั้นตอนท่ี 4 สราง Object Register เพ่ือทดสอบการทำงาน
! Register reg;! int count = 0;
! public void init(){! ! initGui();! ! reg = new Register(new Student(), 5);! }
ขั้นตอนท่ี 5 ทดลอง Compile และ Run อีกครั้ง
Page 6 of 8
Note :: ................................................................
...............................................................................
...............................................................................
...............................................................................
...............................................................................
...............................................................................
Note :: .....................................................................
ขั้นตอนท่ี 6 ใสการรองรับการกระทำกับ ปุมตางๆ ทั้งหมด
ท่ีปุม Add Student
! ! if (event.getSource() == addStdBtn) {! ! ! Student std = new Student(stdCodeText.getText(), stdNameText.getText(), stdSurnameText.getText());! ! ! stdText.setText(std.toString());! ! ! reg.setStudent(std);! ! ! addStdBtn.setEnabled(false);! ! ! addSubBtn.setEnabled(true);! ! ! saveBtn.setEnabled(true);! ! ! cancleBtn.setEnabled(true);! ! ! stdCodeText.setText("");! ! ! stdNameText.setText("");! ! ! stdSurnameText.setText("");! ! ! !! ! }
Note :: .............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
ท่ีปุม Add Subject
! ! else if (event.getSource() == addSubBtn) {! ! ! Subject sub = new Subject(subCodeText.getText(), subNameText.getText(), Integer.parseInt(subCreditText.getText()));! ! ! subTextArea.append(sub.toString()+"\n");! ! ! reg.setSubject(sub, count);! ! ! count++;! ! ! if (count == 5 ){ ! ! ! ! addSubBtn.setEnabled(false); ! ! ! }! ! ! subCodeText.setText("");! ! ! subNameText.setText("");! ! ! subCreditText.setText("");! ! }
Note :: .............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
ท่ีปุม Save
! ! else if (event.getSource() == saveBtn) {! ! ! String output="";! ! ! output = "Student :" + reg.getStudent();! ! ! output += "\nSubject:\n";! ! ! for(int n = 0 ; n < count; n++)! ! ! ! output += reg.getSubject(n) + "\n";! ! ! JOptionPane.showMessageDialog(null, output,"Registration Data",JOptionPane.INFORMATION_MESSAGE);! ! ! resetAll();! ! }
Note :: .............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
ท่ีปุม Cancle
! ! else if (event.getSource() == cancleBtn) {! ! ! resetAll();! ! }
Note :: .............................................................................................................................................................................................
Page 7 of 8
Method resetAll
! public void resetAll() {! ! stdCodeText.setText("");! ! stdNameText.setText("");! ! stdSurnameText.setText("");! ! stdText.setText("");! ! addStdBtn.setEnabled(true);! !! ! subCodeText.setText("");! ! subNameText.setText("");! ! subCreditText.setText("");! ! addSubBtn.setEnabled(false);! ! subTextArea.setText("");! !! ! saveBtn.setEnabled(false);! ! cancleBtn.setEnabled(false);! !! ! count = 0;! }
Note :: .............................................................................................................................................................................................
.............................................................................................................................................................................................
การบาน1) ตัวแปร count ที่อยูใน Class testComposition มีไวเพ่ืออะไร
2) ใหยกเลิกการใชงานตัวแปร count ที่ Class testComposition และใหไปใชตัวแปร count ใน Class Register แทน
3) ใหเพ่ิมการทำงานของโปรแกรมโดยใหสามารถคนหา(Search) แกไข(Edit) และลบ(Delete) Subject ได
ตัวอยางหนาจอการทำงาน
ตัวอยางการสราง Confirm Dialog
int ans = JOptionPane.showConfirmDialog(null, "Delete?","Confirm",JOptionPane.YES_NO_OPTION);if (ans == 0) {
//ในกรณีที่ผูใชกดปุม Yes แลว ans จะมีคาเทากับ 0}
Page 8 of 8