Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore วิชา การเขียนโปรแกรมเชิงวัตถุ (1)

วิชา การเขียนโปรแกรมเชิงวัตถุ (1)

Published by narisarawongchareeaoy, 2023-03-06 13:05:00

Description: วิชา การเขียนโปรแกรมเชิงวัตถุ (1)

Search

Read the Text Version

วิชา การเขียนโปรแกรมเชิงวตั ถ ุ

ตอนท่ี 1 การเขียนโปรแกรมเชงิ วตั ถุ การเขียนโปรแกรมคอมพิวเตอร์แบบมีโครงสร้าง มลี กั ษณะแยกสว่ นการทางานของ โปรแกรม ในการจดั การข้อมลู โดยใช้รูปแบบของฟังก์ชนั หรือโปรแกรมย่อย การทางาน ของฟังก์ชนั ยงั มขี ้อเสยี สาหรับการนาไปใช้ในการพฒั นาโปรแกรมที่มคี วามซบั ซ้อนสงู ขนึ ้ เม่อื นาไปใช้ทาให้โปรแกรมนนั ้ มี ความซบั ซ้อนตามไปด้วย จงึ เกิดปัญหาเรื่องของการ นามาพฒั นา ปรับปรุง เปล่ียนแปลงและแก้ไข ซง่ึ จะมีความยงุ่ ยากมาก ดงั นนั ้ จงึ ได้มีการ พฒั นาแนวคดิ ท่ีเรียกวา่ “การเขียนโปรแกรมเชิงวตั ถ”ุ แก้ปัญหาและสนบั สนนุ การพฒั นา โปรแกรมท่ีมีความซบั ซ้อน จงึ ทาให้มีความนิยมนามาใช้พฒั นา จานวนมากในปัจจบุ นั การเขียนโปรแกรมเชงิ วตั ถมุ รี ายละเอียดดงั ต่อไปนี ้

ความรู้พืน้ ฐานของการเขียนโปรแกรมเชิงวตั ถุ การสร้างโปรแกรมยอ่ ยหรือฟังก์ชนั จงึ ขนึ ้ ตรง ตอ่ โครงสร้างข้อมลู เม่ือมีการเปลยี่ นแปลง โครงสร้างของข้อมลู จงึ ต้องเปลี่ยนการทา โปรแกรมไปด้วย ในบางครัง้ อาจต้องกลบั มาเขยี น โปรแกรมขนึ ้ มาใหม่ จะเห็นได้จากระบบ ใหญ่ที่มีความซบั ซ้อนมาก วธิ ีการเขยี นโปรแกรมแบบ มีโครงสร้าง จงึ ไม่เหมาะสมสาหรับการ สร้างแอพพลิเคชนั่ ท่ีไมใ่ หญ่มาก (ธีรวฒั น์ ประกอบผล, 2558) การเขียนโปรแกรมเชิงวตั ถุ (Object Oriented Programming) หมายถงึ การมองการเขียน โปรแกรมเป็น ลกั ษณะของวตั ถมุ ากกวา่ การกระทา (Weisfeld, 2013) วตั ถบุ นโลกของการเขียน โปรแกรมมีหน้าที่ความรับผิดชอบเป็นของตนเอง (ศภุ ชยั สมพานิช, 2559) และการเขยี น โปรแกรม เชิงวตั ถจุ ะแยกปัญหาหรือระบบงานออกเป็นสว่ น เพื่อลดความซบั ซ้อนให้น้อยลง (สชุ าติ ค้มุ มณี, 2558) เชิงวตั ถเุ ป็นวธิ ีการใหมใ่ นการเขยี นโปรแกรม โดยม่งุ ที่จะเพ่ิม ประสิทธิภาพในการสร้ างโปรแกรม ทาให้การพฒั นาโปรแกรมด้วยวิธีนใี ้ ช้เวลาสนั้ ลงและต้นทนุ ต่าลง โดยการนาชดุ คาสงั่ ที่สร้าง ไปแล้วกลบั มาใช้งานใหม่ได้ และยงั หาจดุ ที่ต้องการแก้ไขในโปรแกรมได้งา่ ยขนึ ้ เป็นวิธีการ เขยี น โปรแกรมที่นาแนวคดิ ในความเป็นจริงที่อย่รู อบตวั มาใช้กบั การเขียนโปรแกรม เชน่ เปรียบเทียบ วธิ ีการท่ีผ้เู ขยี นโปรแกรมกบั ชา่ งยนต์ ประกอบรถยนต์ขนึ ้ มาหนง่ึ คนั ส่ิงที่ต้องการ คือ เคร่ืองยนต์ ถงั นา้ มนั ล้อรถ โครงสร้างรถ เป็นต้น เม่ือได้ช่ินสว่ นทีต่ ้องการแล้ว ก็นามา ประกอบเข้าด้วยกนั จะเห็นวา่ ชา่ งยนต์ไม่จาเป็นต้องสร้างเครื่องยนต์ และอปุ กรณ์ตา่ ง ๆ ด้วยตวั ช่างยนต์เอง แต่ จะเป็น ผ้สู ร้างที่มีความเข้าใจสว่ นประกอบ ทางานอย่างไรและจะนาเอาไปใช้ร่วมกบั ชิน้ สว่ น อนื่ ได้อยา่ งไร ชา่ งยนต์สามารถประกอบรถยนต์ขนึ ้ มาด้วยความชานาญของตนเอง เชน่ เดียวกนั กบั การสร้าง

ข้อดแี ละข้อเสียของการเขียนโปรแกรมเชงิ วัตถุ ข้อดี 1.เข้าง่าย โดยการมองความจริงในรอบตวั ที่เป็นวตั ถแุ ละมีควาหมายภายในตวั เอง 2.สามารถปรับปรุงแก้ไขโปรแกรมได้งา่ ย และสง่ ผล กระทบตอ่ โปรแกรมน้อย เน่ืองจาก แยกสว่ น การทางานกนั 3.มีรูปแบบการตรวจสอบข้อมลู ผิดของโปรแกรม จงึ มี ความถกู ต้อง และปลอดภยั สงู 4.มีความปลอดภยั ในขบวนการเข้าถงึ ข้อมลู (Information Hidden) ที่ซ้อนกนั ของข้อมลู สงู 5.มีกระบวนการของการสืบทอด ทาให้สะดวกในการเขียนโปรแกรม 6.ลดขนั้ ตอนการเขียนโปรแกรมเน่ืองจากมีคณุ สมบตั ขิ องการนากลบั มาใช้ใหม่ (Reusability) 7.เน่ืองด้วยโปรแกรมมีคณุ ภาพสงู จงึ สามารถนาไปใช้ได้หลายแพลตฟอร์ม (Platform ข้อเสีย 1.การเรียนรู้ขนั้ ตอนอาจยากตอ่ การทางานความเข้าใจ อนั เนื่องยงั ยดึ ตดิ กบั แนวคดิ การ เขียนโปรแกรมแบบ โครงสร้าง 2.การทางานเน่ืองจากมีความซบั ซ้อน จงึ ได้ให้การทางานนนั้ ช้ากวา่ การเขียนโปรแกรม แบบโครงสร้ าง 3.คาจากดั ความในเชิงวตั ถมุ ีคอ่ นข้างมากและมีความสมั พนั ธ์ที่ซ้อนกนั จงึ อาจทาให้เกิด ความกากวมในการเข้าใจ

องค์ประกอบของเชิงวตั ถุ การเขียนโปรแกรมเชงิ วตั ถุ มีแนวคดิ และ องค์ประกอบมาจากความหมายของเชิงวตั ถุ ประกอบไปด้วย 4 สว่ นสาคญั ได้แก่ คลาส วตั ถุ คณุ สมบตั ิ และพฤติกรรม (Weisfeld, 2013) แตล่ ะ สว่ นมีรายละเอยี ดดงั ตอ่ ไปนีค้ ลาส 1 วตั ถ2ุ 3 n คณุ สมบตั ิ พฤตกิ รรม 1. อธิบายสว่ นประกอบของเชิงวตั ถุ โดยแนวคิดประกอบไปด้วยคลาส ภายในคลาสนนั้ จะประกอบด้วยคณุ สมบตั แิ ละพฤติกรรม กาหนด คณุ ลกั ษณะของวตั ถุ วตั ถใุ ดท่ีมีคณุ สมบตั ิ หรือพฤตกิ รรมเดียวกบั คลาสก็ ถือวา่ เป็ นวตั ถนุ น่ั อยใู่ นคลาสดงั กล่าว สว่ นประกอบของเชิงวตั ถุ มี รายละเอียดดงั ตอ่ ไปนี ้ คลาส คลาส (Class) หมายถงึ ศพั ท์ท่ีอธิบายโครงร่างหรือพมิ พ์เขียวท่ี กาหนดขอบเขตกลมุ่ ของวตั ถุ (Weisfeld, 2013)มีลกั ษณะการให้ นิยามความหมายและคาจากดั ความกลมุ่ ของวตั ถกุ ลมุ่ ใดกลมุ่ หน่งึ มี รายละเอียดดงั ตอ่ ไปนี ้ แม่แบบ คณุ สมบตั ิ : แขน ขา ปาก หู ตา จมกู รหสั บตั ร ชื่อ เพศ อายุ พฤตกิ รรม : ว่งิ หวั เราะ ปรบมือ สา่ ยหวั พดู ชก กระโดด

ตวั อยา่ งคลาสมนษุ ย์ เม่อื มองในความหมายขอบเขตของมนษุ ย์ ก็จะให้ ความหมายวา่ เป็นลกั ษณะของสงิ่ มชี ีวิตที่เป็นรูปธรรม เชน่ แขน ขา หู ตา จมกู เป็นต้น หรือคณุ สมบตั ดิ ้าน นามธรรมภายในตวั ของมนษุ ย์ เช่น ช่ือ รหสั ประจาตวั ประชาชน ที่อยู่ อายุ เพศ นา้ หนกั สว่ นสงู เป็น ต้น ในสว่ นนีจ้ ะมองในลกั ษณะของคลาสนนั ้ บง่ บอกลกั ษณะภายในตวั ของคลาสและสว่ นที่สอง เป็น สว่ นของการมองในสว่ นของคลาสนนั ้ สามารถเกิดการกระทาจากตวั อย่างคลาสของมนษุ ย์ สามารถท่ี จะ กระทาหรือแสดงพฤติกรรมออกมาได้ เชน่ วิ่ง หวั เราะ ปรบมือ สา่ ยหวั พดู แกวง่ แขน กระโดด เป็นต้น ซง่ึ เมือ่ มองในความหมายภาพรวมเห็น ได้ว่าเป็นลกั ษณะของมมุ มองที่เป็นนามธรรม ที่กาหนด ขอบเขตของ กลมุ่ ใดกลมุ่ หนึง่ 2. คณุ สมบตั ิ คณุ สมบตั ิ (Properties) หมายถึง องค์ประกอบ ภายในคลาสใช้ในการกาหนดข้อมลู ทเ่ี กบ็ ภายในคลาสหรือสว่ นท่ี กาหนดคณุ ลกั ษณะ ข้อกาหนดของคลาสนนั ้ มี(บญั ชา ปะสลี ะเตสงั , 2558) แตล่ ะคลาสกาหนดคณุ สมบตั ิที่ซง่ึ กาหนดสถานะของวตั ถทุ ่ีเกิด จากคลาสนนั ้ (Weisfeld, 2013)มรี ายละเอียดดงั ตอ่ ไปนี ้ แม่แบบ คณุ สมบตั ิ : แขน ขา ปาก หู ตา จมกู รหสั บตั ร ชื่อ เพศ อายุ

ตวั อย่างคณุ สมบตั ิที่เกิดจากคลาสมนษุ ย์ มนษุ ย์จะมคี ณุ สมบตั ภิ ายใน คลาสของ มนษุ ย์นนั ้ มี เช่น แขน ขา ช่ือ รหสั บตั ร ที่อยู่ อายุ เพศ เป็นต้น คณุ สมบตั เิ ป็นองค์ประกอบท่ีสาคญั ของคลาส โดยจะกาหนด คณุ ลกั ษณะที่มีของคลาสนนั ้ คณุ สมบตั บิ างอยา่ งจะสง่ ผลตอ่ เน่ืองไป ยงั พฤติกรรมที่เกิดขนึ ้ ของคลาส 3. พฤตกิ รรม พฤตกิ รรม (Behavior) หรือการกระทา (Action) หมายถงึ องค์ประกอบท่ีอย่ภู ายในคลาส ใช้ในการกาหนดการกระทา บางอย่างของคลาส (ธีรวฒั น์ ประกอบผล, 2558) พฤตกิ รรมเป็นการ กาหนดขอบเขตที่สามารถกระทาได้ของคลาส สว่ นมากจะเกิดจาก คณุ สมบตั ทิ ่ีมอี ยใู่ นคลาสพฤติกรรม มีรายละเอียดดงั ตอ่ ไปนี ้ แม่แบบ พฤติกรรม : วิ่ง หวั เราะ ปรบมอื สา่ ยหวั พดู ชก

ภาพท่ี 4 พฤตกิ รรม ภาพที่ 4 ตวั อยา่ งพฤตกิ รรมท่ีเกิดจากคลาสมนษุ ย์ พฤติกรรมมกั เกิดจากคณุ สมบตั ิท่ีมี ภายในคลาส เชน่ คณุ สมบตั ิมขี าก็ จะสามารถวง่ิ ได้มแี ขนก็สามารถชกได้ มีปากก็สามารถหวั เราะหรือ พดู ได้เป็นต้น พฤตกิ รรมเป็นกระบวนการท่ีเกิดขนึ ้ ตงั ้ แตเ่ ข้าข้อมลู ประมวลผลและเกิดผลลพั ธ์ 4. วตั ถุ วตั ถุ (Object) หมายถงึ การมองสงิ่ ท่ีอย่รู อบข้างเป็นวตั ถุ เป้ าหมาย ภายในวตั ถจุ ะประกอบ ไปด้วยคณุ สมบตั ขิ องวตั ถแุ ละ พฤติกรรมหรือการกระทาท่ีตอบสนองต่อเหตกุ ารณ์ที่จะทาให้เกิดขนึ ้ ของวตั ถุ (สชุ าติ ค้มุ มณี, 2558) มีรายละเอียดดงั ตอ่ ไปนี ้ แม่แบบ คณุ สมบตั ิ : แขน ขา ปาก หู ตา จมกู รหสั บตั ร ชื่อ เพศ อายุ พฤตกิ รรม : วิง่ หวั เราะ ปรบมอื สา่ ยหวั พดู ชก กระโดด

ภาพที่ 5 วตั ถุ 6 วตั ถุ คือ ส่ิงท่ีมีตวั ตนที่เกิดขนึ ้ จากคลาส ดงั นนั้ จงึ มีคณุ สมบตั แิ ละ พฤตกิ รรมที่ได้รับมาจาก คลาส วตั ถมุ ีข้อมลู ของตนเองที่จะบง่ บอกความแตกตา่ ง เฉพาะวตั ถุ ดงั ตวั อย่างภาพท่ี 5 วตั ถ1ุ และ วตั ถ2ุ จะมีคณุ สมบตั ิเหมือนกนั คอื รหสั บตั ร ช่ือ เพศและอายุ แตข่ ้อมลู ที่อย่ภู ายในคณุ สมบตั ินีจ้ ะมี ความแตกตา่ งกนั ที่บง่ บอกคณุ ลกั ษณะเฉพาะของวตั ถุ จากหลกั การแนวความคดิ ของเชิงวตั ถดุ งั กลา่ ว การ เขยี นโปรแกรมด้วยภาษาโปรแกรมที่ สนบั สนนุ การเขยี นโปรแกรมแบบเชิงวตั ถุ เมื่อ นาหลกั การนีไ้ ปเขียนในโปรแกรมจะมรี ูปแบบและ คาสง่ั ท่ีแตกตา่ งกนั แตแ่ นวคิดของการทางานของโปรแกรมจะใช้หลกั เดยี วกนั ดงั ที่ได้ กลา่ วไว้ข้างต้น ขัน้ ตอนการเขียนโปรแกรมเชิงวัตถุ การเขยี นโปรแกรมเชิงวตั ถหุ รือการเขียน โปรแกรมแบบวตั ถุ จะมองทกุ อยา่ งของปัญหา เป็นวตั ถุ หากวตั ถใุ ดมีลกั ษณะ คล้ายกนั กจ็ ะรวมทงั้ หมดให้เป็นคลาส ถ้าหากมีการประกาศตวั แปรหรือ สร้างข้อมลู ขนึ ้ มา ข้อมลู นนั้ ก็จะถกู เกบ็ ไว้ใช้ในวตั ถนุ นั้ การกระทากบั วตั ถจุ ะกระทาผา่ น พฤตกิ รรม ของคลาสนนั้ ภายในวตั ถจุ ะประกอบไปด้วยสว่ นควาญสองสว่ น คอื คณุ สมบตั ิ เป็นข้อมลู ประจาตวั ของ วตั ถุ และพฤติกรรม บง่ บอกวตั ถกุ าลงั ทาส่งิ ใด อยู่ ถ้าหากมีการสร้างวตั ถขุ นึ ้ มาและโปรแกรมต้องการ จดั การกบั ข้อมลู ท่ีเป็น คณุ ลกั ษณะของวตั ถุ จะกระทาผ่านพฤตกิ รรม (ธีรวฒั น์ ประกอบผล, 2558) ภาษา ไพธอน สนบั สนกุ การเขียนโปรแกรมเชิงวตั ถุ จากความหมายและหลกั การเชิงวตั ถุ สามารถนามาเขียนโปรแกรมมีสว่ นประกอบรายละเอียดดงั ตอ่ ไปนี ้

บรรทดั ท่ี คาส่งั 1.คลาส แอททริบิวต์และเมธอด การสร้างคลาสนนั้ จะใช้คาสงั่ class เป็นการ กาหนดการสร้างคลาส ซงึ่ ในคลาสจะประกอบ ไปด้วยการทางาน 3 สว่ น คือ สว่ นของ 1 class circle_area(): แอทริบวิ ต์เมธอด และคาสมสงั่ self แอททริบิวต์ (Attribute) หมายถงึ ตวั แปรท่ี 2 radius=10 อย่ภู ายในคลาส สาหรับเก็บข้อมลู เพื่อใช้งาน ภายในคลาสและออ็ บเจกต์ในเบอื ้ งต้น 3 area=0 คือ คณุ สมบตั ิหรือพร๊อพเพอร์ตี ้(สชุ าติ ค้มุ มณี, 2558) เมธอด (Method) 4 def cal_area(self): หมายถงึ ฟังก์ชนั สร้างขนึ ้ ภายในคลาส เพ่ือดาเนินการหรือกระทาตอ่ เหตกุ ารณ์ตา่ งๆ(สุ 5 self.area ชาติ ค้มุ มณี, 2558) ในเบอื ้ งต้นกค็ อื พฤตกิ รรมหรือการกระทาการดาเนนิ การสร้าง 6 =22/7*(self.radius**2) คลาสมีรูปแบบการเขียนเหมือนกบั ฟังก์ชนั คาสง่ั self หมายถงึ คาสง่ั ท่ีมีความ 7 def show_area(self): ความสาคญั ภายในคลาส คาสง่ั นีจ้ ะถกู อ้างองิ ใช้งาน ภายในคลาสผา่ นทงั้ แอทริบิวต์ print ('พืน้ ที่วงกลม และเมธอด (Sheppard, 2014) จากลกั ษณะข้างต้น รูปแบบของการสร้างคาสง่ั =',self.area) คลาส แอททริบวิ ต์และเมธอด องค์ประกอบของคลาส เม่ือนามาเขียนโปรแกรมมี รูปแบบโครงสร้างการทางาน รายละเอียด ดงั ตอ่ ไปนี ้ ตวั อยา่ งที่ 1 การสร้างคลาส

บรรทดั ท่ี คาส่ัง 1 class circle_area(): 2. วตั ถแุ ละอนิ สแตนซ์ วตั ถหุ รือ อ๊อบเจกต์ 2 radius=10 (ราชบณั ฑิตยสถาน, 2554) คอื การให้นิยาม 3 area=0 ความหมายด้านแนวคิด แตเ่ มื่อนาไปใช้ในการ 4 pi=22/7 เขียนโปรแกรมเชิงวตั ถุ เม่ือมีการสร้างวตั ถทุ ่ีเกดิ 5 def cal_area(self): จากคลาส วตั ถทุ ี่ถกู สร้างขนึ ้ ใหม่ นนั้ จะเรียกวา่ 6 self.area =self.pi*(self.radius**2) def “อนิ สแตนซ์ (Instance)” (Gerrard, 7 show_area(self): 2016) หรือสิ่งที่เป็นจริง ท่ีสร้างหรือเกิดจาก 8 print ('พนื ้ ที่วงกลม =',self.area) คลาส (สชุ าติ ค้มุ มณี, 2558) การท างานของ 9 circle1=circle_area() โปรแกรมจะใช้งานผ่านอนิ สแตนซ์ รูปแบบการ 10 print(circle1.radius) ใช้คาสงั่ สร้างอินสแตนซ์ สามารถนาไปใช้ในการ 11 print(circle1.area) เขียนโปรแกรมได้ดงั โปรแกรม ตวั อย่างท่ี 2 12 circle1.cal_area() ตวั อย่างท่ี 2 การสร้างออ็ บเจกตฺหรืออนิ สแตนซ์ 13 circle1.show_area()

3. การเข้าถงึ คลาส ออ็ บเจกต์ต์ท่ีเกิดจากคลาส สามารถท่ีจะเข้าถงึ รายละเอยี ดภายในคลาสได้ โดยทว่ั ไป การประกาศแอททริบวิ ต์และเมธอด จะมีลกั ษณะของการเข้าถึงแบบ public จงึ จะสามารถ เปลยี่ นแปลง รายละเอียดข้อมลู ท่ีอยใู่ นแอททริบิวต์ได้ การเข้าถงึ แบบ public โปรแกรมตวั อยา่ งท่ี 3 การท างานมีการสง่ คา่ เข้า ไปในคลาสผา่ น อินสแตนซ์ circile1 ผา่ นเข้าไปยงั แอททริบิวต์ radius ที่อยใู่ นคลาส ดงั บรรทดั ที่ 11 แอททริบิวต์ได้ มีการเปลยี่ นแปลงคา่ เดมิ เป็น คา่ ใหม่ท่ีถกู สง่ เข้าไปภายในคลาส การเข้าถงึ คลาสในลกั ษณะนีเ้ป็ น รูปแบบการเข้าถึงคลาสแบบ public 4. คอนสตรัคเตอร์และดสี ตรัคเตอร์ คอนสตรัคเตอร์ (Constructor) หมายถงึ เมธอดหรือฟังก์ชนั แรกท่ีจะถกู เรียกใช้ เม่ือมี การ สร้างวตั ถหุ รืออนิ สแตนซ์ เพื่อกาหนดสภาพแวดล้อมเบอื ้ งต้นทกุ ครัง้ (สุ ชาติ ค้มุ มณี, 2558) กอ่ นนา ข้อมลู นนั้ ไปสขู่ บวนการ การทางานตอ่ ตาม เง่ือนไขตอ่ ไป การสร้างคอนสตรัคเตอร์จะใช้คาสงั่ __int__ เป็นการระบุ เมธอดนนั้ เป็นคอนสตรัคเตอร์ ดีสตรัคเตอร์ (Destructor) หมายถงึ เมธอดหรือฟังก์ชนั ท่ีจะถกู เรียกใช้เม่ือมีการลบวตั ถุ หรืออนิ สแตนซ์ มี จดุ ม่งุ หมายเพือ่ ทาการล้างตวั แปรและคนื หนว่ ยความจาสรู่ ะบบ การสร้างดี สตรัคเตอร์ จะใช้คาสง่ั __del__ เป็ นการระบเุ มธอดนนั้ เป็นดีสตรัคเตอร์

5. การส่งผ่านค่าและคืนค่าพารามิเตอร์ การเข้าถงึ คลาสท่ีเป็ นแบบ private จะไม่สามารถเปลีย่ นแปลงข้อมลู ที่ อยภู่ ายในในคลาส โดยตรงผา่ นอินสแตนซ์ได้ ดงั นนั้ วิธีการท่ีจะให้สามารถ เปลย่ี นแปลงข้อมลู ได้ คือ การใช้วิธีสง่ คา่ พารามิเตอร์เข้าในเมธอดภายใน คลาส เมธอดท่ีรับคา่ เข้าไปจะต้องเป็ นเมธอดแบบ public ที่อนญุ าตให้ ใช้เมธอด เพ่ือดาเนินการเปลย่ี นแปลงข้อมลู ท่ีอยภู่ ายในคลาสและคนื คา่ ข้อมลู ออกมาจาก เมธอด ซงึ่ คา่ ที่คนื อาจนาไปใช้ในการทางานในเมธอดอื่น ภายในคลาสหรือคืนคา่ กลบั มายงั อนิ สแตนซ์ 6. การสบื ทอดคลาส การสืบทอดคลาส (Inheritance) หมายถงึ ความสามารถของคลาสท่ี มีอยแู่ ล้วกลบั มาใช้ใหม่ (ธีรวฒั น์ ประกอบผล, 2558) เป็นการสบื ทอด คณุ สมบตั จิ ากคลาสหลกั (Super Class) ไปยงั คลาส ยอ่ ย (Sub Class) นน่ั ก็คอื แอททริบวิ ต์และเมธอด โดยมีแนวคดิ คณุ สมบตั บิ าง ประการท่ีเหมือนกนั ควรสืบทอดระหวา่ งคลาสแม่และคลาสลกู ได้ โดยไม่ จาเป็ นต้องสร้างคณุ สมบตั ิใหม่ (สชุ าติ ค้มุ มณี, 2558)

7. การโอเวอร์ไรดงิ้ การโอเวอร์ไรดงิ ้ (Overriding) หมายถงึ การดาเนินการของเมธอดหรือฟังก์ชนั ท่ีมีชื่อ เหมือนกนั ในคลาสแมแ่ ตม่ ีการดาเนนิ การท่ีแตกตา่ งกนั ในคลาสลกู (สชุ าติ ค้มุ มณี, 2558) ซงึ่ คลาส ท่ีถกู แยกออกไปจากคลาสแม่ สามารถเปลีย่ นแปลง รายละเอยี ดภายในเมธอดลกู งา่ ยกวา่ การ เปล่ยี นแปลงในเมธอดแม่ (Rossum, 2013) ในเมธอดท่ีมีชื่อเดยี วกนั 8. การโอเวอร์โหลดดงิ้ การโอเวอร์โหลดดงิ ้ (Overloading) ที่ใช้งานภายในคลาส ประกอบไปด้วย การโอเวอร์โหลด ดงิ ้ เมธอดและการโอเวอร์โหลดดงิ ้ ตวั ด าเนินการ ซง่ึ มีลกั ษณะการ ทางานดงั ตอ่ ไปนี ้ 8.1 การโอเวอร์โหลดดงิ ้ การโอเวอร์โหลดดงิ ้ (Overloading Method) หมายถงึ เมธอดหรือฟังก์ชนั ที่มีช่ือ เหมือนกนั แตส่ ามารถแยกการท างานด้วยอากิว เมนต์ มีลกั ษณะใกล้เคยี งกนั กบั โอเวอร์ไรดงิ ้ แตต่ า่ งกนั กนั ตรงท่ีโอเวอร์โหลดดงิ ้ จะอ ย่ใู นคลาสเดียวกนั หรือสบื ทอดคลาสกไ็ ด้ แตโ่ อโวอร์ไรดงิ ้ จะเป็นลกั ษณะของการสบื ทอดคลาส 8.2 การโอเวอร์โหลดตวั ดาเนินการ การโอเวอร์โหลตวั ดาเนินการ หมายถงึ การ อนญุ าตให้อ๊อบเจ๊กท่ีสร้างจากคลาส สามารถใช้ตวั ดาเนินการพืน้ ฐานได้

9. การสร้างโมดลู คลาสและเรียกใช้โมดูลคลาส การทางานของโปรแกรม เพื่อให้ได้ผลลพั ธ์ตามท่ีต้องการ อาจต้องมีหลายสว่ นท่ีจะ ทาหน้าที่ แตกตา่ งกนั ออกไปในการช่วยกนั ทางาน ซง่ึ ลกั ษณะของการแยกสว่ นการ ทางานที่มีหน้าท่ีแตกตา่ งกนั แตล่ ะสว่ นจะถกู สร้างไว้ในลกั ษณะของคลาส แตล่ ะ คลาสต้องมีการพงึ พาอาศยั ในการท างานเพ่ือให้ ได้ผลลพั ธ์ที่ต้องการ เช่น การ ประมวลผลการเรียน จะต้องสร้างคลาสออกเป็น 3 คลาส ประกอบไป ด้วย คลาสท่ี หนงึ่ ทาหน้าท่ีในการรวมคะแนนเกบ็ ท่ีได้ตามรายจดุ ประสงค์ คลาสที่สองทาหน้าท่ี ใน การรวมคะแนนทงั้ หมดท่ไี ด้ซง่ึ นาคะแนนเกบ็ รวมกบั คะแนนกลางภาคและ คะแนนปลายภาค และ คลาสท่ีสาม ท าหน้าท่ีในการเอาคะแนนทงั้ หมดมา ดาเนินการหาเกรดท่ีได้ตอ่ ไป ซง่ึ ทงั้ สามคลาสมี การทางานสมั พนั ธ์กนั ดงั นนั้ ควร เก็บคลาสเหลา่ นไี ้ ว้ด้วยกนั ในลกั ษณะของ โมดลู คลาส คลาสท่ีถกู สร้างเป็นจานวนมาก จะเกบ็ กลมุ่ คลาสการทางานทเี่ หมือนกนั ไว้ด้วยกนั เรียกวา่ โมดลู ซง่ึ ในภาษาไพธอนมีโมดลู ที่สนบั สนนุ การทางานมากมาย โมดลู เหลา่ นีส้ ามารถพฒั นาขนึ ้ มาใช้ งานเองได้ โดยมีขนั้ ดงั ตอ่ ไปนี ้ 1. การสร้างกลมุ่ คลาสในโมดลู การสร้างกลมุ่ คลาสในโมดลู มีลกั ษณะเป็น แฟ้ มข้อมลู ภาษาไพธอน โดยมีรูปแบบ เช่นเดยี วกนั กบั การสร้างชดุ คาสง่ั โปรแกรใน แฟ้ มข้อมลู ทว่ั ไป แตล่ กั ษณะของแฟ้ มข้อมลู โปรแกรมนี ้จะไมถ่ กู ประมวลผลโดยตรง แตจ่ ะถกู เรียกใช้งานในแฟ้ มข้อมลู โปรแกรมอื่น ซง่ึ การถกู เรียกใช้นีค้ ือ โมดลู คลาส ประกอบไปด้วยการทางานของคลาสหลายคลาสร่วมกนั

1. การสร้างกลมุ่ คลาสในโมดลู การสร้างกลมุ่ คลาสในโมดลู มลี กั ษณะ เป็นแฟ้ มข้อมลู ภาษาไพธอน โดยมรี ูปแบบ เชน่ เดียวกนั กบั การสร้าง ชดุ คาสงั่ โปรแกรในแฟ้ มข้อมลู ทวั่ ไป แตล่ กั ษณะของแฟ้ มข้อมลู โปรแกรมนี ้จะไมถ่ กู ประมวลผลโดยตรง แตจ่ ะถกู เรียกใช้งานใน แฟ้ มข้อมลู โปรแกรมอืน่ ซงึ่ การถกู เรียกใช้นีค้ ือ โมดลู คลาสประกอบไป ด้วยการทางานของคลาสหลายคลาสร่วมกนั 2. การเรียกใช้กลมุ่ คลาสในโมดลู คลาสในโมดลู จะถกู เก็บกระบวนการ ทางานท่ีทาหน้าท่ีอย่างใดอย่างหนง่ึ ไว้การเรียกใช้ กลมุ่ คลาสท่ีถกู สร้าง เป็นโมดลู ดงั กลา่ ว จะต้องมีการนาเข้ากลมุ่ คลาสของแฟ้ มข้อมลู โปรแกรมหลกั ซง่ึ มโี ครงสร้างการทางานท่ีจะสง่ ข้อมลู เข้าไปในกลมุ่ คลาสในโมดลู ทาการประมวลผลและให้ได้ผล ลพั ธ์ออกมาเพ่ือนาไปใช้ งานในกระบวนการต่อไป ซงึ่ จากกลมุ่ คลาสในโมดลู โปรแกรมตวั อยา่ ง 12 ได้ มกี ารสร้างคลาสเก็บไว้ใช้งาน วิธีการเรียกใช้กลมุ่ คลาส มี ขนั ้ ตอนและลกั ษณะการทางาน

แฟ้ มข้อมลู หลกั ที่ใช้ประมวลผลการทางานของโปรแกรม กระบวนการ ทางานของโปรแกรม ประกอบไปด้วยการนาเข้าโมดลู grade_process.py และสร้างอ๊อบเจกต์obj1 obj2 obj3 ท่ีเกิด จากคลาสในโมดลู grade_process โดย obj1 จะทาการ นาค่าท่ีรับเข้ามาและสง่ คา่ พารามเิ ตอร์ไปยงั คลาส cal_point ใน โมดลู เพื่อให้คอนสตรัคเตอร์ของคลาส cal_point ทาการ คานวณหาคะแนนเก็บ รวมและสง่ ค่าที่ได้กลบั คืนมายงั อ็อบเจกต์ obj1 ผ่านเมธอด _cal_point_total() อ๊อบเจกต์ obj2 ทา หน้าที่ในการสง่ คา่ พารามเิ ตอร์ท่ีได้จาก obj1 และค่าที่รับเข้ามาสง่ เข้าไปยงั คอนสตรัคเตอร์คลาส point_total นาคา่ ที่ได้ไปทาการ คานวณและคืนค่าผา่ นเมธอด _cal_total() และอ๊อบเจกต์ obj3 ทาหน้าท่ีในการสง่ ค่าพารามเิ ตอร์ท่ีได้จาก obj2 ไปยงั คอนสตรัคเตอร์ ของคลาส cal_grade ซง่ึ จะทาการประมวลผลเกรดท่ีได้และคืนค่า กลบั มายงั obj3 ผ่านเมธอด _check_grade()

แนวคดิ แบบ OOP OOP กค็ อื “ธรรมชาติของวตั ถ”ุ หมายความวา่ OOP จะมองสิ่งแตล่ ะสิ่ง ถือเป็น “วตั ถชุ ิน้ หนงึ่ ” (Object) มนั จะมีสแี ดงหรือสเี ขียว ยาวหรือสนั้ มนั ก็คือ วตั ถชุ ิน้ หนง่ึ เหมือนกนั และเราสามารถกาหนดประเภทหรือคลาสให้กบั วตั ถเุ หลา่ นนั้ ได้ นอกจากนี ้เม่ือ OOP มองทกุ สิง่ ถือเป็นวตั ถชุ ิน้ หนงึ่ แล้ว ยงั สามารถคดิ ตอ่ ไป อกี วา่ “วัตถุแต่ละอย่างนัน้ ต่างก็มลี ักษณะและวธิ ีการใช้งานเป็ นของ ตวั เอง” หมายความวา่ วตั ถแุ ตล่ ะชนิดหรือแตล่ ะชิน้ ตา่ งก็มีรูปร่าง ลกั ษณะ และการ ใช้งาน (การกระทา) ท่ีแตกตา่ งกนั ออกไป เราจะเรียกคณุ ลกั ษณะของวตั ถวุ า่ แอตทริบวิ ต์ (Attribute) และจะเรียกวิธีการใช้งานวตั ถวุ า่ เมธทอด (Method) ตวั อยา่ งเชน่ “ดินสอเป็นวตั ถทุ ี่มีลกั ษณะเรียวยาว ภายในเป็นไส้ถา่ น ใช้สาหรับเขยี น การใช้ดนิ สอทาได้โดยใช้มือจบั และเขยี นลงบนวสั ดรุ องรับ” จากข้อความข้างต้น สามารถจบั ใจความได้วา่ คณุ ลกั ษณะของวตั ถุ (Attribute) กค็ อื “ยาวเรียว ภายในเป็นไส้ถ่าน” สว่ นการใช้งาน (Method) กค็ ือ “ใช้มือจบั และเขียนลงบนวสั ดรุ องรับ” จะเหน็ ได้วา่ แนวคิดของ OOP นนั้ จะมี ลกั ษณะที่คล้ายกบั ธรรมชาติของสิง่ หนงึ่ ซงึ่ สามารถแบง่ แยกสง่ิ ตา่ ง ๆ ออกเป็นแตล่ ะ ประเภทได้ ถ้านาเอาแนวคิดของ OOP มาใช้ในการเขียนโปรแกรมและการจดั การ ข้อมลู จะพบวา่ โปรแกรมหรือฟังก์ชนั จะมีความเป็นอิสระแกก่ นั อย่างเหน็ ได้ชดั ก็คอื โปรแกรมหรือฟังก์ชนั แตล่ ะตวั ถงึ แม้จะมาจากทเ่ี ดียวกนั แตส่ ามารถทางานในคนละ หน้าท่ี เก็บข้อมลู คนละคา่ ได้ โดยจะไมม่ าย่งุ เกี่ยวกนั แตอ่ ยา่ งใด

การเขียนโปรแกรมและการออกแบบระบบงาน ก่อนท่ีผ้เู ขียนโปรแกรมจะสามารถเขียนคาสงั่ ได้ จะต้องมีการออกแบบระบบงานก่อน แล้วจงึ เขียนโปรแกรมเป็นภาษาตา่ ง ๆ ตามชนิดของงานและความเหมาะสม การเขียน โปรแกรมเชิงวตั ถกุ ็เชน่ กนั ตะต้องมีการออกแบบระบบงานกอ่ น หลกั สาคญั สาหรับการ ออกแบบเชงิ วตั ถุ ก็คือ การหาวตั ถใุ ห้พบ เมื่อพบแล้วจะต้องจาแนกวตั ถอุ อกเป็นสว่ นท่ี เปลี่ยนแปลงและสว่ นท่ีอยคู่ งที่ วตั ถทุ ี่ไมเ่ ปล่ียนแปลงสามารถนาไปใช้ได้เมื่อมีการ ปรับปรุงระบบงานใหม่ นน่ั คือเหตผุ ลที่ทาให้ต้องมีการออกแบบระบบงาน วตั ถทุ ่ีมีการ เปล่ียนแปลงบอ่ ยก็ได้แก่ วตั ถทุ ่ีทาหน้าที่เป็นอนิ เตอร์เฟส เป็นต้น ประโยชน์ของการโปรแกรมแบบ OOP เทคโนโลยีของออบเจก็ ต์โอเรียนเท็ดได้นาประโยชนาของการพฒั นาซอฟตแ์ วร์มาให้ ดงั นี ้ ความสามารถในการเรียกใช้ได้หลายครัง้ ออบเจ็กตไ์ ด้ถกู ออกแบบตามหลกั การที่วา่ สามารถเรียกใช้งานได้หลาย ๆ ครัง้ ในหลกั การนีท้ าให้ Application ของ OOP ตวั แรกอาจจะทาได้ยาก แตว่ า่ โปรแกรมแอปพลเิ คชนั ท่ีเขียนภายหลงั จะสร้างงา่ ยเพราะ สามารถเรียกใช้ออบเจก็ ตท์ ่ีถกู สร้างไว้ตงั้ แตโ่ ครงงานแรกได้ ความเช่ือถือได้ โปรแกรมแอปพลเิ คชนั ของ OOP จะมีความเช่ือถือได้สงู เพราะจะรวม เอาสว่ นยอ่ ยที่ทดสอบจนได้มาตรฐานแล้วมารวมเข้าไว้ด้วยกนั รหสั (Code) ที่เขียน ขนึ ้ มาใหมใ่ นแตล่ ะแอพลิเคชนั่ จะมีไมม่ ากนกั เนื่องจากรหสั สว่ นใหญ่จะถกู ดงึ มาจาก ไลบรารีท่ีมีความเช่ือถือได้สงู อยแู่ ล้ว และในการโปรแกรมภาษา C++ ยงั มีคณุ ประโยชน์ อ่ืนอีก ความตอ่ เนื่องกนั การพฒั นาซอฟต์แวร์แบบ OOP ใน C++ จะเปล่ียนไปตามฝี มือและ จานวนนกั เขียนโปรแกรมภาษา C นกั โปรแกรมภาษา C ที่ชานาญสามารถเรียนรู้ หลกั การของ OOP ได้ภายในเวลาไมน่ าน และสามารถเข้าใจเนือ้ หาได้ไมย่ าก อีกทงั้ สามารถ แปลงโปรแกรมแอพพลเิ คชน่ั ของ C เป็น C++ ได้

สรุป เชงิ วตั ถุ คือ แนวคดิ ท่ีมองภาพความเป็นจริงท่ีอยบู่ นโลกนี ้ในรูปแบบของวตั ถุ นาแนวคดิ ที่ได้มาออกแบบการเขียนโปรแกรม ท่ีเรียกวา่ การเขียนโปรแกรมเชิงวตั ถุ ซงึ่ แนวคดิ นีจ้ ะ ประกอบไป ด้วยองคป์ ระกอบหลกั 4 สว่ นประกอบไปด้วย คลาส คณุ สมบตั ิ พฤตกิ รรม และวตั ถุ ซงึ่ คลาสเป็นการ นยิ ามขอบเขตของวตั ถุ ซง่ึ นยิ ามจากคณุ สมบตั แิ ละพฤตกิ รรม ท่ีมี สว่ นวตั ถกุ ็คอื ส่งิ ที่มีตวั ตน มีคณุ สมบตั แิ ละพฤตกิ รรมเหมือนกบั คลาสท่ีวตั ถเุ กิดจาก คลาสนนั้ การเขียนไปรแกรมเชงิ วตั ถุ จะมี นิยามศพั ท์บางสว่ นท่ีแตกตา่ งกนั กบั แนวคดิ แตม่ ีความหมายเดียวกนั เชน่ วตั ถุ เมื่อนาเขียนโปรแกรม จะเรียกวา่ อนิ สแตนซ์หรืออ๊อบ เจ๊ก คณุ สมบตั จิ ะเรียกวา่ แอททริบวิ ต์ และการกระทาเรียกวา่ เมธอด หลกั การทางานของ โปรแกรมเชงิ วตั ถมุ ีลกั ษณะของการใช้งานหลากหลายรูปแบบ แนวคดิ เร่ืองเกี่ยวกบั การ ใช้งานภายในคลาส ประกอบด้วย การอนญุ าตการเข้าถงึ ข้อมลู และเมธอดภายใน คลาส รูปแบบการหอ่ ห้มุ ข้อมลู การซอ่ นข้อมลู หรือการเข้าถึงคลาส การเรียกใช้เมธอดอตั โนมตั ิ เม่ือมี การสร้างและลบอินสแตนซ์ รูปแบบของคอนสตรัคเตอร์และดสี ตรัคเตอร์ การ สง่ ผา่ นคา่ ระหวา่ งอ๊อบ เจกต์กบั เมธอด รูปแบของการสง่ คา่ และคนื คา่ พารามเิ ตอร์ การท่ีอ๊ อบเจกตไ์ ด้รับแอททริบวิ ตแ์ ละ เมธอดจากคลาสแมแ่ ละคลาสลกู รูปแบบของการสืบทอด คลาส การใช้งานเมธอดหรือฟังก์ชนั ท่ีเหมือนกนั แตก่ ารท างานตา่ งกนั ระหวา่ งคลาสแม่ และคลาสลกู รูปแบบของโอเวอร์ไรดงิ ้ การทางาน ของเมธอดที่ชื่อเหมือนกนั แตก่ ารทางาน ตา่ งกนั ตามจานวนอาร์กิวเมนต์รูปแบบของโอเวอร์โหลดดงิ ้ เมธอด การอนญุ าตให้อ๊อบ เจกตท์ ี่สร้างภายในคลาสสามารถใช้งานตวั ดาเนนิ การพืน้ ฐานรูปแบบของ โอเวอร์โหลด ดงิ ้ ตวั ดาเนินการ และการสร้างกลมุ่ คลาสแยกไว้ในแฟ้ มข้อมลู โปรแกรมและสามารถถกู เรียกใช้คลาสท่ีแฟ้ มข้อมลู โปรแกรมอื่นรูปแบบของการสร้างโมดลู คลาสและการเรียกใช้ โมดลู คลาส นอกเหนือจากนีภ้ าษาไพธอน ยงั ได้เตรียมเครื่องมือจานวนมาก ท่ีสนบั สนนุ การเขียน โปรแกรมเชงิ วตั ถุ แนวคดิ และหลกั การของเชิงวตั ถุ ทกุ ภาษาท่ีสนบั สนนุ การ เขียนโปรแกรมเชิงวตั ถุ จะใช้แนวคดิ และหลกั การเหมือนกนั แตร่ ูปแบบการเขียนอาจ แตกตา่ งกนั เมื่อมีความรู้ความเข้าใจ ในเรื่องเชิงวตั ถุ ก็จะสามารถใช้งานของภาษา โปรแกรม เพ่ือเขียนโปรแกรมรองรับกบั การท างานของ โปรแกรมที่มีความซบั ซ้อนให้มี ประสิทธิภาพการทางานขนั้ สงู ได


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook