Definisi keadaan suatu objek di OOP


11

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?)


Saya pikir ada ruang untuk ambiguitas di sini, sehingga Anda harus menyatakan dalam makalah Anda persis apa yang Anda maksud dengan 'negara'; jika Anda tidak bisa melakukan itu, mungkin Anda tidak dalam posisi untuk melepaskan kertas Anda.
PJTraill

Jawaban:


9

Anda dapat melihat (dan mengutip) buku "Analisis dan Desain Berorientasi Objek" oleh G. Booch :

... Objek adalah entitas yang memiliki status, perilaku, dan identitas. Struktur dan perilaku objek serupa didefinisikan dalam kelas umum mereka. Istilah instance dan objek dapat dipertukarkan.

Kami akan mempertimbangkan konsep-konsep negara, perilaku, dan identitas secara lebih rinci di bagian selanjutnya. ...

Dan ada satu sub-bagian yang menjelaskan konsep negara :

... Dari contoh ini, kita dapat membentuk definisi tingkat rendah berikut.

Keadaan objek mencakup semua properti (biasanya statis) dari objek ditambah nilai saat ini (biasanya dinamis) dari masing-masing properti ini ...


4
Fuzzy, seperti biasa. Apa yang mungkin dimaksudkan oleh Booth: negara adalah penetapan nilai untuk variabel-variabel tersebut.
reinierpost

3

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.


2

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 Carterdiri dari sejumlah Link-objek, yang berisi pointer ke yang berikutnya (dan mungkin sebelumnya) Linkmeskipun 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, Carmungkin memiliki tautan ke Registering_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,CircleColoured_Circletidak 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 kesetaraan

The ' 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.


Ini adalah salah satu jawaban paling berguna tentang keadaan objek yang saya temukan. Ada satu dokumen PDF online dan sebagian besar adalah itu. Terutama bagian tentang representasi (keadaan internal). Ini membuka mata saya dan membuat saya hal tentang objek berbeda.
carousel

1

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.

Def 3: Tahap dalam siklus hidup suatu objek yang mengidentifikasi status objek itu.

Def 5: Suatu kondisi atau situasi selama kehidupan suatu objek selama itu memenuhi beberapa kondisi, melakukan beberapa kegiatan, atau menunggu beberapa peristiwa.

Def 8: Karakteristik objek yang dimanifestasikan dalam anggota data publik dan pribadi, dan dapat dibagi menjadi dua kategori: negara esensial dan negara tidak esensial.

Def 9: Dalam mesin keadaan bisnis, salah satu dari beberapa tahapan individu terpisah yang disusun secara berurutan untuk menyusun transaksi bisnis.

Def 10: Suatu kondisi di mana sirkuit tetap sampai penerapan pulsa yang sesuai.

Kamus Dunia Baru Webster Webster mendefinisikan 'negara' sebagai:

Serangkaian keadaan atau atribut yang menjadi ciri seseorang atau sesuatu pada waktu tertentu; cara atau bentuk makhluk: kondisi

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.


Ini bernilai beberapa suara, karena membuat potensi ambiguitas lebih jelas daripada jawaban lainnya.
PJTraill

Re komentar saya sebelumnya: Sejak itu saya menambahkan jawaban saya sendiri untuk menggambarkan ambiguitas lebih banyak.
PJTraill

0

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.


Ini benar tetapi tidak terlihat menambahkan banyak ke jawaban yang ada.
David Richerby

1
Mungkin itu akan mudah dimengerti untuk seseorang :)
Syed MEhran Hussain

2
Ini salah. Apa yang Anda katakan, saya pikir: negara adalah penugasan nilai untuk variabel-variabel itu.
reinierpost
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.