The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Thanakon Siritara, 2023-02-03 03:05:16

2_clone

2

การเขียนโปรแกรมเชิงวัตถุ 1 แนวคิดแบบ OOP ข้อความรู้เกี่ยวกับ OOP การน าวัตถุมาใช้ใหม่ (Reuse the Object) สรุป 3 6 8 18


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


ความเป็นมาของแนวคิดแบบ OOP แนวความคิดดั้งเดิมของการเขียนโปรแกรม ก็คือ การแก้ปัญหาโดยใช้ คอมพิวเตอร์เป็นเครื่องมือ คล้ายกับการใช้เครื่องคิดเลขในการแก้ปัญหาทาง คณิตศาสตร์ แนวความคิดแบบใหม่ที่ใช้ในการเขียนโปรแกรม ก็คือ การเน้นถึงปัญหาและ องค์ประกอบของปัญหา (เพื่อแก้ปัญหา) การเน้นที่ปัญหาและองค์ประกอบของ ปัญหา (Problem Space) จะคล้ายกับแก้ไขปัญหาและชีวิตความเป็นอยู่ของมนุษย์ ที่จะต้องมี คน สัตว์ สิ่งของ เพื่อแก้ปัญหา (มีหน้าที่แก้ปัญหา) มากกว่าจะมองที่ วิธีการแก้ปัญหานั้น ๆ หรือขั้นตอนในการแก้ปัญหา (Solution Space) ซึ่งเป็นวิธีการเขียนโปรแกรมแบบเก่านั่นเอง อาลัน เคย์ (Alan Kay) ได้เสนอกฎ 5 ข้อ ที่เป็นแนวทางของภาษาคอมพิวเตอร์ เชิงวัตถุหรือที่เรียกว่า Object-Oriented Programming (OOP) ไว้ดังนี้ ความเป็นมาของแนวคิดแบบ OOP 2


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


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


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


ข้อความรู้เกี่ยวกับ OOP เนื่องจากหลักการเขียนโปรแกรมเชิงวัตถุเป็นแนวคิดแบบใหม่ ดังนั้น การ ท างานหลาย ๆ ส่วนของการเขียนโปรแกรมแบบนี้อาจจะยังไม่เป็นที่คุ้นเคย มากนัก จึงจ าเป็นที่ผู้ศึกษาต้องท าความเข้าใจการท างานของแนวคิดนี้ได้ดี ยิ่งขึ้น ข้อควรรู้เบื้องต้นเกี่ยวกับ OOP มีดังนี้ 6


การเชื่อมต่อ (Interface) อินเตอร์เฟส (Interface) หมายถึง การเชื่อมต่อ ถ้าเป็นการเชื่อมต่อระหว่าง ผู้ใช้กับคอมพิวเตอร์ จะเรียกการเชื่อมต่อนั้นว่า ยูสเซอร์อินเตอร์เฟส (User Interface) แต่ในการเขียนโปรแกรมเชิงวัตถุ การเชื่อมต่อยังรวมไปถึงวัตถุ (Object) เพราะในวัตถุจะต้องมีอินเตอร์เฟส อันเป็นส่วนที่วัตถุนั้น ๆ จะให้บริการหรือเป็นส่วน ที่บอกว่าวัตถุนั้น ๆ สามารถท าอะไรได้บ้าง ซึ่งบางครั้งเรียกว่า เมธทอด (Method) ข้อดีของการมีอินเตอร์เฟส ก็คือ การเปลี่ยนแปลงที่เกิดขึ้นภายในวัตถุจะไม่ กระทบต่ออินเตอร์เฟส ดังนั้น ภายในวัตถุผู้เขียนค าสั่งสามารถดัดแปลง แก้ไข หรือ เพิ่มเติมได้ตลอดเวลา นอกจากนี้ ภายในวัตถุยังสามารถเก็บค่าต่าง ๆได้อีกด้วย การซ่อนรายละเอียด (Encapsulation) ส่วนประกอบของวัตถุตามแนวความคิดการเขียนโปรแกรมเชิงวัตถุ จะต้อง ประกอบไปด้วยสองส่วนเป็นอย่างน้อย คือ ส่วนของคุณสมบัติใช้เก็บข้อมูล รายละเอียด สถานะ โอยใช้ตัวแปรเก็บค่าต่าง ๆ ไว้ และส่วนของเมธทอดทีเป็น ตัวเชื่อมการท างานของวัตถุนั้น ๆ โดยผู้ใช้จะไม่สามารถติดต่อใช้งานกับตัวแปรที่อยู่ ข้างในได้ ในภาษา C++ จะใช้ค า Public, Private และ Protected เข้ามาช่วย ก าหนดขอบเขตการใช้ 7


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


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


Python Python เป็นภาษาการเขียนโปรแกรมระดับสูง โดยการน าข้อดีของภาษาต่าง ๆ มารวมกัน ออกแบบมาให้เรียนรู้ได้ง่าย มีไวยากรณ์ที่ท าให้เขียนโค้ดได้สั้นกว่า ภาษาโปรแกรมอื่น ๆ จึงได้รับความนิยมในการเขียนโปรแกรม เหมาะส าหรับ การใช้งานทั่วไป ปัจจุบันเป็นภาษาหนึ่งที่น ามาใช้พัฒนาแอปพลิเคชันต่าง ๆ ทั้ง iOS, Android, Windows, MAC, Linux และ Unix นอกจากนั้นยังเป็น โปรแกรมแบบโอเพนซอร์สที่น ามาใช้ได้ฟรี JavaScript JavaScript เป็นหนึ่งในภาษาโปรแกรมระดับสูงที่เป็นที่รู้จักกันดีที่สุด และใช้กัน มากที่สุดในหมู่นักพัฒนาไอทีทั่วโลก เพราะสามารถใช้ภาษานี้เพื่อพัฒนาแอป พลิเคชันได้หลากหลาย และเป็นภาษาหลักของการพัฒนาเว็บไซต์ สามารถ ท างานร่วมกันได้กับเฟรมเวิร์กที่เป็นที่รู้จัก เช่น Vue, Node, React ได้ด้วย ซึ่ง JavaScript ถูกใช้โดยบริษัทเทคโนโลยีที่มีชื่อเสียงหลายแห่ง เช่น Uber, Google และ Microsoft เป็นต้น 10


C/C++ เป็นภาษาโปรแกรมที่ค่อนข้างเก่าเมื่อเทียบกับภาษาอื่น แต่โดยทั่วไป ภาษา C และ C++ ก็ยังถูกใช้งานทั่วไปบน Microsoft และ Windows ทั้งยังเป็นตัวเลือกที่เหมาะสมส าหรับนักพัฒนาวิดีโอเกม ด้วย เนื่องจากเป็นภาษาที่มีไวยากรณ์เข้าใจง่าย ท าให้ใช้งานได้ง่าย เช่นเดียวกัน สามารถควบคุมฮาร์ดแวร์ได้มากกว่าภาษาระดับสูงอื่น ๆ ดังนั้น ใครที่อยากอยู่ในวงการนี้ ไม่ควรละเลยการศึกษาเพื่อให้ เข้าใจพื้นฐานของการใช้ภาษา C และ C++ 11


Kotlin Kotlin คือการเขียนโปรแกรมอเนกประสงค์ พัฒนาต่อยอดมาจาก Java จุดเด่นคือสามารถใช้งานทดแทน Java ได้ 100 เปอร์เซ็นต์ แต่ ลดการเขียนโค้ดลงไปได้ถึง 40 เปอร์เซ็นต์ สนับสนุนทั้งการเขียน โปรแกรมเชิงฟังก์ชันและเชิงวัตถุ ภาษานี้เรียนรู้ได้ง่ายและสามารถใช้ เพื่อสร้างแอปพลิเคชันออนไลน์และ Android หลาย ๆ คนชอบภาษา นี้ ด้วยเหตุผลว่าเป็นตัวเลือกที่ดีกว่า เช่น Google ก็น าภาษานี้ไปใช้ใน การด าเนินงานตั้งแต่ปี 2017 แล้ว 12


Swift Swift ถูกใช้ในอุตสาหกรรมเทคโนโลยีมาตั้งแต่ปี 2014 โดยส่วนใหญ่จะใช้ ส าหรับการพัฒนาแอปพลิเคชันในระบบปฏิบัติการ iOS, Mac, Apple TV และ Apple Watch (เพราะถูกสร้างโดย Apple) แม้ว่าภาษาจะค่อนข้าง ใหม่ แต่ก็เป็นภาษาที่ค่อนข้างส าคัญ ด้วยคุณลักษณะที่อ่านง่ายเขียนง่าย ง่ายต่อการรวมเข้ากับ Objective-C นอกจากนี้ Swift ยังสามารถรวมเข้า กับ FlappyBird, Mozilla Firefox และ WordPress ได้อีกด้วย 13


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


Java Java เป็นภาษาโปรแกรมเชิงวัตถุแบบสมบูรณ์ และเป็นหนึ่งในภาษาที่ได้รับ ความนิยมมากที่สุด เหมาะส าหรับพัฒนาระบบที่มีความซับซ้อน แนวคิดที่ รู้จักกันดีของ Java คือเขียนครั้งเดียวท างานได้ทุกที่ โปรแกรมที่เขียนขึ้นโดย ใช้ภาษา Java จะมีความสามารถท างานได้ในระบบปฏิบัติการที่แตกต่างกัน ไม่จ าเป็นต้องดัดแปลงแก้ไขโปรแกรม การพัฒนาโปรแกรมสามารถใช้ค าหรือ ชื่อต่าง ๆ ที่มีอยู่ในระบบงานนั้นมาใช้ในการออกแบบโปรแกรมได้ 15


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


Dart Dart เป็นภาษาการเขียนโปรแกรมภาษาใหม่ที่ได้รับความนิยมอย่างรวดเร็ว ในอุตสาหกรรมเทคโนโลยี ใช้ส าหรับสร้างแอปพลิเคชันบนแพลตฟอร์มที่ หลากหลาย ถูกสร้างโดย Google และปล่อยให้ใช้งานแบบโอเพนซอร์ส เป็น ภาษาในการเขียนโปรแกรมที่ถูกออกแบบมาให้ใช้งานได้ง่ายและมี ประสิทธิภาพแบบภาษาเชิงวัตถุอื่น ๆ ไม่ว่าจะเป็น Java, C หรือ C++ จึง เป็นตัวเลือกภาษาที่น่าสนใจศึกษาเป็นภาษาแรกส าหรับคนที่เพิ่งเริ่มศึกษา ภาษาคอมพิวเตอร์ Scala Scala เป็นภาษาโปรแกรมที่คล้ายกับ Java โดยสามารถเรียกใช้ไลบรารีของ Java มาใช้ในการเขียนโค้ดภาษา Scala ได้ ออกแบบมาเพื่อให้รูปแบบการ เขียนโปรแกรมสั้นและกระชับ เป็นภาษาการเขียนโปรแกรมที่ผสานคุณสมบัติ ของภาษาเชิงวัตถุและภาษาเชิงฟังก์ชันเข้าไว้ด้วยกัน เป็นภาษาโปรแกรมที่ ช่วยควบคุมและหลีกเลี่ยงจุดบกพร่องในแอปพลิเคชันที่ซับซ้อนและให้การ เข้าถึงไลบรารีต่าง ๆ 17


4. Polymorphism แบ่งเป็น Overloading และ Overriding เพื่อช่วยให้ผู้เขียนโปรแกรมสามารถตั้งชื่อ Method ซ้ ากันได้ ท าให้สะดวกในการใช้งาน โดยที่หนึ่ง Method สามารถใช้งานได้กับข้อมูล ทุกชนิด ดังเช่นค าสั่ง println() Class Diagram ใน UML คือการแทนคลาสในเชิงรูปภาพ เพื่อใช้ เป็นช่องทางส าหรับสื่อสารระหว่างผู้พัฒนาโปรแกรมร่วมกันอย่างมี ประสิทธิภาพ สรุป ส่วนประกอบของ OOP มี 4 ข้อคือ 1. Abstraction ในการสร้างวัตถุจะการพิจารณาถึง คุณสมบัติที่เกี่ยวข้องเท่านั้น ท าให้การออกแบบวัตถุตรงกับวัตถุประสงค์ ที่ตั้งไว้ 2. Encapsulation การน าเอา Method รวมไว้เป็นส่วน หนึ่งของวัตถุ เพื่อซ่อนรายละเอียดของวัตถุไว้ลดความซับซ้อนในการใช้ งานของวัตถุลง 3. Inheritance การถ่ายทอดคุณสมบัติจากคลาสแม่ไปสู่ คลาสลูก และคลาส Object เป็นคลาสแรกที่วัตถุทุกชนิดในภาษา Java จะมีการสืบทอดคุณสมบัติมา 18


Click to View FlipBook Version