Your SlideShare is downloading. ×
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Java Programming: หลักการเชิงอ็อบเจกต์
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Java Programming: หลักการเชิงอ็อบเจกต์

4,468

Published on

เนื้อหาในบทนี้เป็นการแนะนำหลักการการพัฒนาโปรแกรมเชิงอ็อบเจกต์ อธิบายความ หมายของคำนิยามต่างๆ ที่ใช้ในการพัฒนาโปรแกรมเชิงอ็อบเจกต์เช่น คลาส อ็อบเจกต์ คุณลักษณะ และเมธอด แนะนำการประกาศ …

เนื้อหาในบทนี้เป็นการแนะนำหลักการการพัฒนาโปรแกรมเชิงอ็อบเจกต์ อธิบายความ หมายของคำนิยามต่างๆ ที่ใช้ในการพัฒนาโปรแกรมเชิงอ็อบเจกต์เช่น คลาส อ็อบเจกต์ คุณลักษณะ และเมธอด แนะนำการประกาศ คำนิยามดังกล่าวโดยใช้ภาษาจาวา อธิบายคุณลักษณะเด่นของโปรแกรมเชิงอ็อบเจกต์ แนะนำคลาสที่ใช้ในการจำลองข้อกำหนดของโปรแกรมเชิงอ็อบเจกต์ และในส่วนท้ายของบทจะเป็นการแนะนำขั้นตอนการพัฒนาโปรแกรมโดยใช้หลักการเชิงอ็อบเจกต์

1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
4,468
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
157
Comments
1
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. บทท 4 หลกการเชงออบเจกต (Object Oriented Concept) ผศ.ธนศา เครอไวศยวรรณ คณะเทคโนโลย'สารสนเทศ สถาบ+นเทคโนโลย'พระจอมเกล0าเจ0าค1ณทหารลาดกระบ+ง
  • 2. วตถประสงค  แนะน6าอ7อบเจกต9และคลาส  อธบายค1ณล+กษณะและเมธอด  อธบายการเข'ยนโปรแกรมเชงอ7อบเจกต9โดยใช0ภาษาจาวา  แนะน6าการเข'ยนโปรแกรมโดยใช0ค1ณล+กษณะเด@นของโปรแกรมเชงอ7อบ เจกต9  แนะน6า Unified Modelling Language  อธบายข+Iนตอนการพ+ฒนาโปรแกรม
  • 3. หลกการเชงออบเจกต  ภาษาจาวาเปนภาษาคอมพวเตอรทใช$หลกการเชงออบเจกต  OOP (Object Oriented Programming)  OOP เปนขบวนการการพฒนาโปรแกรมโดยการจ*าลองปMญหาว@าประกอบไป ด0วยอ7อบเจกต9ใดบ0าง  นยามท'Oส6าค+ญคอ • อ7อบเจกต9 (object) • คลาส (class)
  • 4. ออบเจกต  อ7อบเจกต9คอสOงต@างๆท'ม'อยRในช'วตประจ6าว+น O @ • ออบเจกตทเปนร+ปธรรมเช-น น+กศSกษา ใบลงทะเบ'ยน ปากกา และรถ • ออบเจกตทเปนนามธรรมเช-น คะแนน รายชOอวชา บ+ญช'เงนฝาก และตารางเทยวบน  ออบเจกตประกอบด$วย • คณลกษณะ (attribute) หร/อข$อม+ล (data) • พฤตกรรม (behavior) หร/อเมธอด (method)
  • 5. ออบเจกต  ค1ณล+กษณะ • ข0อมRลของอ7อบเจกต9 • แต@ละอ7อบเจกต9อาจม'ค@าของค1ณล+กษณะท'Oตางก+น @  เมธอด • สOงท'อ7อบเจกต9สามารถกระท6าได0 O • ค6าส+งในการท6างานของโปรแกรมเชงอ7อบเจกต9 O • โปรแกรมจะจ+ดการก+บข0อมRลโดยเร'ยกใช0เมธอด
  • 6. ต+วอย@างของออบเจกต  นกศ1กษา • อาจจะมคณลกษณะเช-น รหส ช/อ และเกรดเฉลย • อาจจะมเมธอดเช-น ลงทะเบยน สอบ และเดน  รถยนต • อาจจะมคณลกษณะเช-น ยห$อ ร-น และส • อาจจะมเมธอดเช-น เคล/อนท หยด และเล3ยว  สนข • อาจจะมคณลกษณะเช-น ช/อ พนธ และส • อาจจะมเมธอดเช-น เห-า คลาน และกระดกหาง
  • 7. ต+วอย@างของโปรแกรมเชงอ7อบเจกต9  โปรแกรมระบบจ+ดการบ+ญช'เงนฝากของธนาคาร  ต+วอย@างของอ7อบเจกต9 • Account • Customer • Transaction • ATM  Account • อาจม'ค1ณล+กษณะเช@น เลขท'Oบ+ญช' ชOอเจ0าของบ+ญช' ว+นท'เปXดบ+ญช' และยอดเงนคง O เหลอ • อาจม'เมธอดเช@น ฝาก ถอน และโอนเงน
  • 8. คลาส  เปรยบเสม/อนพมพเขยวของออบเจกต  ออบเจกตจะถ+กสร$างมาจากคลาส บางคร3งเรยกว-าเปน instance ของคลาส  คลาสหน1งคลาสสามารถสร$างออบเจกตได$หลายออบเจกต อาทเช-น คลาสช/อ Student อาจสร$างออบเจกตช/อ s1,s2 หร/อ s3 ซ1งเปนออบเจกตชนด Student
  • 9. รRปแสดงการสร0างอ7อบเจกต9จากคลาส Student
  • 10. ค1ณล+กษณะของอ7อบเจกต9  ข0อมRลท'เก7บอยR@ในอ7อบเจกต9 O  แบ@งเปYนต+วแปร (variable) และค@าคงท'O (constant) • ต+วแปรคอค1ณล+กษณะท'สามารถเปล'Oยนค@าได0 O • ค@าคงท'Oคอค1ณล+กษณะท'ไม@สามารถเปล'ยนค@าได0 O O
  • 11. ต+วอย@างค1ณล+กษณะของอ7อบเจกต9
  • 12. ค1ณล+กษณะของคลาส  เปYนค1ณล+กษณะท'ใช0รวมก+นของท1กอ7อบเจกต9 O @  ท1กอ7อบเจกต9จะใช0ค1ณล+กษณะร@วมก+นท6าให0ประหย+ดพIนท'Oในหน@วยความจ6า  ต+วอย@างเช@น ค1ณล+กษณะท'ก6าหนดให0เปYนค@าคงท'ชOอ MIN_GPA O O
  • 13. ต+วอย@างค1ณล+กษณะของคลาส
  • 14. เมธอด  วธ'การหรอการกระท6าท'นยามอยRในคลาสหรออ7อบเจกต9เพOอใช0ในการจ+ดการ O @ ก+บค1ณล+กษณะของอ7อบเจกต9  เปร'ยบเท'ยบได0ก+บ function, procedure หรอ subroutine ของโปรแกรมเชง กระบวนการ  ต+วอย@างเช@น เมธอด deposit()เพOอเปYนเมธอดส6าหร+บฝากเงน
  • 15. การส/อสารระหว-างออบเจกต  การส/อสารระหว-างกนของออบเจกตท*าได$โดยการผ-านข-าวสาร (message) objB คอชOออ7อบเจกต9 method4 คอชOอเมธอด (1,2) คอargument
  • 16. การส/อสารระหว-างออบเจกต  ข-าวสารจะส-งผ-านจากออบเจกต objA ทเปนผ+$สง (sender) เพ/อเร'ยกการ - ท*างานของเมธอดทช/อ method4 จากออบเจกต objB ทเปนผ+$รบ (receiver)  objB อาจส-งค-า (return value) บางค-ากลบมายง objA
  • 17. การเข'ยนโปรแกรมเชงอ7อบเจกต9โดยใช0ภาษาจาวา  การประกาศคลาส  การประกาศค1ณล+กษณะ  การประกาศเมธอด  การประกาศและสร0างอ7อบเจกต9  การเร'ยกใช0สมาชกของอ7อบเจกต9
  • 18. การประกาศคลาส  โปรแกรมภาษาจาวาแต-ละโปรแกรมจะประกอบไปด$วยคลาสอย-างน$อยหน1ง คลาส โดยม'ร+ปแบบการประกาศด+งน'I [modifier] class Classname { [class member] } • modifier ค/อคยเวรด (keyword) ของภาษาจาวาทใช$ในการอธบายระดบการเข$าถ1ง (access modifier) • class ค/อคยเวรดของภาษาจาวาเพ/อระบว-าเปนการประกาศคลาส • Classname ค/อช/อคลาส • class member ค/อเมธอดหร/อคณลกษณะ  ต+วอย@าง public class Student { }
  • 19. การประกาศค1ณล+กษณะ  ค1ณล+กษณะของอ7อบเจกต9คอต+วแปรหรอค@าคงท'ซSOงประกาศภายในอ7อบ O เจกต9 โดยม'ร+ปแบบการประกาศด+งน'I [modifier] dataType attributeName; • modifier คอค'ย9เวร9ดของภาษาจาวาท'Oอธบายค1ณสมบ+ตต@างๆของต+วแปรหรอค@า คงท'O • dataType คอชนดข0อมRลซSOงอาจเปYนชนดข0อมRลพIนฐานหรอชนดคลาส • attributeName คอชOอของค1ณล+กษณะ  ต+วอย@าง public class Student { public String id; public String name; public double gpa; }
  • 20. การประกาศเมธอด  ภาษาจาวาก6าหนดรRปแบบของการประกาศเมธอดท'อยRในคลาสไว0ด+งน'I O @ [modifier] return_type methodName([arguments]) { [method_body] } • modifier คอค'ย9เวร9ดของภาษาจาวาท'Oใช0อธบายระด+บการเข0าถSง • return_type คอชนดข0อมRลของค@าท'จะม'การส@งกล+บ O • methodName คอชOอของเมธอด • arguments คอต+วแปรท'Oใช0ในการร+บข0อมRลท'อ7อบเจกต9ส@งมาให0 O • method_body คอค6าส+Oงต@างๆของภาษาจาวาท'อยR@ในเมธอด O
  • 21. ตวอย-างโปรแกรม public class Student { public String id; public String name; public double gpa; public void setID(String ID) { id = ID; } public void setName(String n) { name = n; } public void setGPA(double GPA) { gpa = GPA; } public void showDetails() { System.out.println("ID: "+id); System.out.println("Name: "+name); System.out.println("GPA: "+gpa); } }
  • 22. เมธอดท'ชOอ main() O  โปรแกรมจาวาประย1กต9 (Java Application) จะเรOมต0นการท6างานในคลาสท'O ม'เมธอดท'OชOอ main โดยม'รปแบบของเมธอดด+งน'I R public static void main(String args[]) { [method_body] }
  • 23. การประกาศอ7อบเจกต9  อ7อบเจกต9ท1กอ7อบเจกต9ในโปรแกรมภาษาจาวาจะต0องม'ค6าส+OงประกาศเพOอระ บ1ว@าอ7อบเจกต9นนเปYนอ7อบเจกต9ของคลาสใด โดยม'รปแบบการประกาศด+งน'I +I R [modifier] ClassName objectName; • modifier คอค'ย9เวร9ดท'Oอธบายค1ณสมบ+ตต@างๆของอ7อบเจกต9 • ClassName คอชOอของคลาสส6าหร+บอ7อบเจกต9น+Iน • objectName คอชOอของอ7อบเจกต9  ต+วอย@าง Student s1;
  • 24. การสร0างอ7อบเจกต9  ค6าส+งท'Oใช0ในการสร0างอ7อบเจกต9จะม'รปแบบด+งน'I O R objectName = new ClassName([arguments]); • objectName คอชOอของอ7อบเจกต9 • new คอค'ยเวร9ดของภาษาจาวาเพOอใช0ในการสร0างอ7อบเจกต9 9 • ClassName คอชOอของคลาส • arguments คอค@าท'Oตองการส@งผ@านในการเร'ยก Constructor 0  ต+วอย@าง s1 = new Student();
  • 25. การประกาศและสร0างอ7อบเจกต9  ค6าส+งในการประกาศและสร0างอ7อบเจกต9สามารถท'OจะรวมเปYนค6าส+Oงเด'ยวก+น O โดยม'รปแบบค6าส+งด+งน'I R O [modifier] ClassName objectName = new ClassName([arguments]);  ต+วอย@าง Student s1 = new Student();
  • 26. การเร'ยกใช0สมาชกของอ7อบเจกต9  การเร'ยกใช0ค1ณล+กษณะของอ7อบเจกต9ม'รปแบบด+งน'I R objectName.attributeName;  การเร'ยกใช0เมธอดของอ7อบเจกต9ม'รปแบบด+งน'I R objectName.methodName([arguments]); • objectName คอชOอของอ7อบเจกต9ทสร0างขSIน 'O • methodName คอชOอของเมธอดของอ7อบเจกต9น+Iน • arguments คอค@าท'Oตองการส@งผ@านไปให0ก+บเมธอดของอ7อบเจกต9น+Iน 0  ต+วอย@าง s1.setName("Thana");
  • 27. ตวอย-างโปรแกรม public class Sample { public static void main(String args[]) { Student s1 = new Student(); Student s2 = new Student(); Student s3 = new Student(); s1.setID("1234"); s1.setName("Thana"); s1.setGPA(3.25); s1.showDetails(); s2.setID("1122"); s2.setName("Somchai"); s2.setGPA(2.90); s2.showDetails(); s3.setID("2211"); s3.setName("Somsri"); s3.setGPA(3.00); s3.showDetails(); } }
  • 28. ค1ณล+กษณะเด@นของโปรแกรมเชงอ7อบเจกต9  การห@อห10ม (Encapsulation)  การสบทอด (Inheritance)  การม'ได0หลายรRปแบบ (Polymorphism)
  • 29. การห@อห10ม  หมายถSงการจะเร'ยกใช0ค1ณล+กษณะของอ7อบเจกต9จะท6าได0โดยการเร'ยกผ@าน เมธอดเท@าน+Iน  หล+กการของการห@อห1มคอการก6าหนดให0ค1ณล+กษณะของอ7อบเจกต9ม' 0 ค1ณสมบ+ตเปYน private และก6าหนดให0เมธอดม'ค1ณสมบ+ตเปYน public
  • 30. ข0อด'ของการห@อห10ม  การซ@อนเร0นข0อมRล (Information Hiding) • ท6าให0อ7อบเจกต9สามารถตดต@อก+บอ7อบเจกต9ภายนอกผ@านเมธอดท'เปYนส@วนของ O interface เท@าน+Iน  ความเปYนโมดRล (Modularity) • การพ+ฒนาโปรแกรมเชงอ7อบเจกต9จะสามารถก6าหนดให0อ7อบเจกต9แต@ละอ7อบเจกต9ม' ความเปYนอสระต@อก+น
  • 31. ตวอย-างโปรแกรม public class Student { private String id; private String name; private double gpa; public void setID(String ID) { id = ID; } public void setName(String n) { name = n; } public void setGPA(double GPA) { gpa = GPA; } public void showDetails() { System.out.println("ID: "+id); System.out.println("Name: "+name); System.out.println("GPA: "+gpa); } }
  • 32. การสบทอด  หมายถSงการนยามคลาสใหม@จากรRปแบบของคลาสท'Oม'อยR@แล0ว โดยคลาสใหม@ สามารถท'Oจะน6าค1ณล+กษณะและเมธอดของคลาสเดมมาใช0ได0  โดยในภาษาจาวาจะใช0ค'ยเวร9ด extends เพOอระบ1การสบทอด 9  ต+วอย@าง
  • 33. ตวอย-างโปรแกรม public class PartTimeStudent extends Student { } public class FullTimeStudent extends Student { } public class GradStudent extends Student { private String thesisTitle; private String supervisor; public void setThesisTitle(String t) { thesisTitle = t; } public void setSupervisor(String s) { supervisor = s; } } public class PhDStudent extends GradStudent { public boolean passQualify; public boolean isPassQualify() { return passQualify; } }
  • 34. การม'ได0หลายรRปแบบ  หมายถSงการท'สามารถตอบสนองต@อข@าวสาร (เมธอด) เด'ยวก+นด0วยวธ'การท'O O ต@างก+น และสามารถก6าหนดอ7อบเจกต9ได0หลายรRปแบบ  Overridden method  Dynamic Binding
  • 35. ต+วอย@าง
  • 36. ตวอย-างโปรแกรม class Ball { public void throwBall() { } } class SoccerBall extends Ball { public void throwBall() { System.out.println("Throwing soccerball"); } } class TennisBall extends Ball { public void throwBall() { System.out.println("Throwing tennisball"); } } public class TestBall { public static void main(String args[]) { Ball b1 = new Ball(); SoccerBall b2 = new SoccerBall(); Ball b3 = new SoccerBall(); } }
  • 37. คลาสแบบ abstract  คลาสทม modifier เปน abstract หมายความว@าคลาสน+นย+งเปYนคลาสท'O I ไม@สมบRรณ9 โดยม'เมธอดแบบ abstract ซSงเปYนเมธอดท'ย+งไม@สมบRรณ9 O O อย@างน0อยหนSงเมธอดอยR@ในคลาส O  รRปแบบของเมธอดแบบ abstract [modifier] abstract return_type methodName([arguments]);  คลาสแบบ abstract ก6าหนดขSIนมาเพOอให0คลาสอOนสบทอด โดยคลาสท'มา O สบทอดจะต0องก6าหนดบล7อกค6าส+งในเมธอดท'ย+งไม@สมบRรณ9 O O  เราไม@สามารถสร$างออบเจกตของคลาสแบบ abstract ได$
  • 38. ตวอย-างโปรแกรมแสดงคลาสแบบ abstract public abstract class Student { protected String id; protected String name; protected double gpa; public void setID(String ID) { id = ID; } public void setName(String n) { name = n; } public void setGPA(double GPA) { gpa = GPA; } public abstract void showDetails(); }
  • 39. ตวอย-างคลาสท'Oสบทอดมาจากคลาสแบบ abstract public class FullTimeStudent extends Student { private int credit; private final int MAX_YEAR = 4; public FullTimeStudent(int c) { credit = c; } public void showDetails() { System.out.println("ID: "+id); System.out.println("Name: "+name); System.out.println("GPA: "+gpa); System.out.println("Credit: "+credit); } }
  • 40. อนเตอรเฟส  อนเตอร9เฟส (interface) ม'ล+กษณะคล0ายก+บคลาสแบบ abstract แต@จะ ประกอบด0วยเมธอดท'ย+งไม@สมบRรณ9เท@าน+น O I  รRปแบบของอนเตอร9เฟส [modifier] interface InterfaceName { [methods();] }  อนเตอร9เฟสก6าหนดขSIนมาเพOอให0คลาสอOนน6าไปใช0งานโดยใช0ค'ยเวร9ด 9 implements โดยม'รปแบบด+งน'I R [modifier] class ClassName implements InterfaceName { [methods();] }
  • 41. อนเตอรเฟส  อนเตอร9เฟสจะเหมอนก+บคลาสแบบ abstract ตรงท'Oเราจะไม@สามารถ สร0างอ7อบเจกต9ของอนเตอร9เฟสได0  ประโยชน9ของอนเตอร9เฟสคอ • การก6าหนดรRปแบบของเมธอดต@างๆท'OคลาสอOนๆจะต0อง implements ไว0ล@วงหน0า ซSOงสามารถอาศ+ยหล+กการของการม'ได0หลายรRปแบบมาเร'ยกใช0เมธอดเหล@าน+Iนได0จาก คลาสท'O implements อนเตอร9เฟส • ภาษาจาวาก6าหนดให0คลาสใดๆสามารถสบทอดคลาสอOนได0เพ'ยงคลาสเด'ยวเท@าน+Iน แต@จะสามารถ implements อนเตอร9เฟสได0หลายอนเตอร9เฟส
  • 42. ตวอย-างอนเตอรเฟส public interface Student { public void setID(String ID); public void setName(String n); public void setGPA(double GPA); public void showDetails(); }
  • 43. ตวอย-างคลาสท'O implements อนเตอรเฟส public class PartTimeStudent implements Student { private String id; private String name; private double gpa; private int credit; private final int MAX_YEAR = 8; public PartTimeStudent(int c) { credit = c; } public void setID(String ID) { id = ID; } public void setName(String n) { name = n; }
  • 44. ตวอย-างคลาสท'O implements อนเตอรเฟส public void setGPA(double GPA) { gpa = GPA; } public void showDetails() { System.out.println("ID: "+id); System.out.println("Name: "+name); System.out.println("GPA: "+gpa); System.out.println("Credit: "+credit); } }
  • 45. แพคเกจ  ซอฟตแวรแพคเกจช-วยในการจดการการพฒนาโปรแกรมขนาดใหญ-  ในโปรแกรมภาษาจาวา แพคเกจจะเปนทรวมของคลาสของภาษาจาวา หลายๆคลาส  โปรแกรมอาจแบ-งเปนแพคเกจและแพคเกจย-อย (Subpackage)  แพคเกจจะเกบไว$ในไดเรกทอร (Directory) ซ1งจะเปนช/อของแพคเกจ
  • 46. ตวอย-าง
  • 47. โครงสร$างโปรแกรมภาษาจาวา  ร+ปแบบโปรแกรมภาษาจาวามดงน3 [<package_declaration>] [<import_declaration>] [<class_declaration>]
  • 48. ค*าสง package  ค*าสง package เปนการระบว-าคลาสอย+-ในแพคเกจใด  ร+ปแบบของค*าสง package package <package_name>[<sub_package_name>];  ต+วอย@าง package faculty.domain;  โปรแกรมภาษาจาวาหนSOงโปรแกรมจะม'ค6าส+Oง package ได$เพยงค*าสงเดยว โดยจะเปนค*าสงแรกของโปรแกรม  กรณ'ทไม@ม'ค6าส+ง package คลาสจะถ+กก*าหนดไว$ในแพคเกจ 'O O default
  • 49. ค*าสง import  ค*าสง import เปนการเรยกใช$คลาสในแพคเกจต-างๆ  ร+ปแบบของค*าสง import import <package_name>[.<sub_package_name>].<Class_name> • หรอ import <package_name>[.<sub_package_name>].*;  ตวอยาง import faculty.reports.Report; • หรอ import java.awt.*;  ค*าสง import จะอย+-ก-อนหน$าการประกาศคลาส  โปรแกรมภาษาจาวาหน1งโปรแกรมสามารถมค*าสง import ได$หลายค*าสง
  • 50. Unified Modeling Language (UML)  เปYนภาษาท'Oสามารถน6ารRปกราฟฟXกมาจ6าลองโปรแกรมเชงอ7อบเจกต9ได0  ประกอบด0วยสองส@วนคอ • ไดอะแกรมของคลาส (Class Diagram) • ไดอะแกรมของอ7อบเจกต9 (Object Diagram)
  • 51. ไดอะแกรมของคลาส  เปYนส+ญล+กษณ9ท'Oใช0แสดงคลาส  ประกอบด0วยส@วนต@างๆสามส@วนคอ • ชOอของคลาส • ค1ณล+กษณะภายในคลาส • เมธอดภายในคลาส
  • 52. ไดอะแกรมของอ7อบเจกต9  ประกอบไปด0วยส@วนต@างๆสองส@วนคอ • ส@วนท'ระบ1ชอของอ7อบเจกต9 O O • ส@วนท'ระบ1ค@าของค1ณล+กษณะภายในอ7อบเจกต9 O
  • 53. ข3นตอนการพฒนาโปรแกรม  ข+นตอนการวเคราะห9 (Analysis) I  ข+นตอนการออกแบบ (Design) I  ข+นตอนการเข'ยนโปรแกรม (Programming) I  ข+นตอนการทดสอบ (Testing) I  ข+นตอนการท6างาน (Operation) I
  • 54. รRปแสดงข3นตอนการพฒนาโปรแกรม
  • 55. สร1ปเนIอหาของบท  โปรแกรมเชงอ7อบเจกต9จะม'ค6านยามท'Oส6าค+ญสองค6าคอ อ7อบเจกต9และคลาส  อ7อบเจกต9คอสOงต@างๆท'ม'อยRในช'วตประจ6าว+นจะประกอบไปด0วยค1ณล+กษณะ O @ และเมธอด  คลาสเปร'ยบเสมอนพมพ9เข'ยวของอ7อบเจกต9 อ7อบเจกต9ท'OถRกสร0างมาจาก คลาส อ7อบเจกต9หลายอ7อบเจกต9สามารถถRกสร0างจากคลาสหนSงคลาสได0 O  ค1ณล+กษณะของอ7อบเจกต9คอข0อมRลท'เก7บอยR@ในอ7อบเจกต9 ซSOงจะแบ@งออกเปYน O ต+วแปรและค@าคงท'O  ค1ณล+กษณะของคลาสเปYนค1ณล+กษณะท'ใช0รวมก+นของท1กอ7อบเจกต9 O @  เมธอดคอวธ'การเพOอใช0ในการจ+ดการก+บค1ณล+กษณะของอ7อบเจกต9หรอ ค1ณล+กษณะของคลาส
  • 56. สร1ปเนIอหาของบท  ภาษาจาวาม'นยามในการเข'ยนโปรแกรมเชงอ7อบเจกต9เพOอประกาศคลาส ค1ณล+กษณะ เมธอด และอ7อบเจกต9  โปรแกรมเชงอ7อบเจกต9จะม'คณล+กษณะเด@นอยRสามประการคอ การห@อห1ม 1 @ 0 การสบทอด และการม'ได0หลายรRปแบบ  การห@อห10มคอการท'Oให0ค1ณล+กษณะถRกห@อห1มอยRภายในเมธอด โดยก6าหนดให0 0 @ ค1ณล+กษณะม' access modifier เปYน private และก6าหนดให0เมธอดม' access modifier เปYน public  ข0อด'ของการห@อห1มคอการซ@อนเร0นข0อมRลและความเปYนโมดRล 0  การสบทอดคอการท'Oคลาสใหม@สามารถน6าเอาค1ณล+กษณะและเมธอดของ คลาสท'Oออกแบบไว0แล0วมาใช0ได0
  • 57. สร1ปเนIอหาของบท  การม'ได0หลายรRปแบบคอการท'ก6าหนดให0ม'การตอบสนองต@อเมธอดเด'ยวก+น O ด0วยวธ'การท'Oตางก+น และสามารถก6าหนดอ7อบเจกต9ได0หลายรRปแบบ @  คลาสแบบ abstract คอคลาสท'OยงเปYนคลาสท'ไม@สมบRรณ9 โดยม'เมธอด + O แบบ abstract ซSOงเปYนเมธอดท'Oยงไม@สมบRรณ9อย@างน0อยหนSงเมธอด + O  อนเตอร9เฟสม'ล+กษณะคล0ายก+บคลาสแบบ abstract แต@จะประกอบด0วย เมธอดท'ย+งไม@สมบRรณ9เท@าน+น O I  ค6าส+Oง package เปYนการระบ1ว@าคลาสอยR@ในแพคเก7จใด  ค6าส+Oง import เปYนการเร'ยกใช0คลาสในแพคเก7จต@าง
  • 58. สร1ปเนIอหาของบท  Unified Modeling Language (UML) เปYนภาษาท'Oใช0รปกราฟฟXกเพOอจ6าลอง R ระบบซอฟต9แวร9 ในท'นได0แนะน6าส+ญล+กษณ9ของ UML ท'Oส6าค+ญสองอย@างคอ O 'I ไดอะแกรมของคลาสและไดอะแกรมของอ7อบเจกต9  ว+ฎจ+กรการพ+ฒนาโปรแกรมจะประกอบไปด0วยข+Iนตอนต@างๆ 5 ข+Iนตอนคอ ข+นตอนการวเคราะห9 ข+Iนตอนการออกแบบ ข+Iนตอนการเข'ยนโปรแกรม ข+Iน I ตอนการทดสอบ และข+นตอนการท6างาน I
  • 59. แบบฝlกห+ด  แบบฝlกห+ดท'O 1 การออกแบบคลาส • เข'ยนข0อก6าหนดอธบายระบบโปรแกรมส6าหร+บการต+ดเกรดของรายวชาหนSOงรายวชา • เข'ยนไดอะแกรมของคลาสเพOออธบายค1ณล+กษณะและเมธอดท+งหมดท'ม'อยR@ในคลาส I O

×