Saya membutuhkan definisi singkat dari "keadaan suatu objek" dalam pemrograman berorientasi objek (untuk makalah).
Sekitar setengah hari saya mencari makalah yang bisa saya kutip tentang topik ini, tetapi saya tidak dapat menemukannya. Semua makalah yang saya temukan sebagian besar makalah umum tentang pemrograman berorientasi objek dan mereka tidak menentukan keadaan suatu objek.
Saya tidak yakin, tapi tebakan terbaik saya adalah seperti: Keadaan objek didefinisikan oleh keadaan variabel instan objek.
Saya mencari definisi keadaan objek dan / atau referensi pada topik.
(btw, bisakah saya merujuk konsep sebagai "keadaan objek" atau ini tidak umum?)
Jawaban:
Anda dapat melihat (dan mengutip) buku "Analisis dan Desain Berorientasi Objek" oleh G. Booch :
Dan ada satu sub-bagian yang menjelaskan konsep negara :
sumber
Anda juga ingin diingat bahwa keadaan suatu objek adalah entitas "abstrak", sebagaimana ditentukan oleh apa yang dapat diamati oleh metode. Misalnya, objek yang mengimplementasikan tabel hash memiliki statusnya, kumpulan nilai yang disimpan dalam tabel hash, tidak semua detail representasi internal.
sumber
Syarat ' keadaan ' dapat digunakan dalam berbagai pengertian, yang bahkan mungkin tidak semua rentan terhadap definisi yang tepat. Karena itu penting bahwa Anda memasukkan definisi dalam makalah Anda, untuk memperjelas bagaimana Anda menggunakan istilah tersebut. Berikut ini saya tidak menawarkan definisi unik tentang keadaan suatu objek melainkan mencoba untuk membuat sketsa sejumlah cara berpikir tentangnya, yang mungkin sesuai dalam konteks yang berbeda.
Namun, pertama-tama, Anda perlu memikirkan apa yang Anda maksud dengan ' objek ': apakah Anda berpikir tentang objek konseptual, yaitu beberapa entitas yang Anda coba modelkan, atau tentang instance kelas dalam program tertentu; mungkin Anda juga ingin memikirkan keadaan variabel yang pada waktu yang berbeda dapat merujuk ke objek yang berbeda atau tentang suatu sistem, mungkin seperti diakses melalui antarmuka pengguna tertentu.
Bagian dari kesulitan dalam mendefinisikan keadaan suatu objek dalam OOP adalah bahwa ketika kita memodelkan entitas dalam bahasa tertentu, bahasa itu sering tidak memungkinkan kita untuk membedakan atribut objek yang secara konseptual merupakan bagian dari entitas yang sama dari yang lain. Sebagai contoh, daftar tertaut
Car
terdiri dari sejumlahLink
-objek, yang berisi pointer ke yang berikutnya (dan mungkin sebelumnya)Link
meskipun secara konseptual daftar tersebut adalah objek tunggal; tautan juga dapat disematkan diCar
-menempatkan atau mengandung pointer ke mereka, tetapi dalam hal ini objek yang terhubung secara konseptual terpisah daripada bagian dari daftar; dalam daftar perubahan terbaru, di mana pun, perubahan hanya dapat hadir dalam daftar dan dianggap sebagai bagian dari itu. Dalam berbagai kasus ini kita harus memutuskan apakah kita mempertimbangkan keadaan satu objek untuk memasukkan bahwa objek terkait. Lebih lanjut,Car
mungkin memiliki tautan keRegistering_Authority
- kita mungkin tidak menganggap kondisi mobil berubah ketika otoritas pendaftarannya mengubah URL situs webnya. Kecuali jika bahasa implementasinya memungkinkan kami untuk membedakan berbagai jenis tautan, tidak akan mungkin membuat definisi umum tentang keadaan suatu objek dalam hal bahasa saja.Status ' eksternal ' atau ' fungsional ' dapat didefinisikan sebagai 'bagaimana berperilaku', mis. bagaimana ia bereaksi terhadap metode invokasi atau antarmuka pengguna. Untuk objek sebagai instance kelas, definisi ini tergantung pada jenis objek yang dilihat: milik sebagai , warna,
Circle
Coloured_Circle
tidak terlihat, dan karenanya tidak relevan dengan keadaannya. Kesulitan dengan ini adalah bahwa 'bagaimana ia bereaksi' mungkin perlu didefinisikan dalam hal nilai yang dikembalikan, dan 'nilai' ini mungkin adalah keadaan objek lain. Salah satu cara untuk memformalkan ini adalah dengan mengatakan bahwa dua keadaan dari suatu objek adalah sama jika semua kemungkinan eksekusi di masa depan dari beberapa sistem di mana ia tertanam menghasilkan pemetaan yang sama dari input ke sistem untuk output dari itu. Sistem terlampir ini mungkin diperlukan untuk menjadi sistem mandiri, yang mampu dieksekusi terlepas dari lingkungannya; di sisi lain, orang dapat membiarkannya menjadi sekecil objek yang dipermasalahkan itu sendiri. Dalam kasus apa pun, pendekatan matematika kemudian mendefinisikan negara sebagai kelas kesetaraanThe ' intern ' negara dapat didefinisikan sebagai keadaan representasi. Upaya pertama tampaknya melingkar tetapi mungkin membantu: 'Keadaan internal suatu objek adalah keadaan anggotanya'. Di sini kita perlu berhati-hati untuk membedakan aspek-aspek signifikan dari representasi dari yang tidak penting: pada level terendah, representasi dari suatu objek mungkin termasuk alamat dari objek lain, tetapi tidak mungkin berguna untuk mempertimbangkan perubahan dalam alamat seperti itu. sebagai perubahan status. Di sisi lain, perubahan status cache untuk hasil permintaan, sementara itu tidak ada bedanya dengan keadaan fungsional (seperti dijelaskan di atas), akan menjadi penting ketika mempertimbangkan tes kinerja.
sumber
IBM memiliki glosarium yang mendefinisikan kata "keadaan" dalam beberapa definisi berbeda yang sangat mirip satu sama lain. Mereka tidak secara khusus menyatakan bahwa mereka terkait dengan Pemrograman Berorientasi Objek tetapi orang dapat memperkirakan dan menggunakannya dalam konteks itu.
Kamus Dunia Baru Webster Webster mendefinisikan 'negara' sebagai:
Penyebut umum dari semua ini adalah waktu. Status berubah seiring berjalannya waktu. Itu adalah sifat dari variabel. Jika seseorang bertanya, "Bagaimana keadaan Anda saat ini?" Anda bisa mengatakan hari ini bahwa Anda sudah menikah dan besok Anda bisa melajang.
Mempertimbangkan semua definisi ini, seseorang dapat memperkirakan bahwa 'keadaan' adalah cara objek ada pada titik waktu tertentu yang ditentukan oleh nilai atributnya, yaitu properti / variabelnya.
Saya tidak berpikir itu menjadi lebih sederhana dari itu.
sumber
Sistem berorientasi objek mengintegrasikan ketentuan kode dan data menggunakan konsep "objek". Objek memiliki status (data) dan perilaku (kode). Oleh karena itu, keadaan objek adalah instance (variabel) di dalam objek yang berisi data.
sumber