Java Programming [4/12] : Object Oriented Concept

2,984 views

Published on

เอกสารแนะนำการเขียนโปรแกรมภาษาจาวา

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,984
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Java Programming [4/12] : Object Oriented Concept

  1. 1. บทที่ 4 หลัก การเชิง ออปเจ็ค(Object Oriented Concept) อ.ธนิศ า เครือ ไวศยวรรณ คณะเทคโนโลยีส ารสนเทศสถาบัน เทคโนโลยีพ ระจอมเกล้า เจ้า คุณ ทหารลาดกระบัง
  2. 2. วัต ถุป ระสงค์ แนะนำา ออปเจ็ค และคลาส อธิบ ายคุณ ลัก ษณะและเมธอด อธิบ ายการเขีย นโปรแกรมเชิง ออปเจ็ค โดยใช้ ภาษาจาวา แนะนำา การเขีย นโปรแกรมโดยใช้ค ุณ ลัก ษณะเด่น ของโปรแกรมเชิง ออปเจ็ค แนะนำา Unified Modelling Language อธิบ ายขัน ตอนการพัฒ นาโปรแกรม ้
  3. 3. หลัก การเชิง ออปเจ็ค ภาษาจาวาเป็น ภาษาคอมพิว เตอร์ท ใ ช้ห ลัก การ ี่ เชิง ออปเจ็ค OOP (Object Oriented Programming) OOP เป็น ขบวนการการพัฒ นาโปรแกรมโดยการ จำา ลองปัญ หาว่า ประกอบไปด้ว ยออปเจ็ค ใดบ้า ง นิย ามทีส ำา คัญ คือ ่ • ออปเจ็ค (object) • คลาส (class)
  4. 4. ออปเจ็ค ออปเจ็ค คือ สิง ต่า งๆทีม อ ยู่ใ นชีว ิต ประจำา วัน ่ ่ ี • ออปเจ็ค ที่เ ป็น รูป ธรรมเช่น นัก ศึก ษา ใบลงทะเบีย น ปากกา และรถ • ออปเจ็ค ที่เ ป็น นามธรรมเช่น คะแนน รายชื่อ วิช า บัญ ชี เงิน ฝาก และตารางเที่ย วบิน ออปเจ็ค ประกอบด้ว ย • คุณ ลัก ษณะ (attribute) หรือ ข้อ มูล (data) • พฤติก รรม (behavior) หรือ เมธอด (method)
  5. 5. ออปเจ็ค คุณ ลัก ษณะ • ข้อ มูล ของออปเจ็ค • แต่ล ะออปเจ็ค อาจมีค ่า ของคุณ ลัก ษณะที่ต ่า งกัน เมธอด • สิ่ง ที่อ อปเจ็ค สามารถกระทำา ได้ • คำา สั่ง ในการทำา งานของโปรแกรมเชิง ออปเจ็ค • โปรแกรมจะจัด การกับ ข้อ มูล โดยเรีย กใช้เ มธอด
  6. 6. ตัว อย่า งของออปเจ็ค นัก ศึก ษา • อาจจะมีค ุณ ลัก ษณะ เช่น รหัส ชื่อ และเกรดเฉลี่ย • อาจจะมีเ มธอด เช่น ลงทะเบีย น สอบ และเดิน รถยนต์ • อาจจะมีค ุณ ลัก ษณะเช่น ยี่ห ้อ รุ่น และสี • อาจจะมีเ มธอด เช่น เคลื่อ นที่ หยุด และเลี้ย ว สุน ข ั • อาจจะมีค ุณ ลัก ษณะ เช่น ชื่อ พัน ธ์ และสี • อาจจะมีเ มธอด เช่น เห่า คลาน และกระดิก หาง
  7. 7. ตัว อย่า งของโปรแกรมเชิง ออปเจ็ค โปรแกรมระบบจัด การบัญ ชีเ งิน ฝากของธนาคาร ตัว อย่า งของออปเจ็ค • Account • Customer • Transaction • ATM Account • อาจมีค ุณ ลัก ษณะเช่น เลขที่บ ัญ ชี ชื่อ เจ้า ของบัญ ชี วัน ที่เ ปิด บัญ ชี และยอดเงิน คงเหลือ • อาจมีเ มธอดเช่น ฝาก ถอน และโอนเงิน
  8. 8. คลาส เปรีย บเสมือ นพิม พ์เ ขีย วของออปเจ็ค ออปเจ็ค จะถูก สร้า งมาจากคลาส บางครั้ง เรีย กว่า เป็น instance ของคลาส คลาสหนึง คลาสสามารถสร้า งออปเจ็ค ได้ห ลา ่ ยออปเจ็ค อาทิเ ช่น คลาสชื่อ Student อาจสร้า ง ออปเจ็ค ชื่อ s1,s2 หรือ s3 ซึ่ง เป็น ออปเจ็ค ชนิด Student
  9. 9. รูป แสดงการสร้า งออปเจ็ค จาก คลาส Student
  10. 10. คุณ ลัก ษณะของออปเจ็ค ข้อ มูล ทีเ ก็บ อยูใ นออปเจ็ค ่ ่ แบ่ง เป็น ตัว แปร (variable) และค่า คงที่ (constant) • ตัว แปรคือ คุณ ลัก ษณะที่ส ามารถเปลี่ย นค่า ได้ • ค่า คงที่ค ือ คุณ ลัก ษณะที่ไ ม่ส ามารถเปลี่ย นค่า ได้
  11. 11. ตัว อย่า งคุณ ลัก ษณะของออปเจ็ค
  12. 12. คุณ ลัก ษณะของคลาส เป็น คุณ ลัก ษณะทีใ ช้ร ่ว มกัน ของทุก ออปเจ็ค ่ ทุก ออปเจ็ค จะใช้ค ุณ ลัก ษณะร่ว มกัน ทำา ให้ ประหยัด พืน ทีใ นหน่ว ยความจำา ้ ่ ตัว อย่า งเช่น คุณ ลัก ษณะทีก ำา หนดให้เ ป็น ค่า คงที่ ่ ชื่อ MIN_GPA
  13. 13. ตัว อย่า งคุณ ลัก ษณะของคลาส
  14. 14. เมธอด วิธ ีก ารหรือ การกระทำา ทีน ย ามอยูใ นคลาสหรือ ่ ิ ่ ออปเจ็ค เพือ ใช้ใ นการจัด การกับ คุณ ลัก ษณะขอ ่ งออปเจ็ค เปรีย บเทีย บได้ก ับ function, procedure หรือ subroutine ของโปรแกรมเชิง กระบวนการ ตัว อย่า งเช่นเมธอด deposit()เพือ เป็น เมธอด ่ สำา หรับ ฝากเงิน
  15. 15. การสื่อ สารระหว่า งออปเจ็ค การสือ สารระหว่า งกัน ของออปเจ็ค ทำา ได้โ ดยการ ่ ผ่า นข่า วสาร (message) objB คือ ชื่อ ออป เจ็ค method4 คือ ชื่อ เมธอด (1,2) คือ argument
  16. 16. การสื่อ สารระหว่า งออปเจ็ค ข่า วสารจะส่ง ผ่า นจากออปเจ็ค objA ทีเ ป็น ผู้ส ่ง ่ (sender) เพือ เรีย ก การทำา งานของเมธอดทีช ื่อ ่ ่ method4 จากออปเจ็ค objB ทีเ ป็น ผู้ร ับ (receiver) ่ objB อาจส่ง ค่า (return value) บางค่า กลับ มายัง objA
  17. 17. การเขีย นโปรแกรมเชิง ออปเจ็ค โดยใช้ภ าษาจาวา การประกาศคลาส การประกาศคุณ ลัก ษณะ การประกาศเมธอด การประกาศและสร้า งออปเจ็ค การเรีย กใช้ส มาชิก ของออปเจ็ค
  18. 18. การประกาศคลาส โปรแกรมภาษาจาวาแต่ล ะโปรแกรมจะประกอบ ไปด้ว ยคลาสอย่า งน้อ ยหนึง คลาส โดยมีร ูป แบบ ่ การประกาศดัง นี้ [modifier] class Classname { [class member] } • modifier คือ คีย ์เ วิร ์ด (keyword) ของภาษาจาวาที่ใ ช้ ในการอธิบ ายระดับ การเข้า ถึง (access modifier) • class คือ คีย ์เ วิร ์ด ของภาษาจาวาเพื่อ ระบุว ่า เป็น การ ประกาศคลาส • Classname คือ ชื่อ คลาส • class member คือ เมธอดหรือ คุณ ลัก ษณะ ตัว อย่า ง public class Student {
  19. 19. การประกาศคุณ ลัก ษณะ คุณ ลัก ษณะของออปเจ็ค คือ ตัว แปรหรือ ค่า คงทีซ ึ่ง ่ ประกาศภายในออปเจ็ค โดยมีร ูป แบบการประกาศ ดัง นี้ [modifier] dataType attributeName; • modifier คือ คีย ์เ วิร ์ด ของภาษาจาวาที่อ ธิบ ายคุณ สมบัต ิ ต่า งๆของตัว แปรหรือ ค่า คงที่ • dataType คือ ชนิด ข้อ มูล ซึ่ง อาจเป็น ชนิด ข้อ มูล พื้น ฐาน หรือ ชนิด คลาส • attributeName คือ ชื่อ ของคุณ ลัก ษณะ ตัว อย่า ง public class Student { public String id; public String name; public double gpa; }
  20. 20. การประกาศเมธอด ภาษาจาวากำา หนดรูป แบบของการประกาศเมธอด ทีอ ยูใ นคลาสไว้ด ัง นี้ ่ ่ [modifier] return_type methodName([arguments]) { [method_body] } • modifier คือ คีย ์เ วิร ์ด ของภาษาจาวาที่ใ ช้อ ธิบ ายระดับ การเข้า ถึง • return_type คือ ชนิด ข้อ มูล ของค่า ที่จ ะมีก ารส่ง กลับ • methodName คือ ชื่อ ของเมธอด • arguments คือ ตัว แปรที่ใ ช้ใ นการรับ ข้อ มูล ที่อ อปเจ็ค ส่ง มาให้ • method_body คือ คำา สั่ง ต่า งๆของภาษาจาวาที่อ ยู่ใ นเมธอด
  21. 21. ตัว อย่า งโปรแกรมpublic class Student { public class Student { public String id; public String id; public String name; public String name; public double gpa; public double gpa; public void setID(String ID) { public void setID(String ID) { id = ID; id = ID; }} public void setName(String n) { public void setName(String n) { name = n; name = n; }} public void setGPA(double GPA) { public void setGPA(double GPA) { gpa = GPA; gpa = GPA; }} public void showDetails() { public void showDetails() { System.out.println("ID: "+id); System.out.println("ID: "+id); System.out.println("Name: "+name); System.out.println("Name: "+name); System.out.println("GPA: "+gpa); System.out.println("GPA: "+gpa); }}}}
  22. 22. เมธอดที่ช อ ื่ main() โปรแกรมจาวาประยุก ต์ (Java Application) จะ เริ่ม ต้น การทำา งานในคลาสทีม เ มธอดทีช ื่อ main ่ ี ่ โดยมีร ูป แบบของเมธอดดัง นี้ public static void main(String args[]) { [method_body] }
  23. 23. การประกาศออปเจ็ค ออปเจ็ค ทุก ออปเจ็ค ในโปรแกรมภาษาจาวาจะ ต้อ งมีค ำา สัง ประกาศเพื่อ ระบุว ่า ออปเจ็ค นัน เป็น ่ ้ ออปเจ็ค ของคลาสใด โดยมีร ูป แบบการประกาศ ดัง นี้ [modifier] ClassName objectName; • modifier คือ คีย ์เ วิร ์ด ที่อ ธิบ ายคุณ สมบัต ิต ่า งๆของออป เจ็ค • ClassName คือ ชื่อ ของคลาสสำา หรับ ออปเจ็ค นั้น • objectName คือ ชื่อ ของออปเจ็ค ตัว อย่า ง Student s1;
  24. 24. การสร้า งออปเจ็ค คำา สั่ง ทีใ ช้ใ นการสร้า งออปเจ็ค จะมีร ูป แบบดัง นี้ ่ objectName = new ClassName([arguments]); • objectName คือ ชื่อ ของออปเจ็ค • new คือ คีย ์เ วิร ์ด ของภาษาจาวาเพื่อ ใช้ใ นการสร้า งออป เจ็ค • คือ ชื่อ ของคลาส ClassName • คือ ค่า ที่ต ้อ งการส่ง ผ่า นในการเรีย ก arguments Constructor ตัว อย่า ง s1 = new Student();
  25. 25. การประกาศและสร้า งออปเจ็ค คำา สั่ง ในการประกาศและสร้า งออปเจ็ค สามารถที่ จะรวมเป็น คำา สัง เดีย วกัน โดยมีร ูป แบบคำา สั่ง ดัง นี้ ่ [modifier] ClassName objectName = new ClassName([arguments]); ตัว อย่า ง Student s1 = new Student();
  26. 26. การเรีย กใช้ส มาชิก ของออปเจ็ค การเรีย กใช้ค ุณ ลัก ษณะของออปเจ็ค มีร ูป แบบดัง นี้ objectName.attributeName; การเรีย กใช้เ มธอดของออปเจ็ค มีร ูป แบบดัง นี้ objectName.methodName([arguments]); • objectName คือ ชื่อ ของออปเจ็ค ที่ส ร้า งขึ้น • methodName คือ ชื่อ ของเมธอดของออปเจ็ค นั้น • arguments คือ ค่า ที่ต ้อ งการส่ง ผ่า นไปให้ก ับ เมธอดขอ งออปเจ็ค นั้น ตัว อย่า ง s1.setName("Thana");
  27. 27. ตัว อย่า งโปรแกรมpublic class Sample { public class Sample { public static void main(String args[]) { public static void main(String args[]) { Student s1 = new Student(); Student s1 = new Student(); Student s2 = new Student(); Student s2 = new Student(); Student s3 = new Student(); Student s3 = new Student(); s1.setID("1234"); s1.setID("1234"); s1.setName("Thana"); s1.setName("Thana"); s1.setGPA(3.25); s1.setGPA(3.25); s1.showDetails(); s1.showDetails(); s2.setID("1122"); s2.setID("1122"); s2.setName("Somchai"); s2.setName("Somchai"); s2.setGPA(2.90); s2.setGPA(2.90); s2.showDetails(); s2.showDetails(); s3.setID("2211"); s3.setID("2211"); s3.setName("Somsri"); s3.setName("Somsri"); s3.setGPA(3.00); s3.setGPA(3.00); s3.showDetails(); s3.showDetails(); }}}}
  28. 28. คุณ ลัก ษณะเด่น ของโปรแกรมเชิง ออปเจ็ค การห่อ หุม ้ (Encapsulation) การสืบ ทอด (Inheritance) การมีไ ด้ห ลายรูป แบบ (Polymorphism)
  29. 29. การห่อ หุ้ม หมายถึง การจะเรีย กใช้ค ุณ ลัก ษณะของออปเจ็ค จะทำา ได้โ ดยการเรีย กผ่า นเมธอดเท่า นัน ้ หลัก การของการห่อ หุม คือ การกำา หนดให้ ้ คุณ ลัก ษณะของออปเจ็ค มีค ุณ สมบัต ิเ ป็น private และกำา หนดให้เ มธอดมีค ุณ สมบัต ิเ ป็น public
  30. 30. ข้อ ดีข องการห่อ หุ้ม การซ่อ นเร้น ข้อ มูล (Information Hiding) • ทำา ให้อ อปเจ็ค สามารถติด ต่อ กับ ออปเจ็ค ภายนอกผ่า น เมธอดที่เ ป็น ส่ว นของ interface เท่า นั้น ความเป็น โมดูล (Modularity) • การพัฒ นาโปรแกรมเชิง ออปเจ็ค จะสามารถกำา หนดให้ ออปเจ็ค แต่ล ะออปเจ็ค มีค วามเป็น อิส ระต่อ กัน
  31. 31. ตัว อย่า งโปรแกรมpublic class Student { public class Student { private String id; private String id; private String name; private String name; private double gpa; private double gpa; public void setID(String ID) { public void setID(String ID) { id = ID; id = ID; }} public void setName(String n) { public void setName(String n) { name = n; name = n; }} public void setGPA(double GPA) { public void setGPA(double GPA) { gpa = GPA; gpa = GPA; }} public void showDetails() { public void showDetails() { System.out.println("ID: "+id); System.out.println("ID: "+id); System.out.println("Name: "+name); System.out.println("Name: "+name); System.out.println("GPA: "+gpa); System.out.println("GPA: "+gpa); }}}}
  32. 32. การสืบ ทอด หมายถึง การนิย ามคลาสใหม่จ ากรูป แบบของ คลาสทีม อ ยูแ ล้ว โดยคลาสใหม่ส ามารถที่จ ะนำา ่ ี ่ คุณ ลัก ษณะและเมธอดของคลาสเดิม มาใช้ไ ด้ โดยในภาษาจาวาจะใช้ค ีย เ วิร ์ด extends ์ เพือ ระบุ ่ การสืบ ทอด ตัว อย่า ง
  33. 33. ตัว อย่า งโปรแกรมpublic class PartTimeStudent extends Student { } public class PartTimeStudent extends Student { }public class FullTimeStudent extends Student { } public class FullTimeStudent extends Student { }public class GradStudent extends Student { public class GradStudent extends Student { private String thesisTitle; private String thesisTitle; private String supervisor; private String supervisor; public void setThesisTitle(String t) { public void setThesisTitle(String t) { thesisTitle = t; thesisTitle = t; }} public void setSupervisor(String s) { public void setSupervisor(String s) { supervisor = s; supervisor = s; }}}}public class PhDStudent extends GradStudent { public class PhDStudent extends GradStudent { public boolean passQualify; public boolean passQualify; public boolean isPassQualify() { public boolean isPassQualify() { return passQualify; return passQualify; }}}}
  34. 34. การมีไ ด้ห ลายรูป แบบ หมายถึง การทีส ามารถตอบสนองต่อ ข่า วสาร ่ (เมธอด) เดีย วกัน ด้ว ยวิธ ีก ารทีต ่า งกัน และ ่ สามารถกำา หนดออปเจ็ค ได้ห ลายรูป แบบ Overridden method Dynamic Binding
  35. 35. ตัว อย่า ง
  36. 36. ตัว อย่า งโปรแกรมclass Ball { class Ball { public void throwBall() { } public void throwBall() { }}}class SoccerBall extends Ball { class SoccerBall extends Ball { public void throwBall() { public void throwBall() { System.out.println("Throwing soccerball"); System.out.println("Throwing soccerball"); }}}}class TennisBall extends Ball { class TennisBall extends Ball { public void throwBall() { public void throwBall() { System.out.println("Throwing tennisball"); System.out.println("Throwing tennisball"); }}}}public class TestBall { public class TestBall { public static void main(String args[]) { public static void main(String args[]) { Ball b1 = new Ball(); Ball b1 = new Ball(); SoccerBall b2 = new SoccerBall(); SoccerBall b2 = new SoccerBall(); Ball b3 = new SoccerBall(); Ball b3 = new SoccerBall(); }}}}
  37. 37. Unified Modeling Language (UML) เป็น ภาษาทีส ามารถนำา รูป กราฟฟิก มาจำา ลอง ่ โปรแกรมเชิง ออปเจ็ค ได้ ประกอบด้ว ยสองส่ว นคือ • ไดอะแกรมของคลาส (Class Diagram) • ไดอะแกรมของออปเจ็ค (Object Diagram)
  38. 38. ไดอะแกรมของคลาส เป็น สัญ ลัก ษณ์ท ใ ช้แ สดงคลาส ี่ ประกอบด้ว ยส่ว นต่า งๆสามส่ว นคือ • ชื่อ ของคลาส • คุณ ลัก ษณะภายในคลาส • เมธอดภายในคลาส
  39. 39. ไดอะแกรมของออปเจ็ค ประกอบไปด้ว ยส่ว นต่า งๆสองส่ว นคือ • ส่ว นที่ร ะบุช ื่อ ของออปเจ็ค • ส่ว นที่ร ะบุค ่า ของคุณ ลัก ษณะภายในออปเจ็ค
  40. 40. ขั้น ตอนการพัฒ นาโปรแกรม ขั้น ตอนการวิเ คราะห์ (Analysis) ขั้น ตอนการออกแบบ (Design) ขั้น ตอนการเขีย นโปรแกรม (Programming) ขั้น ตอนการทดสอบ (Testing) ขั้น ตอนการทำา งาน (Operation)
  41. 41. รูป แสดงขั้น ตอนการพัฒ นา โปรแกรม
  42. 42. สรุป เนื้อ หาของบท โปรแกรมเชิง ออปเจ็ค จะมีค ำา นิย ามทีส ำา คัญ สองคำา ่ คือ ออปเจ็ค และคลาส ออปเจ็ค คือ สิง ต่า งๆทีม อ ยู่ใ นชีว ิต ประจำา วัน จะ ่ ่ ี ประกอบไปด้ว ยคุณ ลัก ษณะและเมธอด คลาสเปรีย บเสมือ นพิม พ์เ ขีย วของออปเจ็คออป เจ็ค ทีถ ก สร้า งมาจากคลาส ออปเจ็ค หลายออปเจ็ค ่ ู สามารถถูก สร้า งจากคลาสหนึง คลาสได้ ่ คุณ ลัก ษณะของออปเจ็ค คือ ข้อ มูล ทีเ ก็บ อยูใ นออป ่ ่ เจ็ค ซึ่ง จะแบ่ง ออกเป็น ตัว แปรและค่า คงที่ คุณ ลัก ษณะของคลาสเป็น คุณ ลัก ษณะทีใ ช้ร ่ว มกัน ่ ของทุก ออปเจ็ค
  43. 43. สรุป เนื้อ หาของบท ภาษาจาวามีน ย ามในการเขีย นโปรแกรมเชิง ออป ิ เจ็ค เพือ ประกาศคลาส คุณ ลัก ษณะ เมธอด และ ่ ออปเจ็ค โปรแกรมเชิง ออปเจ็ค จะมีค ุณ ลัก ษณะเด่น อยู่ส าม ประการคือ การห่อ หุ้ม การสืบ ทอด และการมีไ ด้ หลายรูป แบบ การห่อ หุม คือ การทีใ ห้ค ุณ ลัก ษณะถูก ห่อ หุม อยู่ ้ ่ ้ ภายในเมธอด โดยกำา หนดให้ค ุณ ลัก ษณะมี access modifier เป็น private และกำา หนดให้ เมธอดมี access modifier เป็น public ข้อ ดีข องการห่อ หุม คือ การซ่อ นเร้น ข้อ มูล และ ้ ความเป็น โมดูล
  44. 44. สรุป เนื้อ หาของบท การมีไ ด้ห ลายรูป แบบคือ การทีก ำา หนดให้ม ก าร ่ ี ตอบสนองต่อ เมธอดเดีย วกัน ด้ว ยวิธ ีก ารทีต ่า งกัน ่ และสามารถกำา หนดออปเจ็ค ได้ห ลายรูป แบบ Unified Modeling Language (UML) เป็น ภาษา ทีใ ช้ร ูป กราฟฟิก เพื่อ จำา ลองระบบซอฟต์แ วร์ ในที่ ่ นีไ ด้แ นะนำา สัญ ลัก ษณ์ข อง UML ทีส ำา คัญ สอง ้ ่ อย่า งคือ ไดอะแกรมของคลาสและไดอะแกรมขอ งออปเจ็ค วัฎ จัก รการพัฒ นาโปรแกรมจะประกอบไปด้ว ยขั้น ตอนต่า งๆ 5 ขั้น ตอนคือ ขั้น ตอนการวิเ คราะห์ ขั้น ตอนการออกแบบ ขั้น ตอนการเขีย นโปรแกรม ขัน ้ ตอนการทดสอบ และ ขั้น ตอนการทำา งาน
  45. 45. แบบฝึก หัด แบบฝึก หัด ที่ 1 การออกแบบคลาส • เขีย นข้อ กำา หนดอธิบ ายระบบโปรแกรมสำา หรับ การตัด เกรดของรายวิช าหนึ่ง รายวิช า • เขีย นไดอะแกรมของคลาสเพื่อ อธิบ ายคุณ ลัก ษณะและ เมธอดทั้ง หมดที่ม ีอ ยู่ใ นคลาส

×