Definisi Formal / bagian counter dalam matematika untuk "Objek" Model Berorientasi Objek


9

Ini adalah pertanyaan yang saya ajukan di forum SE matematika, dan saya dirujuk di sini. Jadi di sini adalah pertanyaan-

Saya seorang pemula di kedua matematika formal dan ilmu komputer teoretis, jadi silakan bersamaku jika Anda menemukan pertanyaan saya tidak dibingkai dengan benar. Pemodelan Berorientasi Objek tampaknya sangat berguna dalam mendefinisikan interaksi yang kompleks ketika mensimulasikan dunia nyata. Tetapi sebagian besar digunakan dalam pemrograman. Saya bertanya-tanya apakah kita memiliki konsep yang sama dalam matematika. Ketika kita melakukan pemrograman, kita dapat memahami konsep "Objects" dan "Object Oriented Programming" dan hanya mengimplementasikannya. Tetapi apakah kita memiliki definisi formal "Objek" dalam hal Teori Set? Atau dalam hal ini, teori matematika formal lainnya?

Bisakah kita menerapkan / mendefinisikan secara formal tiga konsep pemodelan berorientasi objek utama- 1. Enkapsulasi 2. Warisan 3. Polimorfisme

Saya tahu pertanyaan terlalu luas, tetapi akan sangat menghargai jika Anda dapat memberikan beberapa petunjuk juga sehingga saya dapat memahami konsep-konsep ini dengan lebih baik.


2
Sebenarnya ada dua pertanyaan seperti yang saya lihat. Salah satunya adalah meminta formalisme konsep berorientasi objek. Yang lain meminta konsep berorientasi objek dalam matematika. Mungkin akan lebih baik untuk mengajukan dua pertanyaan terpisah. Ada banyak materi di luar sana menjawab pertanyaan pertama, meskipun mungkin hanya sedikit untuk yang kedua. (Dan mungkin besok aku akan menemukan waktu untuk menjawab pertanyaan itu.)
Dave Clarke

Terima kasih .. bisakah Anda menyarankan saya bahan untuk formalisasi konsep berorientasi objek yang dianggap sebagai standar atau "buku teks"? Saya akan menunggu jawaban Anda untuk yang kedua .... :)
user1260776

2
Buku standar (beberapa tahun yang lalu) adalah A Theory of Objects . Pekerjaan yang lebih baru adalah Java Featherweight . Ada juga serangkaian lokakarya yang disebut Yayasan Bahasa Berorientasi Objek yang membahas masalah ini.
Dave Clarke

Terima kasih! Akan melewati mereka ... Juga, saya menemukan "lambda calculus" yang terkait erat dengan pertanyaan saya ..
user1260776

Jawaban:


9

Jawabannya rumit, karena dua alasan.

  1. Orang yang berbeda dalam Ilmu Komputer menafsirkan istilah "objek" secara berbeda. Salah satunya adalah bahwa suatu objek terdiri dari beberapa data dan operasi yang dikemas bersama. Yang lain adalah bahwa objek adalah semua itu tetapi juga memiliki "keadaan," yaitu, itu adalah beberapa bentuk yang berubah entitas yang .

  2. Ada masalah filosofis yang mendalam terkait dengan apa yang dimaksud dengan "perubahan" (dan apa yang "entitas" artinya, karena ia terus berubah), dan apakah deskripsi matematis benar-benar menangkap entitas yang dapat diubah.

Objek dalam arti operasi data + : Itu cukup standar dalam matematika. Ambil buku teks teori kelompok apa saja. Ini akan memiliki suatu definisi seperti . (Ini adalah operator konjugasi.) The h g adalah "objek" dalam terminologi ini. Ini memiliki beberapa data ( g ) dan operasi x g x g - 1 . Atau Anda dapat membuatnya lebih objek-y dengan mengambil pasangan g , x g x g - 1hg(x)=gxg-1hggxgxg-1 Atau tripleg , x g x g - 1 , x g - 1 x g . Anda dapat membuat "objek" semacam ini dalam bahasa pemrograman fungsional apa pun yang memiliki abstraksi lambda dan beberapa cara untuk membentuk tupel. "Teori Teori Objek" Abadi dan Cardelli membahas objek semacam ini secara luas.g,xgxg-1g,xgxg-1,xg-1xg

Objek dengan keadaan (atau objek yang berubah ): Apakah matematika memiliki hal-hal seperti itu? Saya kira tidak. Saya belum pernah melihat ahli matematika berbicara tentang apa pun yang berubah, tidak dalam kehidupan profesionalnya. Newton biasa menulis untuk posisi partikel, yang konon berubah, dan ˙ x untuk laju perubahannya. Matematikawan akhirnya menemukan bahwa apa yang dibicarakan Newton adalah fungsi x ( t ) dari bilangan real ke dalam ruang vektor, dan ˙ x adalah fungsi lain yang merupakan turunan pertama dari x ( t ) sehubungan dengan txx˙x(t)x˙x(t)t. Dari ini, banyak ahli matematika berpikiran mendalam telah menyimpulkan bahwa perubahan tidak benar-benar ada dan yang Anda miliki hanyalah fungsi waktu. Tetapi yang berubah dalam mekanika Newton bukanlah posisi, tetapi partikelnya . Posisi adalah keadaan sesaat. Tidak ada ahli matematika atau fisika yang akan berpura-pura bahwa partikel adalah ide matematika. Itu adalah hal fisik.

Begitu pula dengan benda. Mereka adalah hal-hal "fisik", dan negara adalah atribut matematika mereka. Untuk diskusi yang bagus tentang aspek ini, lihat Bab 3 Struktur dan Interpretasi Program Komputer Abelson dan Sussman . Ini adalah buku teks di MIT dan mereka mengajarkannya kepada semua ilmuwan dan insinyur, yang saya pikir mengerti hal-hal "fisik" dengan sangat baik.

x1(t)x2(t)

Demikian pula cara matematika standar untuk memodelkan program berorientasi objek adalah memperlakukan setiap objek sebagai indeks ke dalam ruang keadaan. Satu-satunya perbedaan adalah bahwa karena objek datang dan pergi, dan struktur sistemnya dinamis, kita perlu memperluasnya ke model "kemungkinan dunia" di mana setiap dunia pada dasarnya adalah kumpulan indeks. Alokasi dan alokasi objek akan melibatkan perpindahan dari satu dunia ke dunia lain.

Namun ada masalah. Tidak seperti dalam mekanika, kita ingin keadaan objek kita dienkapsulasi . Tetapi deskripsi matematis dari benda-benda menempatkan keadaan di semua tempat, benar-benar menghancurkan enkapsulasi. Ada trik matematika yang disebut "parametricity relasional" yang dapat digunakan untuk memotong hal-hal kembali ke ukuran. Saya tidak akan membahasnya sekarang, kecuali untuk menekankan bahwa ini adalah trik matematika, bukan penjelasan enkapsulasi yang sangat konseptual. Cara kedua memodelkan objek secara matematis, dengan enkapsulasi, adalah untuk menentukan kondisi dan menggambarkan perilaku objek dalam hal peristiwa yang dapat diamati. Untuk diskusi yang baik dari kedua model ini, saya dapat merujuk Anda ke makalah saya berjudul Objects and class in Algol-like Languages .


[Catatan ditambahkan:]

Analisis yang bagus dari dasar-dasar matematika objek dapat ditemukan dalam artikel William Cook " Pada Memahami Abstraksi Data, Diperiksa Kembali ".


2
Saya tahu seseorang di sini akan dapat menjawab ...
Andrej Bauer

Terima kasih Uday, atas waktu Anda, dan jawaban terinci. Ketika saya mengajukan pertanyaan ini, saya hanya berpikir dalam arti "operasi data +", dan tidak pernah terpikir oleh saya bahwa teori grup dapat mewakili "OBJECT" sebagai "operasi data +". Selain itu, saya juga akan pergi melalui tautan yang Anda referensikan.
user1260776

@AndrejBauer. Ya, saya mungkin berlebihan. OP mungkin menggunakan "matematika" hanya sebagai kata untuk formalisasi, sebagai lawan dari disiplin ilmu.
Uday Reddy

@Uday, saya mungkin tidak mengajukan pertanyaan dengan benar, tetapi ketika saya maksudkan "matematika", saya jelas berarti matematika formal. Pikiran saya adalah "'teori set' membentuk dasar matematika, bagaimana 'menjelaskan' atau 'menurunkan' objek OO Modeling dalam hal teori set. logika urutan pertama) ... "Meskipun saya tidak mengerti jawaban Anda sepenuhnya, saya bisa" merasakan "apa yang Anda katakan, & saya jamin, ini adalah jawaban yang saya harapkan. Terima kasih !! (ide-ide saya tidak sepenuhnya terorganisir, tolong maafkan saya, saya masih pemula :))
user1260776

2
@ user1260776. Saya mengerti. Tetapi poin saya adalah bahwa "formal" dan "matematika" adalah ide yang berbeda. Anda dapat memformalkan konsep tanpa mengurangi mereka ke (atau menurunkannya dari) matematika. Newton meresmikan mekanika tetapi tidak repot-repot mengurangi "partikel" menjadi "set". Saya pribadi cukup senang mengikuti jejak Newton dan mengakui hal-hal yang tidak saya kurangi menjadi set. Tapi, saya kira kita harus tahu kapan mengurangi dan kapan tidak mengurangi. Setelah dilatih sebagai seorang Fisika, saya menemukan itu cukup mudah dilakukan. Bagi banyak Ilmuwan Komputer lain, ini mungkin tidak mudah.
Uday Reddy

0

berpikir ada deskripsi teoretis yang cukup bagus tentang objek dalam buku klasik lama "struktur dan interpretasi program komputer" [1] oleh abelson & sussman, berdasarkan skema (varian lisp). sekarang gratis online! ini menunjukkan bagaimana konsep orientasi objek dapat tertanam bahkan ke dalam kalkulus lambda (~ alias Lisp) jika Anda memiliki beberapa mekanisme untuk menyimpan keadaan lokal. seperti yang saya mengerti, ini adalah buku teks MIT std untuk banyak thn. tidak mengatakan ini adalah referensi terbaik pada subjek; Saya yakin ada yang lebih baik di pt ini.

Saya tidak berpikir ini telah benar-benar diformalkan di mana saja saya pernah mendengar tetapi objek longgar pada dasarnya terdiri dari kode + data dalam bentuk

  • metode (dengan parameter)
  • negara, yaitu variabel instan

dalam beberapa bentuk yang dienkapsulasi. bisa dibilang aspek lain seperti warisan tidak mendasar. seperti yang dinyatakan dalam abelson & sussman, apa yang mereka sebut "gula sintaksis".

[1] struktur & interpretasi program komputer oleh abelson & sussman


3
Tentu saja objek dalam pengertian pemrograman berorientasi objek telah diformalkan. Ada buku karya Abadi & Cardelli, Castanga, dan Kim Bruce yang dikhususkan untuk topik ini. Telah ada 10 tahun lokakarya dalam seri FOOL yang didedikasikan untuk dasar-dasar pemrograman berorientasi objek. Konferensi ECOOP dan OOPSLA secara teratur memiliki makalah tentang dasar-dasar OO. Memang, makalah pertama tentang semantik OO berusia sekitar 20 tahun.
Dave Clarke

@vzn, terima kasih atas jawabannya. Saya akan membaca buku-buku yang Anda sarankan ...
user1260776

DC-- Aku mengucapkannya dengan buruk. lebih tepatnya, anggap aman untuk mengatakan bahwa definisi formal tentang apa yang sebenarnya merupakan "objek" atau apa komponen kunci / fundamental dari OOP cenderung sangat bervariasi dalam literatur. definisi mungkin telah berkembang secara signifikan dari waktu ke waktu. misalnya saya menduga pewarisan ditambahkan kemudian dan ide aslinya hanya kode + data dalam bentuk enkapsulasi.
vzn

contoh lain dari fitur OOP yang tidak disetujui sebagai dasar dari apa yang dapat saya katakan adalah multiple inheritance yang terlihat pada misalnya C ++ tetapi sengaja dihindari di java dan lebih memilih antarmuka. dll
vzn
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.