Saya mencoba memahami definisi 'abstraksi' dalam OOP.
Saya telah menemukan beberapa definisi utama. Apakah semuanya valid? Apakah salah satunya salah? Saya bingung. (Saya menulis ulang definisi dengan kata-kata saya sendiri).
Definisi 1:
Abstraksi adalah konsep mengambil beberapa objek dari dunia nyata, dan mengubahnya menjadi istilah pemrograman. Seperti membuat Human
kelas dan memberikan int health
, int age
, String name
, dll properti, dan eat()
metode lain.
Definisi 2:
Definisi yang lebih umum. Abstraksi adalah konsep yang terjadi di mana saja dalam sistem perangkat lunak di mana 'membuat sesuatu menjadi lebih umum / sederhana / abstrak' terlibat. Beberapa contoh:
Hirarki warisan, di mana kelas yang lebih tinggi lebih sederhana atau lebih umum, dan mendefinisikan implementasi yang lebih umum dan abstrak. Sementara kelas yang lebih rendah dalam hierarki lebih konkret dan mendefinisikan implementasi yang lebih rinci.
Menggunakan enkapsulasi untuk menyembunyikan detail implementasi kelas dari kelas lain, sehingga membuat kelas lebih 'abstrak' (lebih sederhana) ke dunia perangkat lunak luar.
Definisi 3
Definisi umum lainnya: Abstraksi adalah konsep pemindahan fokus dari perincian dan implementasi konkret hal, ke jenis hal (yaitu kelas), operasi yang tersedia (yaitu metode), dll, sehingga membuat pemrograman lebih sederhana, lebih umum, dan lebih abstrak. (Ini dapat terjadi di mana saja dan dalam konteks apa pun dalam sistem perangkat lunak). Ini terjadi misalnya ketika mengenkapsulasi, karena enkapsulasi berarti menyembunyikan detail implementasi dan hanya menunjukkan jenis hal dan definisi yang lebih umum dan abstrak. Contoh anotehr akan menggunakan List
objek di Jawa. objek ini sebenarnya menggunakan detail implementasi dari suatu ArrayList
atau LinkedList
, tetapi informasi ini disarikan menggunakan nama yang lebih umum List
.
Apakah ada dari definisi ini yang benar? (Saya mengacu pada definisi yang paling konvensional dan diterima ).