งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส...

21
วววววววววววววววว วววววววววววววววว

Upload: num-mun

Post on 12-Jun-2015

125 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

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

Page 2: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

คี�ย์�เวิ�ร์�ด static

ในการออกแบบคลาสน��นถุ�าหากต�องการให�มี�ต�วิแปรหน��ง เป นต�วิแปรคลาสส!าหร�บเก"บค�ณล�กษณะประจำ!าหร&อพฤต�กรรมีต)างๆโดยที่��ต�วิแปรน��จำะเก"บอย/)ในหน)วิยควิามีจำ!าที่��เด�ยวิก�น ต�วิแปรน��เร�ยกวิ)า class variables หร&อ static variables โดยการสร�างต�วิแปรน��จำะใชิ�ค!าวิ)า static น!าหน�าที่�กออบเจำ"กต0ที่��สร�างขึ้��นจำะใชิ�ต�วิแปรน��เป นต�วิเด�ยวิก�น

Page 3: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

คี�ณลั�กษณะของวิ�ธี�การ์เชิ�งวิ�ตถุ� (class)

วิ�ธี�การเชิ�งวิ�ตถุ�จำะสมีบร/ณ0ได�จำะต�องประกอบด�วิยค�ณสมีบ�ต� 2 ประการ ได�แก) การห)อห��มี การส&บที่อด

Page 4: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

1 .การ์ห่�อห่��ม (Encapeulation) ล�กษณะที่��ส!าค�ญขึ้องการเขึ้�ยนโปรแกรมีเชิ�ง

วิ�ตถุ�ก"ค&อ ขึ้�อมี/ลหร&อค�ณล�กษณะบางอย)างที่��สร�างขึ้��นในคลาสสามีารถุปกป4องหร&อถุ/กห)อห��มีอย/)ภายในไมี)ให�ออบเจำ"กต0สามีารถุเขึ้�าใชิ�งานหร&อเขึ้�าไปแก�ไขึ้ขึ้�อมี/ลได� เชิ)น ถุ�าสร�างคลาสส!าหร�บวิงกลมีชิ&�อ Cricle ภายในคลาสมี�เมีธีอดส!าหร�บก!าหนดค)าร�ศมี� เมีธีอดส!าหร�บหาเส�นรอบวิงกลมี และมี�ขึ้�อมี/ลที่��เป น ร�ศมี�วิงกลมีส!าหร�บให�เป นค)าคงที่��ในการค!านวิณหาเส�นรอบวิงกลมี การสร�างคลาสล�กษณะน�� ค)าร�ศมี�จำะใชิ�ภายในคลาสเที่)าน��น ไมี)ควิรให�ออบเจำ"กต0แก�ไขึ้ได�

เน&�องจำากอาจำที่!าให�การค!านวิณหาค)าเส�นรอบวิงผิ�ดไปหมีดค�ณล�กษณะ แบบน��เร�ยกวิ)า การ์ห่�อห่��ม

คี�ณลั�กษณะของวิ�ธี�การ์เชิ�งวิ�ตถุ� (class)

Page 5: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

2. การ์สื�บทอด ห่ร์�อ อ�นเฮอร์�แทนซ์�(Inheritance)

เป นการน!าออบเจำ"กต0มีาสร�างล!าด�บควิามีส�มีพ�นธี0เป นล!าด�บชิ��น สามีารถุน!าคลาสที่��มี�อย/)แล�วิ หร&อน!าโปรแกรมีที่��ได�เขึ้�ยนไวิ�แล�วิน!ากล�บมีาใชิ�ใหมี)ได�อ�ก สามีารถุสร�างคลาสใหมี)ที่��ส&บที่อดมีาจำากคลาสที่��มี�อย/)แล�วิได� เป นการถุ)ายที่อดค�ณสมีบ�ต�ขึ้องคลาสหน��งไปย�งอ�กคลาสหน��ง ซึ่��งที่!าให�คลาสใหมี)น��สามีารถุน!าค�ณล�กษณะและเมีธีอดขึ้องคลาสเด�มีมีาใชิ�ได� คลาสที่��เป นต�นแบบจำะเร�ยกวิ)า superclass หร&อ base class หร&อเร�ยกส��นๆวิ)า คลาสแมี) ส)วินคลาสที่��ส&บที่อดจำะเร�ยกวิ)า subclass หร&อ child class หร&อ เร�ยกวิ)า คลาสล/ก

คี�ณลั�กษณะของวิ�ธี�การ์เชิ�งวิ�ตถุ� (class)

Page 6: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

การ์เข�าถุ&งสืมาชิ�กในคีลัาสื ในการเขึ้�ยนโปรแกรมีแบบออบเจำ"กต0น��น โดยที่��วิไปแล�วิค�ณล�กษณะขึ้องคลาสมี�กจำะไมี)ยอมีให�ออบเจำ"กต0ภายนอกเขึ้�าถุ�งได�โดยตรง โดยจำะใชิ�ค!าวิ)า private เขึ้�ยนก!าก�บไวิ� ถุ�าหากคลาส TwoDShape ประกาศต�วิแปรค�รล�กษณะเป น private คลาส Triangle ก"จำะไมี)สามีารถุใชิ�ต�วิแปรน��นได�ด�วิย แต)ถุ�าหากเป นต�วิแปรที่��เขึ้�าถุ�งได�เฉพาะสมีาชิ�กขึ้องคลาส หร&อสมีาชิ�กในคลาสล/กเที่)าน��นจำะใชิ�ค!าวิ)า protected

การ์สื�บทอด (Inheritance)

การ์ห่�ามไม�ให่�ม�การ์สื�บทอดในการออกแบบคลาสน��น หากไมี)ต�องการให�มี�คลาสใดที่��

สามีารถุส&บที่อดจำากคลาสที่��สร�างขึ้��นได�ก"ที่!าได�เชิ)นก�น โดยใชิ�ค!าวิ)า final ในตอนที่��ประกาศสร�างคลาส ต�วิอย)างเชิ)น หากสร�างคลาส TwoDShape แล�วิไมี)ต�องการให�คลาสใดส&บที่อดจำากคลาสน��ได� สามีารถุเขึ้�ยนตอนประกาศคลาสได�ด�งน��

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

คีอนสืตร์�คีเตอร์�แลัะการ์สื�บทอดคลาสล/กที่��มี�การส&บที่อดมีาจำากคลาสแมี)

สามีารถุมี�คอนสตร�คเตอร0ได�เชิ)นก�น จำากต�วิอย)างคลาสสามีเหล��ยมีที่��สร�างขึ้��น อาจำมี�คอนสตร�คเตอร0ส!าหร�บก!าหนดควิามียาวิขึ้องด�านต)างๆได� โดยสร�างเมีธีอดที่��มี�ชิ&�อเด�ยวิก�บชิ&�อคลาสล/กร์)ปแบบ

super(parameter-list);โดยพารามี�เตอร0ขึ้อง super ค&อค)าที่��ก!าหนดให�ก�บคอนสตร�คเตอร0ขึ้องคลาสแมี)

Page 8: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

การ์ออกแบบโปร์แกร์มเชิ�งวิ�ตถุ�ในการเขึ้�ยนโปรแกรมีเชิ�งวิ�ตถุ�น��นจำะต�องเร��มีจำาก

การจำ!าแนกควิามีแตกต)างขึ้องวิ�ตถุ�ที่��ใชิ�ในโปรแกรมีออกมีา รวิมีที่��งพ�จำารณาถุ�งพฤต�กรรมีขึ้องวิ�ตถุ�น��นด�วิย จำากน��นพยายามีรวิบรวิมีออกมีาเป นคลาสให�ได� หากออกแบบคลาสได�แล�วิควิรเขึ้�ยนไดอะแกรมีขึ้องคลาส (Class Diagram) ออกมีา โดยที่��วิไปแล�วิมี�กจำะใชิ�ภาษาร/ปแบบกราฟิ;กที่��เร�ยกวิ)า UML ค!าน��ย)อมีาจำาก Unlflied Modelling Language ซึ่��งถุ&อวิ)าเป นภาษามีาตรฐานในการล!าลองระบบซึ่อฟิต0แวิร0

ส!าหร�บการเขึ้�ยนไดอะแกรมีคลาสจำะประกอบด�วิยส)วินต)างๆ สามีส)วินค&อ ชิ&�อคลาส ค�ณล�กษณะขึ้องคลาส และเมีธีอดขึ้องคลาส โดยในไดอะแกรมีจำะระบ�ควิามีสามีารถุในการเขึ้�าถุ�งค�ณล�กษณะและต�วิแปรต)างๆด�วิย ถุ�าหากต�วิแปรหร&อเมีธีอดใดเป นแบบ private จำะใชิ�เคร&�องหมีาย (-) แต)ถุ�าหากต�วิแปรหร&อเมีธีอดใดเป นแบบ public จำะใชิ�เคร&�องหมีาย (+)

Page 9: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

ถุ�าหากออกแบบคลาสขึ้องระบบต�ดเกรดน�กศ�กษา โดยให�คลาสน��มี�ต�วิแปร score ส!าหร�บเก"บคะแนน และมี�เมีธีอด setScores() ส!าหร�บก!าหนดคะแนนน�กศ�กษา เมีธีอด getScore() ส!าหร�บอ)านคะแนนน�กศ�กษา และเมีธีอด getGrade() ส!าหร�บอ)านเกรดน�กศ�กษา จำะเขึ้�ยนเป น UML ขึ้องคลาสชิ&�อ GradedActivity และโปรแกรมีได�ด�งน��

ต�วิอย์�างการ์ออกแบบโปร์แกร์มเชิ�งวิ�ตถุ�

Page 10: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

ต�วิอย์�างข�อม)ลับ�คีคีลัในมห่าวิ�ทย์าลั�ย์ถุ�าหากในมีหาวิ�ที่ยาล�ยแห)งหน��งมี�ผิ/�คนอย/)ใน

ระบบเป นจำ!านวินมีาก บางที่)านเป นเจำ�าหน�าที่�� เป นพน�กงานขึ้องมีหาวิ�ที่ยาล�ย เป นน�กศ�กษา ในส)วินขึ้องน�กศ�กษาย�งแบ)งเป นน�กศ�กษาระด�บปร�ญญาตร� และน�กศ�กษาระด�บบ�ณฑิ�ตศ�กษา ถุ�าหากต�องการออกแบบโปรแกรมีส!าหร�บเก"บขึ้�อมี/ลบ�คคลต)างๆ ที่��เก��ยวิขึ้�องในมีหาวิ�ยาล�ยแห)งน�� เราอาจำสร�างคลาสขึ้องบ�คคลขึ้��นมีาเป นคลาสแมี) ส!าหร�บรายละเอ�ยดขึ้องบ�คคลประเภที่อ&�น ๆ ให�สร�างคลาสส&บที่อดต)อจำากคลาสแมี)น�� ส!าหร�บบ�คคลที่��ใชิ�เก"บขึ้�อมี/ลที่��วิไปออกแบบได�ด�งโปรแกรมี

กร์ณ�ศึ&กษาการ์ออกแบบโปร์แกร์มเชิ�งวิ�ตถุ�

Page 11: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

โปร์แกร์ม คลาส Person

กร์ณ�ศึ&กษาการ์ออกแบบโปร์แกร์มเชิ�งวิ�ตถุ�

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

เมี&�อสร�างคลาส Personส!าหร�บเก"บขึ้�อมี/ลบ�คคลที่��วิไปแล�วิ การออก แบบคลาสส!าหร�บเก"บขึ้�อมี/ลน�กศ�กษา หร&อบ�คลากรต)างๆ อาจำใชิ�วิ�ธี�การส&บที่อดคลาสมีาออกแบบคลาสได�ด�งแผินภาพต)อไปน��

กร์ณ�ศึ&กษาการ์ออกแบบโปร์แกร์มเชิ�งวิ�ตถุ�

Page 13: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

สืร์�ป

ในเขึ้�ยนโปรแกรมีเชิ�งวิ�ตถุ�น��นจำะมี�การรวิมีค�ณสมีบ�ต�และพฤต�กรรมีขึ้องส��งต)างๆ ที่��เก�ดขึ้��นในโปรแกรมีแล�วิสร�างออกมีาเป นคลาส จำากน��นจำะสร�างออบเจำ"กต0ขึ้องคลาสน��นๆ ออบเจำ"กต0ต)างๆ จำะส&�อสารก�นผิ)านที่างเมีธีอด ค�ณสมีบ�ต�หน��งที่��ส!าค�ญขึ้องการเขึ้�ยนโปรแกรมีเชิ�งวิ�ตถุ�ค&อ การส&บที่อด(Inheritance) ซึ่��งที่!าให�ผิ/�เขึ้�ยนโปรแกรมีสามีารถุน!าคลาสที่��เคยออกแบบไวิ�น!ามีาใชิ�ได�อ�ก โดยสร�างคลาสใหมี)เป นคลาสล/กที่��มี�ค�ณสมีบ�ต�เพ��มีเต�มีขึ้��นมีา โดยคลาสล/กน��สามีารถุใชิ�ค�ณล�กษณะและเมีธีอดต)างๆในคลาสแมี)ได�ด�วิย

Page 14: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

การเขึ้�ยนโปรแกรมีโดยใชิ� NetBeans

Page 15: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

โปรแกรมี NetBeans เป นโปรแกรมี IDE ส!าหร�บเขึ้�ยนโปรแกรมีภาษาจำาวิาในล�กษณะต)างๆ

เป นโปรแกรมีที่��เพ�ยงแต)เต�มี และจำ�ดระเบ�ยบโค�ด โปรแกรมี ก"สามีารถุสร�างโปรแกรมีประย�กต0ได�ง)าย

และเป นโปรแกรมีที่��หาใชิ�ได�ฟิร� การเขึ้�ยนโปรแกรมีด�วิย NetBeans น��นจำะ ไมี)ต�องพ�มีพ0ค!าส��งเพ&�อร�นโปรแกรมี เน&�องจำากมี�เมีน/

ค!าส��งต)างๆ การเขึ้�ยนโปรแกรมีเมี&�อพ�มีพ0ค!าส��งลง ไป โปรแกรมีจำะประมีวิลผิลเพ&�อพ�จำารณาวิ)าเป นค!า

ส��งหร&อเมีธีอดใด จำากน��นจำะแสดงค!าส��งที่��น)าจำะเป น ออกมีาให�เล&อกใชิ� ซึ่��งเหมีาะก�บผิ/�ที่��

เขึ้�ยนโปรแกรมีไมี)คล)อง และผิ/�ที่��ไมี)ชิอบจำ!าเมีธีอดต)างๆ

Page 16: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

เร์�-มต�นเข�ย์นโปร์แกร์มแร์กด�วิย์ NetBeansเร��มีต�นสร�างโปรเจำ"กต0ใหมี)โดยเล&อกเมีน/ File >

New Project จำากน��นโปรแกรมีจำะแสดงหน�าต)าง New Project ขึ้��นมีา เราสามีารถุเล&อกการสร�างโปรแกรมีประย�กต0ได�หลายแบบ ในที่��น��จำะสร�างโปรแกรมีในล�กษณะ Desktop Application ด�วิยจำาวิา ให�เล&อกโปรเจำ"กต0เป น Java แล�วิเล&อก Java Desktop Application

Page 17: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

แล�วิกด Next > ต��งชิ&�อโปรเจำ"กต0 > Finish เมี&�อคล�ก Finish โปรแกรมีจำะแสดงหน�าต)างโปรเจำ"กต0ที่��สร�างขึ้��นมีาใหมี)จำะอย/)ในกรอบเส�นประพร�อมีที่��งแสดงเฟิรมีส!าหร�บออกแบบ GUI ออกมีา ด�านขึ้วิามี&อจำะเป นส)วินขึ้อง Swing คอมีโพเนนต0 ซึ่��งสามีารถุลากมีาวิางบนเฟิรมีได�

เร์�-มต�นเข�ย์นโปร์แกร์มแร์กด�วิย์ NetBeans

Page 18: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

ส!าหร�บคอนโที่รลต)างๆ มี�ให�เล&อกมีากมีายสามีารถุน!ามีาใชิ�งานได� โดยสามีารถุลากมีาวิางบนฟิอร0มีได�ที่�นที่� เมี&�อวิางคอมีโพเนนต0ใดลงไป เราสามีารถุเปล��ยนค�ณสมีบ�ต�ได�ในหน�าต)างค�ณสมีบ�ต�

เร์�-มต�นเข�ย์นโปร์แกร์มแร์กด�วิย์ NetBeans

ถุ�าหากต�องการสร�างอ�เวินต0ให�ก�บป�>มีได�โดยคล�กขึ้วิาที่��ป�>มีแล�วิเล&อก Events แล�วิเล&อก Events ที่��ต�องการ ในที่��น��จำะเล&อก Events ที่��เก�ดจำากเมีาส0โดยเล&อกเป น Mouse > mouseClicked โปรแกรมีจำะสร�างหน�าต)างซึ่อร0สโค�ดออกมีา ให�พ�มีพ0ค!าส��งในต!าแหน)งต)อจำากค!าวิ)า TODO ในที่��น��จำะพ�มีพ0 System.out.println(“Hello JAVA”); เพ&�อแสดงขึ้�อควิามีออกที่างคอนโซึ่ล เมี&�อคล�กไอคอนร�นโปรแกรมีจำะแสดงหน�าต)างเอาต0พ�ต

Page 19: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้
Page 20: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

การ์ด�บ�กโปร์แกร์มการเขึ้�ยนโปรแกรมีคอมีพ�วิเตอร0น��นบางคร��งอาจำ

ต�องพ�จำารณาค)าขึ้องต�วิแปรต)างๆ ที่��เก�ดขึ้��นระหวิ)างการที่!างานขึ้องโปรแกรมี เพ&�อตรวิจำสอบขึ้�อผิ�ดพลาดบางอย)างที่��อาจำเก�ดขึ้��นได� เชิ)น การใชิ�ต�วิแปรผิ�ด การเขึ้�ยนน�พจำน0ผิ�ด

ซึ่��งขึ้�อผิ�ดพลาดเหล)าน��นเร�ยกวิ)าบ�?ก (bug) แต)เน&�องจำากโปรแกรมีที่!างานเร"วิมีาก บางคร��งอาจำต�องให�โปรแกรมีหย�ดในต!าแหน)งที่��ต�องการเพ&�อตรวิจำสอบขึ้�อผิ�ดพลาดหร&อเพ&�อแก�บ�?ก โปรแกรมี NetBeans สามีารถุก!าหนดจำ�ดหย�ดขึ้องโปรแกรมีชิ��วิคราวิ หร&อด/ค)าขึ้องต�วิแปรระหวิ)างโปรแกรมีที่!างานได�

Page 21: งานคอมวิธีการเชิงวัตถุและการออกแบบคลาส และ การเขียนโปรแกรมโดยใช้

สืมาชิ�ก1. นายสหร�ฐ สาระน�ย เลขึ้ที่�� 3

2.นายณ�ฏฐกรณ0 แผินก�ล เลขึ้ที่�� 73.นางสาวิส�ภล�กษณ0 แย�มีโอษฐ เลขึ้ที่�� 17

4.นางสาวิก�ญญาณ�ฐ พ)วิงปาน เลขึ้ที่�� 295.นางสาวิที่�มีาพร มี��นใจำ เลขึ้ที่�� 326.นางสาวิวิรรณ�ศา กระด��ที่อง เลขึ้ที่�� 35

7.นางสาวิศดาน�น บ�ญรอด เลขึ้ที่�� 36

ชิ��นมี�ธียมีศ�กษาที่�� 6/1