Odpowiedź jest skomplikowana z dwóch powodów.
Różni ludzie informatyki inaczej interpretują termin „obiekt”. Jednym z nich jest to, że obiekt składa się z niektórych danych i operacji spakowanych razem. Drugim jest to, że obiekt jest wszystkim, ale ma również „stan”, tj. Jest jakąś formą zmiennej bytu.
Istnieją głębokie kwestie filozoficzne związane z tym, co oznacza „zmiana” (i co oznacza „byt”, ponieważ ciągle się zmienia) oraz czy opisy matematyczne rzeczywiście wychwytują zmienne byty.
Obiekt w sensie danych + operacji : jest to dość standard w matematyce. Weź dowolny podręcznik dotyczący teorii grup. Będzie miał gdzieś taką definicję jakhg(x)=gxg−1. (Jest to operator koniugacji.)hgjest „przedmiotem” w tej terminologii. Zawiera pewne dane (g) i operacja x↦gxg−1. Możesz też uczynić go bardziej obiektowym, biorąc parę⟨g,x↦gxg−1⟩ lub potrójny ⟨ g, x ↦ gxsol- 1, x ↦sol- 1x g⟩. Możesz budować tego rodzaju „obiekty” w dowolnym funkcjonalnym języku programowania, który ma abstrakcję lambda i jakiś sposób tworzenia krotek. „Teoria przedmiotów” Abadiego i Cardellego obszernie zajmuje się przedmiotami tego rodzaju.
Obiekty ze stanem (lub obiekty, które się zmieniają ): Czy matematyka ma takie rzeczy? Nie wydaje mi się Nie widziałem matematyka opowiadającego o czymkolwiek, co się zmienia, nie w jego / jej życiu zawodowym. Newton pisałx dla pozycji cząsteczki, która podobno się zmienia, oraz x˙za tempo zmian. Matematycy w końcu zorientowali się, że to, o czym mówił Newton, było funkcjąx ( t ) z liczb rzeczywistych w przestrzeń wektorową i x˙ była kolejną taką funkcją, która była pierwszą pochodną x ( t ) z szacunkiem do t. Na podstawie tego wielu głęboko myślących matematyków doszło do wniosku, że zmiany tak naprawdę nie istnieją, a wszystko, co macie, to funkcje czasu. Ale w mechanice Newtona zmieniła się nie pozycja, ale cząstka . Pozycja jest stanem chwilowym. Żaden matematyk ani fizyk nie udawałby, że cząstka jest ideą matematyczną. To jest rzecz fizyczna.
Tak jest z przedmiotami. Są to rzeczy „fizyczne”, a stany są ich matematycznymi atrybutami. Miłą dyskusję na temat tego aspektu można znaleźć w rozdziale 3 Struktury i interpretacji programów komputerowych Abelsona i Sussmana . Jest to podręcznik na MIT i uczą go wszyscy naukowcy i inżynierowie, którzy, jak sądzę, doskonale rozumieją „fizyczne” rzeczy.
Fakt, że cząstki nie są matematyczne, nie oznacza, że nie możemy sobie z nimi poradzić matematycznie. Jeśli poprosisz matematyka, aby wymodelował układ dwucząstkowy, natychmiast utworzy dwie funkcje i je wywołax1( t ) i x2)( t ). Dwie cząstki redukują się więc do dwóch bezsensownych wskaźników (1 i 2). W ten sposób matematyk mówi, że nie wiemy, czym są te cząsteczki, i nie obchodzi nas to. Musimy tylko wiedzieć, że ich stanowiska ewoluują niezależnie (lub osobno). Dlatego modelujemy je według dwóch osobnych funkcji.
Podobnie standardowym matematycznym sposobem modelowania programów zorientowanych obiektowo jest traktowanie każdego obiektu jako indeksu w przestrzeni stanu. Jedyną różnicą jest to, że skoro obiekty przychodzą i odchodzą, a struktura systemu jest dynamiczna, musimy rozszerzyć ją na model „możliwego świata”, w którym każdy świat jest w zasadzie zbiorem indeksów. Alokacja i dezalokacja przedmiotów wiązałyby się z przemieszczaniem się z jednego świata do drugiego.
Jest jednak problem. W przeciwieństwie do mechaniki chcemy, aby stan naszych obiektów był zamknięty . Ale matematyczne opisy obiektów umieszczają stany w całym miejscu, całkowicie niszcząc hermetyzację. Istnieje matematyczna sztuczka zwana „parametrycznością relacyjną”, której można użyć, aby przywrócić rzeczy do rozmiarów. Nie będę się w to teraz zajmował, poza podkreśleniem, że jest to matematyczna sztuczka, a nie bardzo koncepcyjne wyjaśnienie enkapsulacji. Drugim sposobem matematycznego modelowania obiektów z enkapsulacją jest precyzowanie stanów i opisywanie zachowania obiektu w kategoriach obserwowalnych zdarzeń. Aby dobrze omówić oba te modele, mogę odnieść się do mojego artykułu zatytułowanego Przedmioty i klasy w językach podobnych do Algolu .
[Uwaga dodana:]
Dobrą analizę matematycznych podstaw obiektów można znaleźć w artykule Williama Cooka „ O zrozumieniu abstrakcji danych, ponownie ”.