770 likes | 930 Views
Selected Topics in IT (Java). Week 4 &5: โปรแกรมเชิงวัตถุ และเมธอด. การเขียนโปรแกรมเชิงวัตถุคืออะไร. โปรแกรมที่จะรองรับงานของเราได้นั้นมักจะซับซ้อนเกินกว่าการเขียนโปรแกรมแบบ Structure Programming จะทำได้ผลดีพอแนวคิดของการเขียนโปรแกรมเชิงวัตถุจึงถูกคิดขึ้นมารองรับงานที่ซับซ้อน
E N D
Selected Topics in IT (Java) Week 4 &5: โปรแกรมเชิงวัตถุ และเมธอด
การเขียนโปรแกรมเชิงวัตถุคืออะไรการเขียนโปรแกรมเชิงวัตถุคืออะไร โปรแกรมที่จะรองรับงานของเราได้นั้นมักจะซับซ้อนเกินกว่าการเขียนโปรแกรมแบบ Structure Programming จะทำได้ผลดีพอแนวคิดของการเขียนโปรแกรมเชิงวัตถุจึงถูกคิดขึ้นมารองรับงานที่ซับซ้อน เทียบการเขียนโปรแกรมแบบ OOP กับรถยนต์ อย่างแรกโปรแกรมแบบ OOP แยกเป็นชิ้นส่วนที่มีมาตรฐานเหมือนรถยนต์ ซึ่งเราเรียกชิ้นส่วนนั้นว่า วัตถุ หรือ Object
การเขียนโปรแกรมเชิงวัตถุคืออะไร (ต่อ) • พอมองเป็น Object ก็ง่าย เราจะถอดเข้าถอดเปลี่ยนด้วยชิ้นส่วนใดก็ได้ ขอให้มันมีมาตรฐานเดียวกัน (เหมือนที่เรามองว่า เราถอดเปลี่ยนชิ้นส่วนรถยนต์ได้สะดวกนั่นเอง) ฉะนั้นมันก็ง่ายที่เราจะยอมให้ใครหลายๆ คนมาช่วยสร้างรถยนต์ หรือปรับแต่งรถยนต์
การเขียนโปรแกรมเชิงวัตถุคืออะไร (ต่อ) พอทุกคนที่เข้ามาช่วยกันสร้าง ช่วยกันใช้ Object ก็ทำให้ Object ต่างๆ ที่ประกอบกันนั้นทำงานได้สอดคล้องกันง่าย ซอฟต์แวร์ที่สร้างด้วย OOP จึงทำได้รวดเร็วขึ้น เพราะมีมาตรฐานที่ทุกคนทั่วโลกเข้าใจในแบบเดียวกัน
องค์ประกอบพื้นฐานของ OOP • Object • Class • Method
องค์ประกอบพื้นฐานของ OOP (ต่อ) 1. Object : ออบเจ็กต์ • ออบเจ็กต์เป็นสิ่งแรกที่ต้องทำรู้จักเมื่อจะเขียนโปรแกรมแบบ OOP เพราะสิ่งต่างๆ ใน OOP เราจะมองเป็นออบเจ็กต์ เช่น ออบเจ็กต์รถยนต์ Honda, ออบเจ็กต์รถยนต์ Toyota เป็นต้น • ความเป็นออบเจ็กต์จะแสดงให้เห็นชัด (หรือแยกแยะ) ด้วยสิ่งที่เรียกว่าคุณสมบัติเฉพาะ (Attribute) และความสามารถในการทำงาน (Method) ของออบเจ็กต์นั้นๆ
องค์ประกอบพื้นฐานของ OOP(ต่อ) 2. Class : คลาส • ก่อนที่จะสร้างออบเจ็กต์ขึ้นมาได้เราต้องสร้างคลาสขึ้นมาก่อน คลาสก็เปรียบเสมือนแม่แบบ หรือพิมพ์เขียว ในการสร้างออบเจ็กต์ต่างๆ ขึ้นมาก • ออบเจ็กต์ที่สร้างมาจากคลาสเดียวกันอาจมีรายการของคุณสมบัติที่เหมือนกัน, มีความสามารถที่เหมือนกัน แต่จะแตกต่างกันด้วย ค่าของคุณสมบัติต่างๆ
องค์ประกอบพื้นฐานของ OOP(ต่อ) 3. Method : เมธอด • เมธอด (Method) คือ ความสามารถในการทำงานของออบเจ็กต์แต่ละตัว เช่น ภายในคลาสรถยนต์ มีออบเจ็กต์จะมีเมธอดต่างๆ เช่น การติดเครื่อง, การวิ่ง, การหยุดรถ เป็นต้น
การสร้างคลาส • รูปแบบการสร้างคลาส
การสร้างคลาส (ต่อ) • ตัวอย่าง Attribute Method
การสร้างแอตทริบิวต์ รูปแบบการสร้างแอตทริบิวต์ รูปแบบการสร้างเมธอด
การสร้าง และใช้งานออบเจ็กต์ • รูปแบบการสร้างออบเจ็กต์ • รูปแบบที่ 1 • รูปแบบที่ 2
การเข้าถึงแอตทริบิวต์ และการใช้งานเมธอด
การเข้าถึงแอตทริบิวต์ และการใช้งานเมธอด (ต่อ) • ตัวอย่าง
คุณสมบัติพื้นฐานของ OOP • Inheritance • Encapsulate • Polymorphism
คุณสมบัติพื้นฐานของ OOP (ต่อ) 1. Inheritance : สืบทอดคลาส • Inheritance เป็นการแสดงความสัมพันธ์แบบสืบทอดคุณลักษณะ และพฤติกรรม ถ้าจะยกตัวอย่างง่ายๆ ก็เช่นพ่อแม่มีผิวสีดำ ลูกที่เกิดมาก็จะมีผิวดำ เช่นกัน
คุณสมบัติพื้นฐานของ OOP (ต่อ) • ตัวอย่าง Inheritance
คุณสมบัติพื้นฐานของ OOP (ต่อ) 2. Encapsulation : ซ่อนรายละเอียดไว้ภายใน • ผู้ใช้งานออบเจ็กต์จะไม่รู้เลยว่าออบเจ็กทำงานตามที่เขาต้องการได้อย่างไร หรือจริงๆแล้วในออบเจ็กประกอบด้วยฟิลด์และเมธอดอะไรบ้าง
คุณสมบัติพื้นฐานของ OOP (ต่อ) • ตัวอย่าง Encapsulation • ตัวอย่างการซื้อน้ำอัดลมจากเครื่องขายน้ำอัตโนมัติที่ผ่านมา ถ้าเราเป็นผู้สร้างออบเจ็กต์เครื่องขายน้ำขึ้นมาเราจะต้องสร้างฟิลด์และเมธอดขึ้นมาอีกจำนวนหนึ่งงเพื่อให้เครื่องขายน้ำทำงานได้ ซึ่งฟิลด์และเมธอดเหล่านี้คนซื้อน้ำอัดลมจะไม่รู้เลยว่ามีอยู่ เช่น ฟิลด์เก็บจำนวนน้ำอัดลมแต่ละประเภทที่เหลืออยู่ เป็นต้น
คุณสมบัติพื้นฐานของ OOP (ต่อ) 3. Polymorphism : รูปแบบการใช้ที่หลากหลาย • เป็นคุณสมบัติหนึ่งใน OOP ที่อธิบายได้ง่ายๆ ว่า ทำให้การใช้งานเมธอดเดียวกันมีหลายรูปแบบคือ แต่ละครั้งที่เรียกใช้เมธอดนั้นอาจให้ผลลัพธ์ที่ต่างกันได้
คุณสมบัติพื้นฐานของ OOP (ต่อ) • ตัวอย่าง Polymorphism • ยกตัวอย่างเช่น ถ้าเรามีคลาส Shape ซึ่งเป็นคลาสต้นแบบของรูปทรงต่างๆ ไม่ว่าจะเป็นสามเหลี่ยม หรือสี่เหลี่ยม โดยคลาส Shape มีเมธอด Area ซึ่งใช้หาพื้นที่ของรูปทรงนั้น แล้วเราสร้างคลาสขึ้นมาอีก 2 คลาสคือ Triangle และ Rectangle ซึ่ง inherit คลาส Shape มาอีกทีหนึ่ง
ข้อดีของ OOP • ง่ายในการแก้ไข • ปรับปรุงเฉพาะเมธอดที่จำเป็น • ง่ายต่อการพัฒนาความสามารถเพิ่ม • สามารถพัฒนาคลาสใหม่โดยต่อยอดจากคลาสแม่โดยใช้ Inheritance • สะดวกต่อการนำมาใช้ใหม่ • สร้างออบเจ็คใหม่ • ไม่ต้องระวังชื่อซ้ำ • ชื่อใช้เฉพาะคลาสใครคลาสมัน
สาระสำคัญ สำหรับส่วนนี้เราเริ่มต้นการเขียนโปรแกรมเชิงวัตถุ หรือ OOP ซึ่งเป็นความโดดเด่นของภาษา Java ที่ทำให้เราสามารถสร้างแอพพลิเคชันได้อย่างมีมาตรฐาน เพราะมันมีแนวคิด และระเบียบวิธีที่ดี ทำให้สามารถต่อยอดสร้างแอพพลิเคชันที่ซับซ้อนในชีวิตจริงได้ สามารถปรับปรุงแก้ไข และใช้งานร่วมกันระหว่างผู้เขียนโปรแกรมหลายๆ คนได้อย่างสะดวก แม้ว่าจะมีคำศัพท์และแนวคิดบางเรื่องที่เป็นนามธรรม แต่หากเปรียบกับสิ่งแวดล้อมรอบตัวเราแล้ว จะเห็นว่าไม่ยากเลย
เมธอดคืออะไร เมธอด (Method) คือ ความสามารถในการทำงานของออบเจ็กต์ มันถูกสร้างขึ้นมาพร้อมกับการสร้างออบเจ็กต์ ซึ่งออบเจ็กต์ที่สร้างจากคลาสเดียวกันก็จะมีรายการของเมธอดต่างๆ เหมือนกัน
เมธอดคืออะไร (ต่อ) • การที่ออบเจ็กต์มีเมธอดจะช่วยให้ผู้ใช้งาน ไม่ต้องกังวล หรือไม่ต้องสนใจว่า จะมีวิธีการทำงานภายในเมธอดเป็นอย่างไร สนใจเพียงแค่ใช้งานอย่างไร ช่วยให้เมธอดที่มีไม่ถูกยุ่งย่ามก้าวก่ายโดยไม่จำเป็น
อาร์กิวเมนต์และพารามิเตอร์อาร์กิวเมนต์และพารามิเตอร์ • อาร์กิวเมนต์ คือ ค่าคงที่หรือตัวแปรต่างๆ ที่เราจะส่งไปให้เมธอด เพื่อการนำข้อมูลเข้าไปประมวลผลในเมธอดนั้นๆ
อาร์กิวเมนต์และพารามิเตอร์ (ต่อ) • พารามิเตอร์ คือ ตัวแปรที่กำหนดขึ้นมาเพื่อรองรับค่าของ Arguments ที่จะส่งมา
เมธอดหลักและเมธอดย่อยเมธอดหลักและเมธอดย่อย เมธอดหลัก • สร้างขึ้นเพื่อเรียกเมธอดอื่นๆ ขึ้นมาทำงาน • มีการเข้าถึงเมธอดหลักแบบสาธารณะ(public) สามารถนำเมธอดหลักไปใช้ได้กับทุกๆ คลาส • สามารถเรียกใช้งานได้ทันทีไม่ต้องผ่านออบเจ็กต์ • ไม่มีการคืนค่ากลับไปที่เมธอดอื่น
เมธอดหลักและเมธอดย่อย (ต่อ) รูปแบบการสร้างเมธอดหลัก สำหรับเมธอดย่อยทั่วๆ ไปที่ไม่ใช่เมธอดหลัก อาจเป็น static method ,instant method, constructor method, Overloading method หรือ Overriding method ก็ได้ แต่ละชนิดมีโครงสร้างไม่เหมือนกับเมธอดหลัก ส่วนประกอบบางอย่างอาจมีหรือไม่มีก็ได้ตามแต่ลักษณะการทำงาน
เมธอดหลักและเมธอดย่อย(ต่อ)เมธอดหลักและเมธอดย่อย(ต่อ) รูปแบบการสร้างเมธอดย่อย
Method รูปแบบต่างๆ เมธอดมีอยู่ด้วยกัน 5 ประเภทแบ่งตามลักษณะการทำงานดังนี้ • ประเภทที่ 1 : static method static method เป็นเมธอดที่เรียกใช้ตัวแปรได้ทันที ไม่ต้องมีการสร้างออบเจ็กต์ขึ้นมาเพื่อเรียกใช้ตัวแปร เช่น การคำนวณทางคณิตศาสตร์ ซึ่ง static method จะรับค่าที่ผู้ใช้ต้องการคำนวณ และทำการคำนวณ แล้วส่งผลลัพธ์กลับไปยังผู้ใช้
Method รูปแบบต่างๆ (ต่อ) ประเภทที่ 2 :instance method • เป็นเมธอดทั่วๆ ไปที่สร้างขึ้นมาใช้กันบ่อยๆ เมธอดแบบนี้จะไม่มีคำว่า static อยู่ข้างหน้าตัวแปร เมื่อจะเรียกใช้ method ประเภทนี้ จะต้องมีการสร้างออบเจ็กต์ขึ้นมา
Method รูปแบบต่างๆ (ต่อ) ประเภทที่ 3 : constructor method • constructor คือเมธอดที่มีชื่อเดียวกับคลาส ซึ่งเมื่อออบเจ็กต์ใดๆ ถูกสร้างขึ้นมาจากคลาสแล้ว เมธอดนี้จะเริ่มทำงานทันทีเป็นเมธอดแรก (ปกติมักจะใช้กำหนดค่าเริ่มต้นของการทำงาน)
Method รูปแบบต่างๆ (ต่อ) ประเภทที่ 4 : Overloading method • Overloading method คือ เมธอดหลายเมธอดที่มีชื่อเดียวกัน แต่มีชนิดของตัวแปรต่างชนิดกัน หรือจำนวนอาร์กิวเมนต์ไม่เท่ากัน เพราะงานบางงานอาจใช้ชื่องานเดียวกัน แต่ต้องมีการแยกแยะว่า มีการส่งค่าตัวแปรชนิดใดมา เช่น ถ้าส่งค่าตัวแปรมาเป็น Integer ก็ให้ทำงานในเมธอดหนึ่ง ถ้าส่งมาเป็น String ก็ให้ทำงานในอีกเมธอดหนึ่ง
Method รูปแบบต่างๆ (ต่อ) ประเภทที่ 5 : Overriding method • Overriding method คือ เมธอดหลายเมธอดที่มีชื่อเดียวกัน ชนิดของตัวแปรเหมือนกัน แต่เขียนโปรแกรมในลักษณะที่เมธอดหนึ่งอยู่ในคลาสแม่ อีกเมธอดหนึ่งอยู่ในคลาสลูก ซึ่งเมื่อมีเมธอดชื่อซ้ำกัน รับค่าของตัวแปรเหมือนกันปรากฏในคลาสลูกโปรแกรมจะทำงานตามคำสั่งในคลาสลูกโดยอัตโนมัติ ซึ่งส่วนนี้เราจะอธิบายอย่างละเอียดในส่วน Inheritance
สาระสำคัญ ในส่วนนี้เราได้เรียนรู้เกี่ยวกับการใช้งานเมธอดอย่างละเอียด ซึ่งมีการใช้งานหลากหลายทั้งที่เป็นเมธอดหลัก (เมธอด main) ที่เราคุ้นเคย หรือเมธอดชนิด instance method, เมธอดชนิด static method รวมทั้งเมธอดชนิดพิเศษที่ทำงานตอนที่เริ่มต้นสร้างออบเจ็กต์นั่นคือ constructor method รวมทั้งการที่เราสามารถใช้เมธอดที่มีชื่อเดียวกัน (แต่อาร์กิวเมนต์ต่างกัน) ในรูปแบบของ Overloading method และการดัดแปลงเมธอดที่ได้จากการสืบทอดคลาสคือ Overriding Method
เมธอดสำเร็จรูป • เมธอดต่างๆ ที่ใช้จัดการเกี่ยวกับสตริง • เมดธอดสำเร็จรูปเกี่ยวกับตัวเลข และการคำนวณทางคณิตศาสตร์ • เมธอดเกี่ยวกับวัน เวลา • ฯลฯ