อธิบายแนวคิด OOPS สำหรับผู้เริ่มต้น

เผยแพร่แล้ว: 2022-12-20

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

ในบทความนี้ เราจะดูเชิงลึกเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ ก่อนที่เราจะพูดถึงความซับซ้อนของ OOPS ต่อไปนี้คือ แนวคิด OOP ที่สำคัญบางส่วน ใน Java ที่คุณควรจำไว้ เนื่องจากเป็นสี่เสาหลักที่ OOPS ทำงาน:

  • สิ่งที่เป็นนามธรรม
  • การห่อหุ้ม
  • มรดก
  • ความหลากหลาย

เราจะพูดถึง แนวคิด OOPs เหล่านี้ ในเชิงลึกในภายหลังในบทความนี้ แต่ก่อนอื่นเรามาทำความเข้าใจกันก่อนว่าการเขียนโปรแกรมเชิงวัตถุคืออะไร

สารบัญ

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

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

ภาษาการเขียนโปรแกรม เช่น C++, C#, Java และอื่นๆ ได้เปลี่ยนไปใช้แนวทางการเขียนโปรแกรมเชิงวัตถุหลังจาก C. OOP จัดลำดับความสำคัญของข้อมูลโดยเขียนทับคำสั่งที่ใช้ตรรกะอย่างง่าย โดยพื้นฐานแล้ว วัตถุคือสิ่งใดก็ตามที่คุณต้องการสร้างแบบจำลองในโปรแกรมของคุณ อาจเป็นอะไรก็ได้ทุกอย่าง หากตอนนี้ฟังดูคลุมเครือ ให้อ่านต่อจนจบ แล้วคุณจะเข้าใจว่าเราหมายถึงอะไร!

คลาสและออบเจกต์คืออะไร

การเขียนโปรแกรมเชิงวัตถุทำงานร่วมกับคลาสและวัตถุ ดังนั้น สิ่งสำคัญคือต้องเข้าใจว่าคำสองคำนี้หมายถึงอะไรและแตกต่างกันอย่างไร พูดง่ายๆ ให้คิดว่า Classes เป็นพิมพ์เขียวที่ช่วยสร้าง Objects ในเวลาที่คุณต้องการ

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

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

ยานพาหนะระดับสาธารณะ{

สตริงส่วนตัว _color;

int _model ส่วนตัว;

สตริงส่วนตัว _makeYear;

สตริงส่วนตัว _fuelType;

โมฆะสาธารณะ start(){ }

โมฆะสาธารณะเร่ง () {}

โมฆะสาธารณะ stop() {}

}

ด้วยการใช้คลาสที่กำหนด เราสามารถสร้างอ็อบเจกต์ต่างๆ ที่มีแอตทริบิวต์ต่างกันในขณะที่มีพฤติกรรมร่วมกัน ตัวอย่างเช่น:

วัตถุ 1
แบบอย่าง อัลโต
เชื้อเพลิง ซีเอ็นจี
ทำ 2561
เริ่ม()

หยุดพัก()

เร่งความเร็ว()

วัตถุ 2
แบบอย่าง เกวียนร
เชื้อเพลิง น้ำมัน
ทำ 2560
เริ่ม()

หยุดพัก()

เร่งความเร็ว()

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

เมื่อเข้าใจพื้นฐานแล้ว เรามาดูเสาหลักทั้งสี่ของการเขียนโปรแกรมเชิงวัตถุในเชิงลึก:

รับ ใบรับรองวิทยาศาสตร์ข้อมูล จากมหาวิทยาลัยชั้นนำของโลก เรียนรู้โปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโทเพื่อติดตามความก้าวหน้าในอาชีพของคุณอย่างรวดเร็ว

สิ่งที่เป็นนามธรรม

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

แนวคิดเบื้องหลังหนึ่งใน แนวคิด OOPS ที่สำคัญที่สุดใน Python คือโปรแกรมเมอร์จำเป็นต้องมุ่งเน้นเฉพาะสิ่งที่สำคัญกับโมดูลปัจจุบันโดยตรง การปรับเปลี่ยนโมดูลหนึ่งไม่ควรส่งผลกระทบโดยตรงต่อโมดูลอิสระอื่นๆ โปรแกรมเมอร์ต้องการเพียงความรู้เกี่ยวกับโมดูลปัจจุบันและสิ่งที่มอบให้เท่านั้น ไม่จำเป็นต้องเข้าใจการทำงานเบื้องหลังของโมดูลมากนักเพื่อให้บรรลุสิ่งที่จำเป็น ดังนั้น ข้อมูลดังกล่าวจึงถูกแยกออกมาเพื่อผลลัพธ์ที่ดีที่สุด

หากคุณใช้แนวคิดเรื่องนามธรรมนอกเหนือจากการเขียนโปรแกรม คุณจะตระหนักว่านามธรรมมีอยู่ทั่วไปทุกหนทุกแห่ง วัตถุที่เราจัดการทุกวันนั้นถูกแยกออกจากเราในระดับต่างๆ ตัวอย่างเช่น เราไม่รู้ว่าระบบเบรกภายในรถของเราทำงานอย่างไร แต่เราได้รับแป้นเหยียบเพื่อใช้เบรกในขณะที่มองกลไกที่อยู่หลังม่าน ด้วยวิธีนี้ คุณไม่ต้องกังวลเกี่ยวกับวิธีการทำงาน คุณเพียงแค่ต้องกดแป้นเหยียบ

การห่อหุ้ม

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

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

มรดก

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

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

ตรวจสอบโปรแกรม US - Data Science ของเรา

หลักสูตรประกาศนียบัตรวิชาชีพด้านวิทยาศาสตร์ข้อมูลและการวิเคราะห์ธุรกิจ วิทยาศาสตรมหาบัณฑิตสาขาวิทยาศาสตร์ข้อมูล วิทยาศาสตรมหาบัณฑิตสาขาวิทยาศาสตร์ข้อมูล หลักสูตรประกาศนียบัตรขั้นสูงด้านวิทยาศาสตร์ข้อมูล
โปรแกรม Executive PG ในสาขาวิทยาศาสตร์ข้อมูล Python การเขียนโปรแกรม Bootcamp หลักสูตรประกาศนียบัตรวิชาชีพด้านวิทยาศาสตร์ข้อมูลเพื่อการตัดสินใจทางธุรกิจ โปรแกรมขั้นสูงในวิทยาศาสตร์ข้อมูล

ความหลากหลาย

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

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

ในแง่นี้ การสืบทอดเป็นวิธีสำหรับโปรแกรมเพื่อให้เกิดความหลากหลาย โดยที่การนำเมธอดไปใช้แบบกำหนดเองจะเขียนทับพฤติกรรมที่กำหนดไว้ในคลาสที่สืบทอดมา กระบวนการนี้เรียกอีกอย่างว่า run-time polymorphism หรือการแทนที่เมธอด มีรูปแบบอื่นของความหลากหลายหรือที่เรียกว่าวิธีการโอเวอร์โหลด ในนั้นมรดกไม่ได้เข้ามาในภาพเลย ในการโอเวอร์โหลดเมธอด ชื่อเมธอดจะคงเดิม ในขณะที่อาร์กิวเมนต์ในเมธอดจะแตกต่างกันไปตามงานที่ต้องดำเนินการ

สรุปแล้ว

ด้วยเหตุนี้ เราจึงมาถึงจุดสิ้นสุดของการสนทนาเกี่ยวกับ แนวคิด OOPS ใน Java สิ่งที่กล่าวถึงจนถึงตอนนี้ได้กำหนดพื้นฐานทั้งหมดที่คุณต้องการเพื่อเริ่มต้นกับการเขียนโปรแกรมเชิงวัตถุโดยไม่ต้องกังวลเกี่ยวกับสิ่งใดๆ คุณต้องดำเนินการอภิปรายและลองทำสิ่งต่างๆ ท้ายที่สุดแล้วการเขียนโปรแกรมนั้นเกี่ยวกับการฝึกฝนและความพากเพียร

ความรู้เกี่ยวกับ OOPS จะช่วยคุณในเส้นทางวิทยาศาสตร์ข้อมูลเช่นกัน เนื่องจากคุณจะต้องใช้ภาษาอย่างเช่น Python ซึ่งอาศัยกระบวนทัศน์ของ OOPS วิทยาศาสตร์ข้อมูลเป็นสาขาที่เฟื่องฟู และไม่มีทางขาดแคลนสำหรับผู้ที่มีทักษะและความรู้ที่เหมาะสม ตรวจสอบ MS in Data Science ของเรา โดย upGrad โดยความร่วมมือกับ University of Arizona และรับโอกาสในการเรียนรู้จากผู้เชี่ยวชาญในอุตสาหกรรมพร้อมกับเครือข่ายศิษย์เก่าที่แข็งแกร่งซึ่งจะช่วยเหลือคุณตลอดอาชีพการงานของคุณ

แนวคิดทั้งสี่ของ OOPS คืออะไร?

สี่แนวคิดหลักของ OOPS ได้แก่ Abstraction, Encapsulation, Inheritance และ Polymorphism

คลาสและออบเจกต์ต่างกันอย่างไร

ชั้นเรียนเป็นแบบพิมพ์เขียวของปรากฏการณ์ที่จะจำลอง ในทางกลับกัน อ็อบเจกต์คือตัวอย่างเฉพาะของคลาสที่ยืมพฤติกรรมและคุณลักษณะจากคลาสที่อินสแตนซ์มา

OOPS ทำงานบนภาษาอะไร

OOPS เป็นปรัชญาการเขียนโปรแกรมที่เป็นกลางทางภาษา คุณสามารถทำงานกับ OOPS โดยใช้ภาษาโปรแกรมสมัยใหม่ เช่น C++, Java, Python, Ruby เป็นต้น