คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น

6,559 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,559
On SlideShare
0
From Embeds
0
Number of Embeds
557
Actions
Shares
0
Downloads
74
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น

  1. 1. การเขี ย น program เชิ ง วัต ถุ (Object-Oriented Programming: OOP) การเขี ย น program แบบ OOP มี ล ัก ษณะ 5 ประการ 1) ทุ ก สิ่ ง ทุ ก อย่า งคื อ object ในแง่ ห นึ่ งเราก็ อ าจตี ค วามว่า object เป็ นตัว แปรที่ มี ค วามพิ เ ศษอยู่ใ นตัว เอง คื อ นอกจากเก็ บ ค่ า ต่ า ง ๆ ได้แ ล้ว เรายัง สามารถที่ จ ะสั่ ง (request) ให้ object ทางาน (operation) ต่ า ง ๆ ที่ เ กี่ ย วกับ ตัว มัน เองด้ว ย 2) Program ประกอบไปด้ว ย object ที่ ต่ า งก็ ส่ ง ข้อ ความ (message) บอกให้กัน และ กัน ว่า ต้อ งทาอะไร การส่ ง message ก็ คื อ การส่ ง request หรื อ การเรี ย กใช้ function ของ object นั้น ๆ 3) Object แต่ ล ะตัว มี ห น่ ว ยความจาที่ เ ต็ม ไปด้ว ย object อื่ น ๆเราสร้ า ง object จาก object ตัว อื่ น ที่ มี อ ยู่แ ล้ว 4) Object มี รู ป แบบ หรื อ ชนิ ด ของตัว เอง (type/class) 5) Object ที่ ต้น ตอมาจาก type แบบเดี ย วกัน สามารถที่ จ ะรั บ ข้อ มู ล ซึ่ งกัน และกัน ได้
  2. 2. Object คือ สิ่ งที่มีคุณสมบัติและพฤติกรรมตามทีกาหนดไว้ในคลาส ่ แบ่งได้เป็ น 2 ประเภท คือ 1) สิ่ งที่เป็ นรู ปธรรม (tangible) คือสิ่ งที่เป็ นวัตถุและจับต้องได้อาทิเช่น นักศึกษา ปากกา และรถ เป็ นต้น 2) สิ่ งที่เป็ นนามธรรม (intangible) คือสิ่ งที่ไม่สามารถจับต้องได้อาทิเช่น คะแนน รายชื่อวิชา การลงทะเบียน การฝาก-ถอนเงิน และตารางเที่ยวบิน เป็ นต้น Object ประกอบไปด้ วย 1) คุณลักษณะ (attribute) หรื อข้อมูล (data) 2) เมธอด (method) หรื อพฤติกรรม (behavior) 3) คุณลักษณะ (attribute) หรื อข้อมูล (data) ข้อมูลของ Object แต่ละ Object อาจมี ข้อมูลที่แตกต่างกัน 4) เมธอด (method) หรื อพฤติกรรม (behavior) สิ่ งที่ Object สามารถกระทาได้
  3. 3. Class Class หมายถึงโครงสร้างของ object โดย class เป็ นตัวกาหนดว่า object นั้น จะมี data หรื อคุณลักษณะอะไร บ้าง และมี method อะไรบ้าง เปรี ยบเสมือนพิมพ์ เขียว (template) ของออปเจ็ค ออปเจ็คที่ถกสร้างมาจากคลาส (class) บางครั้ง ู เรี ยกว่าเป็ น instance ของคลาส คลาสหนึ่งคลาสสามารถสร้างออปเจ็คได้หลายออปเจ็ค Object นั้นจะถูกสร้างขึ้นตามกระบวนการทางานของ JVM โดยที่นกพัฒนาจะต้อง ั ั นิยาม Class ที่ตองการให้กบ JVM ้
  4. 4. ตัวอย่ าง คลาส เช่ น คลาส Student อาจสร้างออปเจ็ค s1,s2 หรื อ s3 ซึ่ งเป็ นออปเจ็คของคลาส Student
  5. 5. คุณลักษณะเด่ นของการเขียนโปรแกรมเชิงวัตถุ 1) การห่ อหุ้ม (Encapsulation) หมายถึงการจะเรี ยกใช้คุณลักษณะของออปเจ็ค จะทาได้โดยการเรี ยกผ่านเมธอดเท่านั้น หลักการของการห่อหุม คือการกาหนดให้คุณลักษณะของออปเจ็คมีคุณสมบัติเป็ น private และ ้ กาหนดให้เมธอดมีคุณสมบัติเป็ น public โดยมีเมธอด get / set ไว้เพื่อเข้าถึง data นั้นๆ จะเรี ยกว่า class นั้นๆ เป็ น Full Encapsulation class ข้ อดีของการห่ อหุ้ม (Encapsulation) - Flexibility ่ ่ มีความยืดหยุนสูง การใช้งาน method ใน OOP นั้นมีความยืดหยุนสูงกว่าการใช้งาน Data Fields ใน Object โดยตรงๆ - Maintainability การดูแลรักษาง่าย เพราะหากมีการเปลี่ยนแปลงภายใน Object ใดๆ หากว่าส่ วนติดต่อกับ Object ่ อื่นยังคงเดิมแล้ว ก็ยอมไม่ส่งผลกระทบต่องานทั้งระบบ - Information Hiding การซ่อนเร้นข้อมูลทาให้ออปเจ็คสามารถติดต่อกับออปเจ็คภายนอกผ่านเมธอดที่เป็ นส่ วนของ interface เท่านั้น - Modularity การพัฒนาโปรแกรมเชิงวัตถุ จะสามารถกาหนดให้ออปเจ็คแต่ละออปเจ็คมีความเป็ นอิสระต่อกัน
  6. 6. 2) การสื บทอด (Inheritance) ่ หมายถึงการนิยามคลาสใหม่จากคลาสที่มีอยูแล้วโดยคลาสใหม่สามารถที่จะนาคุณลักษณะและ เมธอดของคลาสเดิมมาใช้ได้ คือ Class หนึ่งๆสามารถสื บทอดคุณสมบัติบางประการจาก Class อื่น แล้วเพิ่มคุณสมบัติเฉพาะ ของ Class นั้นเข้าไป - Class ที่ได้รับการสื บทอดคุณสมบัติเรี ยกว่า Subclasses - Class ที่เป็ นต้นแบบเรี ยกว่า Superclass เป็ นการช่วยให้ไม่ตองพัฒนา ส่ วนที่ซ้ าหลายๆรอบ (Reusable) ้ Class หนึ่งๆจะมี Superclass ได้เพียง Class เดียวเท่านั้น (Single Inheritance) ในภาษาจาวา จะใช้คียเ์ วิร์ด extends เพือระบุการสื บทอด ่ 3) การมีได้หลายรู ปแบบ (Polymorphism) หมายถึง การที่สามารถตอบสนองต่อข่าวสาร (เมธอด) เดียวกันด้วยวิธีการที่ต่างกัน และสามารถ กาหนดออปเจ็คได้หลายรู ปแบบ - Overridden method - Dynamic Binding
  7. 7. การประกาศคลาส โปรแกรมภาษาจาวาแต่ละโปรแกรมจะประกอบไปด้วยคลาสอย่างน้อย หนึ่งคลาส โดยมีรูปแบบ การประกาศ ดังนี้ [modifier] class Classname { [class member] } Modifier คือคียเ์ วิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier) ่ class คือคียเ์ วิร์ด ของภาษาจาวา เพื่อระบุวาเป็ นการประกาศคลาส Classname คือชื่อคลาส Class member คือเมธอดหรื อคุณลักษณะ
  8. 8. การประกาศคุณลักษณะ คุณลักษณะของออปเจ็ค คือตัวแปรหรื อค่าคงที่ซ่ ึ งประกาศภายในออปเจ็ค โดยมีรูปแบบการประกาศดังนี้ [modifier] dataType attributeName; Modifier คือคียเ์ วิร์ดของภาษาจาวาที่อธิบายคุณสมบัติต่างๆ ของตัวแปรหรื อค่าคงที่ dataType คือชนิดข้อมูลซึ่งอาจเป็ นชนิดข้อมูลพื้นฐานหรื อชนิดคลาส attributeName คือชื่อของคุณลักษณะ
  9. 9. การประกาศเมธอด ่ ภาษาจาวากาหนดรู ปแบบของการประกาศเมธอดที่อยูในคลาสไว้ดงนี้ ั [modifier] return_type methodName ([argument]) { [method body] } Modifier คือคียเ์ วิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier) Return_type คือชนิดข้อมูลของค่าที่จะมีการส่ งกลับ methodName คือชื่อของเมธอด Arguments คือตัวแปรที่ใช้ในการรับข้อมูลที่ออปเจ็คส่ งมาให้ Method body คือคาสังต่างๆ ของภาษาจาวาทีอยูในเมธอด ่ ่ ่
  10. 10. การประกาศออปเจ็ค ่ ออปเจ็คทุกออปเจ็คในโปรแกรมภาษาจาวาจะต้องมีคาสังประกาศเพื่อระบุวาออปเจ็คนั้นเป็ น ่ ออปเจ็คของคลาสใด โดยมีรูปแบบการประกาศ ดังนี้ [modifier] ClassName objectName; modifier คือคียเ์ วิร์ดที่อธิบายคุณสมบัติต่างๆของออปเจ็ค ClassName คือชื่อของคลาสสาหรับออปเจ็คนั้น objectName คือชื่อของออปเจ็ค
  11. 11. การสร้างออปเจ็ค คาสังที่ใช้ในการสร้างออปเจ็คจะมีรูปแบบ ดังนี้ ่ objectName = new ClassName ([arguments]); objectName คือชื่อของออปเจ็ค new คือคียเ์ วิร์ดของภาษาจาวาเพือใช้ในการสร้างออปเจ็ค ่ ClassName คือชื่อของคลาส Arguments คือค่าที่ตองการส่ งผ่านในการเรี ยก Contructor ้
  12. 12. การประกาศและการสร้างออปเจ็ค คาสังที่ใช้ในการประกาศและสร้างออปเจ็ค สามารถที่จะรวมเป็ นคาสังเดียวกัน ่ ่ โดยมีรูปแบบคาสั่ง ดังนี้ [modifier] ClassName objectName = new ClassName ([arguments]); การเรียกใช้สมาชิกของออปเจ็ค การเรี ยกใช้คุณลักษณะของออปเจ็คมีรูปแบบ ดังนี้ objectName.attributeName; การเรี ยกใช้เมธอดของออปเจ็คมีรูปแบบ ดังนี้ objectName.methodName([arguments]); objectName คือชื่อของออปเจ็คที่สร้างขึ้น methodName คือชื่อของเมธอดของออปเจ็คนั้น ั arguments คือค่าที่ตองการส่ งผ่านไปให้กบเมธอดของออปเจ็คนั้น ้
  13. 13. ในบางกรณี อาจมีเมธอดใดๆ ที่สามารถรับค่าที่เป็ นตัวแปรได้หลากหลายชนิดได้ ถ้า กาหนดไว้เป็ นเมธอดเดียว อาจทาให้ผลลัพธ์ที่ได้เกิดความผิดพลาดได้ ดังนั้นถ้าชนิดตัวแปรเป็ น คนละชนิดกัน ให้สร้างเมธอดขึ้นมาใหม่ โดยใช้ชื่อเมธอดเดียวกัน แต่สร้างให้เมธอด มีชนิดของ ตัวแปรใน parameter list ต่างกัน โดยจะสร้างเมธอดใหม่ ขึ้นมาเป็ นจานวนเท่ากับชนิดของตัว แปรที่เป็ นไปได้ เมื่อมีการใช้เมธอด ชื่อนี้โปรแกรมจะเรี ยกเมธอดที่มีชนิดของตัวแปร ตรงกับที่ ่ ่ ต้องการโดยอัตโนมัติ เรี ยกวิธีการนี้วา “Overloading” และเรี ยกเมธอดที่ใช้วธีการนี้วา ิ “Overloading Methods”
  14. 14. ตัวอย่างโปรแกรม public class TestOverloading { public static void main(String[] args) { System.out.println("The maximum between is " + max(3,5)); System.out.println("The maximum between is " + max(4.5,6.8)); } static double max(double num1,double num2) { if(num1>num2) return num1; else return num2; } static int max(int num1,int num2) { if(num1>num2) return num1; else return num2; } } //class TestOverloading

×