Cevap iki nedenden dolayı karmaşıktır.
Bilgisayar Bilimlerinde farklı insanlar "nesne" terimini farklı yorumlarlar. Birincisi, bir nesnenin birlikte paketlenmiş bazı verilerden ve işlemlerden oluşmasıdır. Diğeri, bir nesnenin "devlet" e sahip olan tek şey olması, yani değiştirilebilir bir varlığın bir şeklidir .
"Değişim" in ne anlama geldiği (ve sürekli olarak değiştiği için "varlık" ne anlama geldiği) ve matematiksel tanımların gerçekten değiştirilebilir varlıkları yakalayıp yakalamadığıyla ilgili derin felsefi konular vardır.
Veri + işlemler anlamında nesne : Matematikte oldukça standarttır. Herhangi bir grup teorisi ders kitabını alın. Gibi bir yerde bir tanımı olacakhg( x ) = gxg- 1. (Bu bir konjugasyon operatörüdür.)hgbu terminolojide bir "nesne" dir. Bazı verileri var (g) ve bir işlem x ↦ gxg- 1. Ya da çifti alarak daha nesne-y yapabilirsiniz⟨ g, x ↦ gxg- 1⟩ veya üçlü ⟨ g, x ↦ gxg- 1, x ↦g- 1x g⟩. Bu tür "nesneleri" lambda soyutlaması olan ve tuples oluşturmanın bir yolu olan herhangi bir işlevsel programlama dilinde inşa edebilirsiniz. Abadi ve Cardelli'nin "Nesneler Teorisi" bu tür nesnelerle kapsamlı bir şekilde ilgileniyor.
İle Nesneler devlet (veya nesneler o değişim ): mu matematik böyle şeyler var mı? Ben öyle düşünmüyorum. Bir matematikçinin mesleki hayatında değil, değişen bir şey hakkında konuştuğunu görmedim. Newton eskiden yazıyordux sözde değişen bir parçacığın pozisyonu için ve x˙değişim oranı için. Matematikçiler nihayet Newton'un bahsettiği şeyin bir işlev olduğunu anladılarx ( t ) gerçek sayılardan bir vektör uzaya ve x˙ ilk türevi olan böyle bir işlevdi x ( t ) göre t. Bundan, derin düşünen birçok matematikçi değişimin gerçekten var olmadığı ve sahip olduğunuz tek şeyin zamanın işlevleri olduğu sonucuna varmıştır. Fakat Newton mekaniğinde değişen şey pozisyon değil parçacıktı . Pozisyon anlık durumudur. Hiçbir matematikçi veya fizikçi parçacığın matematiksel bir fikir olduğunu iddia etmez. Fiziksel bir şey.
Yani nesnelerle. Bunlar "fiziksel" şeylerdir ve devletler matematiksel özellikleridir. Bu konuyla ilgili güzel bir tartışma için Abelson ve Sussman'ın Bilgisayar Programlarının Yapısı ve Yorumu Bölüm 3'üne bakın . Bu MIT'de bir ders kitabı ve bunu "fiziksel" şeyleri gayet iyi anladığını düşündüğüm tüm bilim insanlarına ve mühendislere öğretiyorlar.
Parçacıkların matematiksel olmaması, onlarla matematiksel olarak baş edemeyeceğimiz anlamına gelmez. Bir matematikçiden iki parçacık sistemini modellemesini istersen, hemen iki işlevi oluşturur ve onları çağırır.x1( t ) ve x2( t ). Böylece, iki parçacık iki anlamsız indekse indirgenir (1 ve 2). Matematikçinin bu parçacıkların ne olduğunu bilmediğimizi ve umursamadığımızı söylemenin yolu budur. Bilmemiz gereken tek şey, konumlarının bağımsız olarak (veya ayrı olarak) gelişmesidir. Bu yüzden onları iki ayrı işlevle modelleyeceğiz.
Benzer şekilde, nesne yönelimli programları modellemenin standart matematiksel yolu, her nesneyi durum alanına bir dizin olarak ele almaktır. Tek fark, nesneler gelip gittiğinden ve sistemin yapısı dinamik olduğundan, onu her dünyanın temelde bir endeksler koleksiyonu olduğu "olası bir dünya" modeline genişletmemiz gerektiğidir. Nesnelerin tahsisi ve serbest bırakılması bir dünyadan diğerine geçmeyi içerecektir.
Yine de bir sorun var. Mekanikten farklı olarak, nesnelerimizin durumunun kapsüllenmesini istiyoruz . Ancak nesnelerin matematiksel tanımları, devletleri her yere koyar ve kapsüllemeyi tamamen yok eder. "İlişkisel parametriklik" adı verilen ve şeyleri yeniden boyutlandırmak için kullanılabilecek bir matematik hilesi vardır. Şimdi içine girmeyeceğim, bunun matematiksel bir hile olduğunu vurgulamak dışında, kapsüllemenin çok kavramsal bir açıklaması değil. Nesneleri matematikle, kapsülleme ile modellemenin ikinci bir yolu , durumları inceler ve nesne davranışını gözlemlenebilir olaylar açısından tanımlamaktır. Her iki modelin de iyi bir tartışması için, sizi Algol benzeri Dillerdeki Nesneler ve sınıflar başlıklı makaleme yönlendirebilirim .
[Not eklendi:]
Nesnelerin matematiksel temellerinin güzel bir analizi William Cook'un " Veri Soyutlamasını Anlama, Yeniden Gözden Geçirme " makalesinde bulunabilir .