สิ่งที่เป็นนามธรรมกับการห่อหุ้ม: ความแตกต่างระหว่างสิ่งที่เป็นนามธรรมและการห่อหุ้ม

เผยแพร่แล้ว: 2021-02-09

สารบัญ

บทนำ

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

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

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

ขั้นแรก เรามาทำความรู้จักกับแนวคิดเรื่องนามธรรมและการห่อหุ้มอย่างรวดเร็วกัน

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

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

ตัวอย่างเช่น สมมติว่าเราได้รับมอบหมายงานเพื่อสร้างพอร์ทัลการลงทะเบียนหลักสูตรออนไลน์ และช่องข้อมูลที่เรามีคือ {ชื่อ, อายุ, อาชีพปัจจุบัน, ชื่อวิทยาลัย, ชื่อหลักสูตร, วิธีการชำระเงิน, ชื่อพี่น้อง, สถานภาพการสมรส, ยานพาหนะ ตัวเลข}.

หลังจากที่ได้ดูช่องข้อมูลที่พร้อมใช้งาน เราจะเข้าใจว่าบางช่องไม่จำเป็นสำหรับพอร์ทัลการลงทะเบียนหลักสูตร ฟิลด์เช่น {ชื่อพี่น้อง สถานภาพการสมรส หมายเลขรถ} ไม่จำเป็นสำหรับการลงทะเบียนหลักสูตร

ดังนั้น เราต้องเจาะจงและเลือกเฉพาะข้อมูลที่เกี่ยวข้องเท่านั้น ตอนนี้ฟิลด์ที่จำเป็นคือ {ชื่อ อายุ อาชีพปัจจุบัน ชื่อวิทยาลัย ชื่อหลักสูตร วิธีการชำระเงิน} นี่เป็นตัวอย่างของสิ่งที่เป็นนามธรรมใน OOP เนื่องจากเราได้รวบรวมข้อมูลที่เลือกจากข้อมูลทั้งหมด

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

หลายคนมักสับสนเกี่ยวกับ abstraction และ abstract class ทั้งคู่มีความเกี่ยวข้องกันหรือไม่?

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

การห่อหุ้ม

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

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

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

ให้เราดูที่โปรแกรมจาวาง่าย ๆ เพื่อทำความเข้าใจสิ่งนี้ให้ดีขึ้น

การลงทะเบียน เรียน หลักสูตร {
สตริง ส่วนตัว student_name;
สตริง ส่วนตัว course_name;
สตริง สาธารณะ getName (){
ส่งคืน student_name;
}
โมฆะ สาธารณะ setName (ชื่อสตริง){
.student_name=name นี้ ;
}
สตริง สาธารณะ getCourse (){
กลับ course_name;
}
โมฆะ สาธารณะ setCourse (หลักสูตรสตริง){
.course_name=course นี้
}
}
ชั้นเรียน สาธารณะ pGrad {
โมฆะ คงที่ สาธารณะ หลัก (สตริง[] args){
CourseRegistration c = CourseRegistration ใหม่ ();
c.setName( “มิถุน” );
c.setCourse( “วิทยาศาสตร์ข้อมูล” );
System.out.println(c.getName());
System.out.println(c.getCourse());
}
}

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

ตอนนี้เราได้เห็นคำจำกัดความและตัวอย่างของสิ่งที่เป็นนามธรรมแล้ว เรามาพูดถึงข้อดีและความแตกต่างระหว่างสิ่งที่เป็นนามธรรมกับการห่อหุ้ม

ข้อดีของนามธรรม

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

ข้อดีของการห่อหุ้ม

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

ความแตกต่างระหว่างสิ่งที่เป็นนามธรรมและการห่อหุ้ม

คำนิยาม

  • สิ่งที่เป็นนามธรรมคือการซ่อนรายละเอียดและการใช้งานโค้ด
  • การห่อหุ้มกำลังซ่อนข้อมูลและควบคุมการมองเห็นรหัส

เฟส

  • นามธรรมเป็นกระบวนการระดับการออกแบบ
  • การห่อหุ้มเป็นกระบวนการระดับการใช้งาน

ความสามารถที่สำคัญ

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

ใช้กรณี

  • นามธรรมเป็นกระบวนการระดับการออกแบบ และใช้เพื่อลดความซับซ้อนในขั้นตอนการออกแบบของโครงการ
  • การห่อหุ้มเป็นกระบวนการระดับการนำไปปฏิบัติ และใช้เพื่อให้ความเป็นส่วนตัวและรักษาการควบคุมความโปร่งใสของข้อมูลในขั้นตอนการดำเนินการของโครงการ

วิธีดำเนินการ

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

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

บทสรุป

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

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

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java, การพัฒนาแบบฟูลสแตก, ลองดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์แบบฟูลสแตก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง, โครงการมากกว่า 9 โครงการ และการมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

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

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

คลาสและอ็อบเจ็กต์ทำงานอย่างไรในการเขียนโปรแกรม?

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

encapsulation กับ abstraction ต่างกันอย่างไร?

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