35
บบบบบ 7 บบบบบบบ บบบบบบบบบบบบบบบ บบบบบบบบบบ Srinagarindra The Princess Mother School Kanchanaburi 1

Chapter1 uml3

Embed Size (px)

DESCRIPTION

บทที่ 7 วิธีการเชิงวัตถุและการออกแบบคลาส บทที่ 12 การเขียนโปรแกรมโดยใช้ NetBeans

Citation preview

Page 1: Chapter1 uml3

บทท�� 7 วิ�ธี�การเชิ�งวิ�ตถุ�และการออกแบบคลาส

Srinagarindra The Princess Mother School

Kanchanaburi1

Page 2: Chapter1 uml3

แนวิค�ดเชิ�งวิ�ตถุ�(Object Oriented) หมายถึ�ง การใช้ Object เป็�นตั�วหลั�กในการพิ�จารณาความเป็�นจร�งตั�างๆที่��เก�ดขึ้�"นในโลัก โดยมองที่%กสิ่��งในโลักเป็�นว�ตัถึ%ที่�"งหมด แลัะมองว�าก�จกรรมที่��เก�ดขึ้�"นในโลักน�"เก�ดจากความสิ่�มพิ�นธ์*แลัะป็ฏิ�สิ่�มพิ�นธ์*ระหว�างว�ตัถึ%

2

Page 3: Chapter1 uml3

ตัารางเป็ร�ยบเที่�ยบการว�เคราะห*แลัะออกแบบระบบว�ธ์�เด�มก�บว�ธ์�เช้�งว�ตัถึ%วิ�ธี�เด�ม วิ�ธี�เชิ�งวิ�ตถุ�

เร��มตั นจากการว�เคราะห*เอกสิ่าร ผลัลั�พิธ์* แลัะการที่.างานขึ้องระบบ งานเด�ม

เร��มตั นการว�เคราะห*จากObjects ที่�� สิ่ามารถึเห/นได ช้�ดเจน

แตักการที่.างานออกเป็�นหน�วยย�อยๆ

แบ�งกลั%�มขึ้อง Object ตัามค%ณลั�กษณะ

องค*ป็ระกอบตั�างๆขึ้องระบบ เช้�น การป็ระมวลัผลั การออกรายงาน

การค.านวณ จะเก��ยวพิ�นก�น การเป็ลั��ยนแป็ลังจะกระที่บซึ่��งก�นแลัะก�น

แตั�ลัะ Object เป็�นอ�สิ่ระตั�อก�นการเป็ลั��ยนแป็ลังจะไม�กระที่บก�น

3

Page 4: Chapter1 uml3

การป็ร�บเป็ลั��ยนระบบตั องแก ไขึ้Source Code

การป็ร�บเป็ลั��ยนระบบ ที่.าได โดย การเป็ลั��ยน Attributes,

Functions ขึ้อง Object

Tools ที่��สิ่น�บสิ่น%นม�น อยลัง Tools ที่��สิ่น�บสิ่น%นม�มากขึ้�"น

ตัารางเป็ร�ยบเที่�ยบการว�เคราะห*แลัะออกแบบระบบว�ธ์�เด�มก�บว�ธ์�เช้�งว�ตัถึ%

วิ�ธี�เด�ม วิ�ธี�เชิ�งวิ�ตถุ�

4

Page 5: Chapter1 uml3

ว�ตัถึ% (Object) ค3อหน�วยสิ่นใจขึ้องระบบที่��ที่.าให เก�ดเหตั%การณ* ว�ตัถึ%เป็�นได ที่�"งสิ่��งที่��สิ่ามารถึจ�บตั องได (เช้�น โตั4ะ รถึยนตั* คอมพิ�วเตัอร* คน ) แลัะว�ตัถึ%ที่��ไม�สิ่ามารถึจ�บตั องได (เช้�น บร�ษ�ที่ ฝ่6ายตั�างๆ หลั�กสิ่7ตัร)

การสิ่3�อสิ่ารระหว�าง Object เร�ยกว�า Message

5

Page 6: Chapter1 uml3

Class ค3อกลั%�มขึ้อง Object ที่��ม�โครงสิ่ร างพิ3"นฐานพิฤตั�กรรมเด�ยวก�น Object ที่��ม�ค%ณสิ่มบ�ตั�เด�ยวก�น ก/จะรวมกลั%�มอย7�ใน Class เด�ยวก�น

Class แลัะ Object ม�ความคลั ายก�นมากจนที่.าให หลัายคนสิ่งสิ่�ยว�าเป็�นสิ่��งเด�ยวก�นหร3อไม� ในความเป็�นจร�ง Class ถึ3อว�าเป็�น นามธ์รรม (Abstract) ในขึ้ณะที่�� Object น�"นเป็�นสิ่��งที่��ม�ตั�วตัน (Concrete) กลั�าวค3อ Class เป็�นเหม3อนพิ�มพิ*เขึ้�ยวขึ้อง Object โดยที่�� Class จะไม�สิ่ามารถึที่.างานได แตั� Object สิ่ามารถึที่.างานได

การที่.างานขึ้อง Object จะเป็�นไป็ตัามค%ณสิ่มบ�ตั�ที่��ก.าหนดไว ใน Class แลัะ Object ที่%กตั�วก/ตั องอย7�ใน Class ด�งน�"น Class แลัะ Object จ�งเป็�นสิ่��งค7�ก�นเสิ่มอ

6

Page 7: Chapter1 uml3

Class นอกจากจะม�ช้3�อ Class ก.าก�บแลั ว ย�งม� ค%ณสิ่มบ�ตั� (Attributes) แลัะ หน าที่��การที่.างาน (Operations หร3อ Methods)Name

Attributes

Methods

Student

StudentIDFirstNameLastNameAddressTelephoneBirthdateFacultyGPARegister()Drop()Withdraw()

ตั�วอย�าง Class Student

ตั�วอย�าง Class Student 7

Page 8: Chapter1 uml3

การสิ่3บที่อดค%ณสิ่มบ�ตั� (Inheritance) ค3อ การที่�� Subclass ได ร�บการถึ�ายที่อดค%ณสิ่มบ�ตั� (Attributes) มาจาก Superclass แลั วผนวกค%ณสิ่มบ�ตั�พิ�เศษเพิ��มเขึ้ าไป็

สิ่�ญญลั�กษณ* ที่��ใช้ ค3อ ลั7กศรห�วร7ป็สิ่ามเหลั��ยมใสิ่ ช้�"จาก Subclass ไป็ย�ง Superclass

-

Multiple Inheritance

8

Page 9: Chapter1 uml3

Sales Transaction

----inherited----TransactionNumberEmployeeNumberTransactionDateTransactionTimeBarcodeNumberPriceSalesTax

----local----QuantitySold

Rental Transaction

----inherited----TransactionNumberEmployeeNumberTransactionDateTransactionTimeBarcodeNumberPriceSalesTax

----local----MemberNumber

Transaction

TransactionNumberEmployeeNumberTransactionDateTransactionTimeBarcodeNumberPriceSalesTax

Sales Transaction

TransactionNumberEmployeeNumberTransactionDateTransactionTimeBarcodeNumberPriceSalesTaxQuantitySold

Rental Transaction

TransactionNumberEmployeeNumberTransactionDateTransactionTimeBarcodeNumberPriceSalesTaxMemberNumber

With Inheritance

Without Inheritance

9

Page 10: Chapter1 uml3

หลั�กขึ้องการสิ่3บที่อดค%ณสิ่มบ�ตั�จะที่.าให ความสิ่�มพิ�นธ์*ระหว�าง Object ม�ความช้�ดเจนย��งขึ้�"น กลั�าวค3อถึ าม�ความสิ่�มพิ�นธ์*ที่��ช้�ดเจนมากขึ้�"นเที่�าใด จะสิ่�งผลัให การออกแบบระบบงานง�ายขึ้�"น

ผ7 ออกแบบระบบงานเช้�งว�ตัถึ%สิ่ามารถึออกแบบระบบงานขึ้นาดใหญ�ได โดยการอาศ�ย Object ที่��ม�การน�ยามไว ก�อนหร3อที่��ม�ผ7 อ3�นที่.าการออกแบบไว ก�อนแลั ว ซึ่��งเป็�นที่��มาขึ้องการน.ากลั�บมาใช้ ใหม� (Reusability)

10

Page 11: Chapter1 uml3

การสิ่3บที่อดค%ณสิ่มบ�ตั�ม�ขึ้ อด� ค3อ1 . ที่.าให ม�โครงสิ่ร างที่��เป็�นระบบ สิ่ามารถึป็ร�บเป็ลั��ยน

ได ง�าย2. ลัดเวลัาในการพิ�ฒนาระบบ3. ลัดค�าใช้ จ�ายในการพิ�ฒนาระบบ

11

Page 12: Chapter1 uml3

Polymorphism ค3อ การที่�� Object ที่��ตั�างก�นม�ป็ฏิ�ก�ร�ยาตัอบสิ่นองตั�อ Function/ Message หน��งๆในว�ธ์�ที่��ตั�างก�น

Class ร7ป็สิ่��เหลั��ยม ก�บ Class ร7ป็สิ่ามเหลั��ยม ได ร�บการสิ่3บที่อดค%ณสิ่มบ�ตั� จาก Class ร7ป็หลัายเหลั��ยม โดยที่�"งค7�ม� Function ที่��ช้3�อ draw() เหม3อนก�น แตั�เม3�อม�การเร�ยกใช้ function ด�งกลั�าว Object ที่��สิ่ร างจาก Class ร7ป็สิ่��เหลั��ยมจะม�การวาดร7ป็สิ่��เหลั��ยม ขึ้ณะที่�� Object ที่��สิ่ร างจาก Class ร7ป็สิ่ามเหลั��ยมจะม�การวาดร7ป็สิ่ามเหลั��ยม

12

Page 13: Chapter1 uml3

draw()

draw() draw()

• หลั�กการ Polymorphism ช้�วยให สิ่ามารถึน.า code กลั�บมาใช้ ใหม� ได เน3�องจากสิ่ามารถึก.าหนดช้%ดค.าสิ่��งที่��วไป็ แลัะมอบหน าที่��รายลัะเอ�ยดขึ้องการน.าไป็ใช้ แก� Object ที่��เก��ยวขึ้ องจ�ดการ

13

Page 14: Chapter1 uml3

การซึ่�อนรายลัะเอ�ยดเป็�นพิ3"นฐานขึ้องการป็กป็=ดขึ้ อม7ลัภายในแลัะว�ธ์�การที่.างานขึ้อง Object

ตัามแนวค�ดเช้�งว�ตัถึ% การจะลั�วงร7 รายลัะเอ�ยดขึ้ อม7ลัขึ้อง Object จะตั องได ร�บอน%ญาตัจากเจ าขึ้อง Object น�"นก�อน กลั�าวค3อการเขึ้ าถึ�งขึ้ อม7ลัน�"น จะไม�สิ่ามารถึเขึ้ าถึ�งได โดยตัรง แตั�จะตั องม�การตัอบร�บจาก Method ใน Object ป็ลัายที่างน�"นว�าจะยอมให Object ที่��สิ่�ง Message เขึ้ าถึ�งขึ้ อม7ลัขึ้องตันหร3อไม�

Encapsulation หมายถึ�ง ลั�กษณะการเขึ้�ยนโป็รแกรมที่��จะม�การซึ่�อนขึ้ อม7ลัที่��ตั องการควบค%มความถึ7กตั องขึ้องขึ้ อม7ลัไว (Information Hiding) แลัะบ�งค�บให Object อ3�นเขึ้ าถึ�งขึ้ อม7ลัที่��ซึ่�อนไว ผ�านที่าง Interface ที่��เตัร�ยมไว ที่.าให สิ่ามารถึควบค%มความถึ7กตั องขึ้องขึ้ อม7ลัได

14

Page 15: Chapter1 uml3

กลัไกการป็กป็?องก�นขึ้ อม7ลัแลัะว�ธ์�การที่.างานขึ้อง Object สิ่ามารถึเป็�น Public (+) ซึ่��งสิ่ามารถึเขึ้ าถึ�งได โดยตัรงจาก

ภายนอก Private (#) ซึ่��งจะถึ7กใช้ งานจากภายใน Class

เที่�าน�"น Protected (-) ซึ่��งจะสิ่ามารถึเห/นหร3อเขึ้ าถึ�งได

จากภายใน Subclass เที่�าน�"น

15

Page 16: Chapter1 uml3

เป็�นความสิ่�มพิ�นธ์*ระหว�าง Object หร3อ Class แบบ 2 ที่�ศที่าง

Employee Company

work for

hire

0..*

1..*

Person Car

own

is owned by

0..*

1..*

16

Page 17: Chapter1 uml3

เป็�นความสิ่�มพิ�นธ์*ระหว�าง Object หร3อ Class แบบ “Whole-Part” หร3อ “is part of” โดยจะม� Class ที่��ใหญ�ที่��สิ่%ดที่��เป็�น Object หลั�ก แลัะม� Class อ3�นเป็�นสิ่�วนป็ระกอบ

Car

Body

Whole

WheelEngine Part

17

Page 18: Chapter1 uml3

เป็�นความสิ่�มพิ�นธ์*ระหว�าง Object หร3อ Class แบบขึ้�"นตั�อก�นแลัะม�ความเก��ยวขึ้ องก�นเสิ่มอ โดยจะม� Class ซึ่��งเป็�นองค*ป็ระกอบขึ้อง Class อ3�นที่��ใหญ�กว�า

เม3�อ Class ที่��ใหญ�กว�าถึ7กที่.าลัาย Class ที่��เป็�นองค*ป็ระกอบก/จะถึ7กที่.าลัายไป็ด วย

Windows

Text

Button

Menu

18

Page 19: Chapter1 uml3

เป็�นความสิ่�มพิ�นธ์*ระหว�าง Object หร3อ Class ในลั�กษณะขึ้องการสิ่3บที่อดค%ณสิ่มบ�ตั�จาก Class หน��ง (Superclass) ไป็ย�งอ�ก Class หน��ง (Subclass)

Student

DepartmentYearGPA

Enroll()Study()Exam()Graduate()

Teacher

PositionExpertise

Lecture()Comment()

Person

LastnameFirstnameBirthdateGender

Walk()Jump()Talk()Sleep()Eat()

19

Page 20: Chapter1 uml3

บทท�� 12 การเขี�ยนโปรแกรมโดยใชิ! NetBeans

Srinagarindra The Princess Mother School

Kanchanaburi20

Page 21: Chapter1 uml3

NetBeans IDE  เป็�น Freeware Editor อ�กตั�วหน��ง ซึ่��งได ร�บความน�ยมในการใช้ พิ�ฒนาโป็รแกรมโดย NetBeans น�"นสิ่น�บสิ่น%นการพิ�ฒนาโป็รแกรมในหลัายภาษา เช้�นJava, php, C/C++ นอกจากน�"เราย�งสิ่ามารถึ download PlugIn ตั�างๆมาใช้ งานร�วมก�บตั�ว NetBeans เองด วย ยกตั�วอย�างเช้�น iReport เป็�น Plugin ที่��ใช้ ในการสิ่ร างreport หร3อ Visual Web Page Layouts ใช้ ในการแสิ่ดงตั�วอย�างหน า web page 

21

Page 22: Chapter1 uml3

ก�อนที่��จะเร��มใช้ งาน NetBeans  เราสิ่ามารถึ download ตั�วโป็รแกรม NetBeans ได ที่��http://netbeans.org/downloads/index.html โดย NetBeans น�"นม�หลัายversion หลัาย Platform เราสิ่ามารถึเลั3อกภาษา Platform แลัะ version ได ตัามความเหมาะสิ่มเลัยคร�บ 

เม3�อที่.าการ download มาแลั วจะได เป็�น .exe file ซึ่��งเราสิ่ามารถึที่.าการตั�ดตั�"งโป็รแกรมไป็ย�ง directory ที่��ตั องการจะที่.าการตั�ดตั�"งได เลัย หลั�งจากตั�ดตั�"งโป็รแกรมเสิ่ร/จสิ่มบ7รณ*แลั ว เราสิ่ามามารถึเขึ้ าโป็รแกรม NetBeans ได จากหน า desktop  

22

Page 23: Chapter1 uml3

เม3�อที่.าการ download มาแลั วจะได เป็�น .exe file ซึ่��งเราสิ่ามารถึที่.าการตั�ดตั�"งโป็รแกรมไป็ย�ง directory ที่��ตั องการจะที่.าการตั�ดตั�"งได เลัย หลั�งจากตั�ดตั�"งโป็รแกรมเสิ่ร/จสิ่มบ7รณ*แลั ว เราสิ่ามามารถึเขึ้ าโป็รแกรม NetBeans ได จากหน า desktop  

23

Page 24: Chapter1 uml3

ในที่��น�"เราจะที่.าการพิ�ฒนาโป็รแกรมด วยภาษา JAVA เพิราะฉะน�"นจะตั องที่.าการdownload ตั�ว JDK หร3อ Java Development Kit เสิ่�ยก�อน สิ่ามารถึ downloadได ที่��http://www.oracle.com/technetwork/java/javase/downloads/index.html

เม3�อ download JDK แลั วก/ตั องที่.าการ Set class path เพิ3�อให สิ่ามารถึ Compileแลัะ Run Java ได โดยว�ธ์�ที่.าสิ่ามารถึตั�ดตัามได จาก Link ด านลั�างเลัยคร�บhttp://archive.oracle.in.th/2 0 0 8 /0 2 /

- - - -set path class path j2 -se dos.htmlหร3อhttp://www.dominixz.com/blog/software-tips/set-java-to-compile-and-run-all-places-in-dos/

24

Page 25: Chapter1 uml3

25

หน!าจอหล�กขีอง NetBeans จะแบ%งออกเป&น 4 ส%วินใหญ่%ๆด�งน�)คร�บ

Page 26: Chapter1 uml3

เป็�นสิ่�วนขึ้องแถึบเมน7 แลัะ Tool ตั�างๆ เป็�นสิ่�วนที่��แสิ่ดงแลัะจ�ดการ Project ตั�างๆ

เหม3อนเป็�นการ Browse ด7 Projectหร3อ File ตั�างๆ

เป็�นสิ่�วนที่��ใช้ ในการเขึ้�ยน Code เป็�นสิ่�วนที่��ใช้ ในการแสิ่ดงผลัการที่.างานตั�าง เม3�อ

ที่.าการ Run โป็รแกรม แลัะย�งม�สิ่�วนขึ้องการ debug โป็รแกรมด วย

26

Page 27: Chapter1 uml3

เม3�อร7 จ�กหน าตัาหร3อ GUI แบบคร�าวๆขึ้อง NetBeans ก�นแลั วตั�อไป็ก/มาลัองเขึ้�ยนโป็รแกรมง�ายก�นคร�บ โดยเร��มจากการ New Project ใหม�ขึ้�"นมา โดยการเลั3อกที่�� File >> New Project

27

Page 28: Chapter1 uml3

จะม�หน าตั�างขึ้�"นมาให เราเลั3อก โดยให เราที่.าการเลั3อก Java แลัะ Java Applicationแลั วกด Next

28

Page 29: Chapter1 uml3

จากน�"นจะม�หน าตั�างให ก.าหนดค�ารายลัะเอ�ยดตั�างๆขึ้อง Project  โดยจะบ�งค�บให ใสิ่�Project Name ในที่��น�"จะตั�"งช้3�อ Project ว�า NetBeansTutorial แลัะช้3�อ Main Class ว�า MainClass เม3�อก.าหนดค�ารายลัะเอ�ยดตั�างๆแลั ว กด Finish

เราจะได  Project ที่��ช้3�อว�า NetBeansTutorial แลัะ File ช้3�อ MainClass.java ขึ้�"นมา ตั�อไป็เราจะลัองสิ่ร าง class TestObj ขึ้�"นมา เพิ3�อลัองใช้  Funtion บางอย�างขึ้องNetBeans คร�บ

โดยการสิ่ร าง class ใหม�น�"น เราสิ่ามารถึที่.าได โดย คลั�กขึ้วาที่��ช้3�อ Project แลั วเลั3อกNew >> Java Class ด�งภาพิ

29

Page 30: Chapter1 uml3

หลั�งจากน�"นจะป็รากฏิหน าตั�างขึ้�"นมาให ก.าหนดรายลัะเอ�ยด โดยให ตั�"งช้3�อ Class ว�าTestObj แลั วกด Finish ภายใน class TestObj จะม� code ด�งน�"คร�บ

public class TestObj {       private String firstName;       private String lastName;       public void showName() {             System.out.println("THIS IS METHOD showName()");             System.out.println("My name is "+firstName+"

"+lastName);       } }

30

Page 31: Chapter1 uml3

จะเห/นได ว�า Attribute ใน Class TestObj เป็�น private ฉะน�"นก/จะตั องม� Getter and Setter เราสิ่ามารถึที่��จะสิ่��งให  NetBeans สิ่ร าง Getter and Setter จากAttribute ที่��ม�อย7�ได โดยการคลั�กขึ้วาที่��หน าจอที่��ใช้ เขึ้�ยน code แลั วเลั3อก Insert Codeจะป็รากฏิหน าตั�างขึ้�"นมาให เลั3อกที่��  Getter and Setter

หน าตั�างสิ่.าหร�บการ Generate Getters and Setters จะขึ้�"นมา ให เราที่.าการเลั3อกว�าจะสิ่ร าง Getters and Setters ให ก�บ Attribute ใดบ าง เม3�อเลั3อกเสิ่ร/จเร�ยบร อยให กดGenerate

31

Page 32: Chapter1 uml3

เราจะได  code ขึ้อง class TestObj ด�งน�" public class TestObj {       private String firstName;       private String lastName;             public void showName() {             System.out.println("THIS IS METHOD showName()");             System.out.println("My name is "+firstName+"

"+lastName);       }         public String getFirstName() {             return firstName;       }  

32

      public void setFirstName(String firstName) {            this.firstName = firstName;      }       public String getLastName() {            return lastName;      }       public void setLastName(String lastName) {            this.lastName = lastName;      }}

Page 33: Chapter1 uml3

นอกจากการ Generate Getters and Setters แลั ว เราสิ่ามารถึคลั�กขึ้วาเพิ3�อด7Function อ3�นๆที่�� NetBeans สิ่ามารถึช้�วยจ�ดการให การที่.างานขึ้องเราง�ายขึ้�"นคร�บ

  เม3�อได  class TestObj แลั ว ตั�อไป็เราก/ที่.าการแก ไขึ้ code ขึ้อง MainClass ให

เป็�นด�งน�" public class MainClass {       public static void main(String[] args) {             TestObj temp = new TestObj();             temp.setFirstName("Itthi");             temp.setLastName("Kruenarongkul");             temp.showName();                         temp.setFirstName("Monthinee");             temp.setLastName("Buntawee");             temp.showName();       }

33

Page 34: Chapter1 uml3

ในการ code ค.าสิ่��งตั�างๆ เราสิ่ามารถึกด CTRL+SpaceBar เพิ3�อเร�ยกด7ได ว�าสิ่ามารถึใช้  method หร3อเร�ยก Attribute ใดมาใช้ ได บ าง หร3อบางที่� NetBeans ก/จะขึ้�"นสิ่�วนน�"มาให เอง 

เม3�อที่.าการแก ไขึ้ Code เสิ่ร/จเร�ยบร อย เราจะลัองที่.าการ Run โป็รแกรมน�"ด7 โดยการกดป็%6มสิ่�เขึ้�ยวที่��อย7�ด านลั�างแถึบเมน7

34

Page 35: Chapter1 uml3

โดย  NetBeans จะที่.าการ Save ให อ�ตัโนม�ตั�ที่%กคร�"งที่��จะที่.าการ Run ถึ า NetBeansที่.าการ compile แลั วไม�พิบ errorโป็รแกรมจะแสิ่ดงผลัที่��สิ่�วนด านลั�างด�งภาพิ

35