ฉันพยายามที่จะเข้าใจความหมายของ 'abstraction' ใน OOP
ฉันได้เจอคำจำกัดความหลักสองสามข้อ พวกเขาทั้งหมดถูกต้องหรือไม่ เป็นหนึ่งในพวกเขาผิดหรือเปล่า? ฉันสับสน (ฉันเขียนคำจำกัดความใหม่ด้วยคำพูดของตัวเอง)
คำจำกัดความ 1:
สิ่งที่เป็นนามธรรมเป็นแนวคิดของการหยิบวัตถุบางอย่างจากโลกแห่งความเป็นจริงและแปลงเป็นเงื่อนไขการเขียนโปรแกรม เช่นการสร้างHuman
การเรียนและให้มันint health
, int age
, String name
ฯลฯ คุณสมบัติและeat()
วิธีการอื่น ๆ
คำจำกัดความ 2:
คำจำกัดความทั่วไปมากขึ้น Abstraction เป็นแนวคิดที่เกิดขึ้นได้ทุกที่ในระบบซอฟต์แวร์ที่เกี่ยวข้องกับ'การทำให้สิ่งต่าง ๆเป็นเรื่องธรรมดา/ ง่ายขึ้น / เป็นนามธรรม' ตัวอย่างบางส่วน:
ลำดับชั้นการสืบทอดที่คลาสที่สูงกว่าง่ายกว่าหรือทั่วไปกว่าและกำหนดการใช้งานทั่วไปและนามธรรมมากขึ้น ในขณะที่คลาสที่ต่ำกว่าในลำดับชั้นนั้นเป็นรูปธรรมมากขึ้นและกำหนดการใช้งานที่มีรายละเอียดมากขึ้น
การใช้การห่อหุ้มเพื่อซ่อนรายละเอียดของการใช้คลาสจากคลาสอื่น ๆ จึงทำให้คลาส 'นามธรรม' (ง่ายกว่า) สู่โลกของซอฟต์แวร์ภายนอก
คำจำกัดความ 3
นิยามทั่วไปอีกประการหนึ่ง: Abstraction เป็นแนวคิดของการย้ายโฟกัสจากรายละเอียดและการใช้สิ่งต่าง ๆ อย่างเป็นรูปธรรมกับประเภทของสิ่งต่าง ๆ (เช่นคลาส) การดำเนินการที่มีอยู่ (เช่นวิธีการ) ฯลฯ จึงทำให้การเขียนโปรแกรมง่ายขึ้น และนามธรรมมากขึ้น (สามารถเกิดขึ้นได้ทุกที่และในบริบทใด ๆ ในระบบซอฟต์แวร์) มันเกิดขึ้นเมื่อ encapsulating เพราะ encapsulation หมายถึงการซ่อนรายละเอียดของการใช้งานและแสดงเฉพาะประเภทของสิ่งต่าง ๆ และคำจำกัดความทั่วไปและนามธรรม ตัวอย่าง Anotehr จะใช้List
วัตถุใน Java วัตถุนี้จริงใช้รายละเอียดการดำเนินงานของนั้นArrayList
หรือแต่ข้อมูลนี้เป็นใจลอยใช้ชื่อทั่วไปมากขึ้นLinkedList
List
คำจำกัดความเหล่านี้ถูกต้องหรือไม่? (ฉันหมายถึงคำนิยามที่ธรรมดาที่สุดและเป็นที่ยอมรับ )