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

Anonim

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

สิ่งที่เป็นนามธรรมคืออะไร?

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

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

Encapsulation คืออะไร?

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

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

ความแตกต่างระหว่างสิ่งที่เป็นนามธรรมกับการผนึกกำลัง

แม้ว่าทั้งสองแนวคิดพื้นฐานที่เกี่ยวข้องกับ OOP และพวกเขาแยกกันทางเทคนิค แต่ก็ยังมีความแตกต่างอยู่หลายประการ

  1. ความแตกต่างใน "นิยาม" ของสิ่งที่เป็นนามธรรมและการผนึกกำลัง - บทคัดย่อเป็นแนวคิดพื้นฐานของ OOP ที่เน้นย้ำทุกด้านที่สำคัญของวัตถุด้วยการซ่อนรายละเอียดที่ไม่เกี่ยวข้องเพื่อเพิ่มประสิทธิภาพและลดความซับซ้อน ในทางกลับกันการห่อหุ้มข้อมูลเป็นกลไกการซ่อนข้อมูลซึ่งรวบรวมข้อมูลและข้อมูลในแคปซูลเพื่อ จำกัด การเข้าถึงจากภายนอก
  2. ความแตกต่างใน "การทำงาน" ของสิ่งที่เป็นนามธรรมและการห่อหุ้ม - สิ่งที่เป็นนามธรรมคือกลไกการซ่อนข้อมูลซึ่งเน้นเฉพาะคุณสมบัติที่จำเป็นเพื่อทำให้โปรแกรมที่ซับซ้อนซับซ้อนขึ้นโดยที่ encapsulation เป็นวิธีการผูกพัน ข้อมูลและรหัสลงในเอนทิตีเดียว แนวคิดคือการป้องกันรายละเอียดการใช้งานจากการเข้าถึงจากภายนอก
  3. ความแตกต่างใน "การนำไปใช้" ของสิ่งที่เป็นนามธรรมและการ encapsulation - การนำเอาสิ่งที่เป็นนามธรรมมาใช้โดยใช้คลาสนามธรรมและอินเทอร์เฟซในขณะที่มีการใช้ encapsulation โดยใช้ตัวปรับการเข้าถึง ห้าประเภทของการปรับเปลี่ยนใช้ในการห่อหุ้มข้อมูล: ส่วนตัว, สาธารณะ, ภายใน, ป้องกันและป้องกันภายใน
  4. ความแตกต่างใน "แนวคิด" ของสิ่งที่เป็นนามธรรมและการผนึกกำลัง - แนวคิดที่อยู่เบื้องหลังสิ่งที่เป็นนามธรรมคือการมุ่งเน้นไปที่อะไรแทนที่จะเป็นอย่างไร การห่อหุ้มจะซ่อนกลไกภายในของวิธีการ ตัวอย่างเช่นเมื่อคุณขับรถคุณรู้ว่าแป้นเบรคทำงานได้ดี แต่คุณอาจไม่ทราบกลไกทั้งหมดที่อยู่เบื้องหลังเนื่องจากข้อมูลถูกห่อหุ้มไว้
  5. ความแตกต่างใน "ตัวอย่าง" ของสิ่งที่เป็นนามธรรมและการผนึกกำลัง - ลองมาดูตัวอย่างของสมาร์ทโฟน คุณรู้ว่ามันทำอะไร แต่คุณอาจไม่ทราบว่ามันไม่สิ่งที่มันไม่ คุณสนใจเฉพาะเกี่ยวกับหน้าจอแสดงผลและปุ่มกดแทนที่จะกังวลเกี่ยวกับวงจรภายใน ที่นี่มาร์ทโฟนเป็นนามธรรมที่รายละเอียดการดำเนินงานภายในมีการห่อหุ้ม

การหวงห้ามกับการห่อหุ้มด้วยตารางเปรียบเทียบ

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

สรุป

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