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.
sumber
Jawaban:
Jawabannya rumit, karena dua alasan.
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 .
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 ) = gx g- 1 hg g x ↦ gx g- 1 Atau triple ⟨ g , 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, x ↦ gx g- 1⟩ ⟨ g, x ↦ gx g- 1, x ↦ g- 1x g⟩
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 tx x˙ 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.
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 ".
sumber
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
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
sumber