Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java Programming [4/12] : Object Oriented Concept

4,029 views

Published on

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

Published in: Technology
  • Dating direct: ❶❶❶ http://bit.ly/2Qu6Caa ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❶❶❶ http://bit.ly/2Qu6Caa ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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 การออกแบบคลาส • เขีย นข้อ กำา หนดอธิบ ายระบบโปรแกรมสำา หรับ การตัด เกรดของรายวิช าหนึ่ง รายวิช า • เขีย นไดอะแกรมของคลาสเพื่อ อธิบ ายคุณ ลัก ษณะและ เมธอดทั้ง หมดที่ม ีอ ยู่ใ นคลาส

×