8
การออกแบบ 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

Applet 4 class_composition

Embed Size (px)

DESCRIPTION

slide เสริมวิชา JAVA จากอาจารย์ฝนครับApplet 4 class_composition

Citation preview

Page 1: Applet 4 class_composition

การออกแบบ 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

Page 2: Applet 4 class_composition

ตัวอยางการสราง 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

Page 3: Applet 4 class_composition

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

Page 4: Applet 4 class_composition

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

Page 5: Applet 4 class_composition

การทดสอบการทำงานของ 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

Page 6: Applet 4 class_composition

! 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 :: .....................................................................

Page 7: Applet 4 class_composition

ขั้นตอนท่ี 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

Page 8: Applet 4 class_composition

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