Definizione formale / controparte in matematica per "Oggetti" di modelli orientati agli oggetti


9

Questa è una domanda che ho posto nel forum di matematica su SE, e sono stato rinviato qui. Quindi ecco la domanda-

Sono un principiante sia in matematica formale che in informatica teorica, quindi per favore abbi pazienza se trovi che la mia domanda non è correttamente inquadrata. La modellazione orientata agli oggetti sembra molto utile nel definire interazioni complesse durante la simulazione del mondo reale. Ma è principalmente usato nella programmazione. Mi chiedevo se abbiamo un concetto simile in matematica. Quando stiamo programmando, possiamo capire il concetto di "Oggetti" e "Programmazione orientata agli oggetti" e implementarlo. Ma abbiamo una definizione formale di "oggetti" in termini di teoria degli insiemi? O del resto, qualsiasi altra teoria matematica formale?

Possiamo implementare / definire formalmente tre concetti di modellizzazione orientali dell'oggetto primario- 1. Incapsulamento 2. Ereditarietà 3. Polimorfismo

So che la domanda è troppo ampia, ma apprezzerei molto se tu potessi fornire anche alcuni suggerimenti in modo che io possa capire meglio questi concetti.


2
Ci sono davvero due domande a mio avviso. Uno sta chiedendo un formalismo di concetti orientati agli oggetti. L'altro chiede concetti orientati agli oggetti in matematica. Forse sarebbe meglio porre due domande separate. C'è un sacco di materiale là fuori che risponde alla prima domanda, anche se probabilmente solo un po 'per la seconda. (E forse domani troverò il tempo per rispondere alla domanda.)
Dave Clarke,

Grazie .. potresti suggerirmi un materiale per la formalizzazione di concetti orientati agli oggetti che è considerato standard o "libro di testo"? Aspetterò la tua risposta per la seconda .... :)
user1260776

2
Il libro standard (di qualche anno fa) è A Theory of Objects . Il lavoro più recente è Featherweight Java . C'è anche una serie di seminari chiamati Foundations of Object-Oriented Languages che si occupano di questi problemi.
Dave Clarke,

Grazie! Li
esaminerò

Risposte:


9

La risposta è complicata, per due motivi.

  1. Diverse persone in Informatica interpretano il termine "oggetto" in modo diverso. Uno è che un oggetto è costituito da alcuni dati e operazioni impacchettati insieme. L'altro è che un oggetto è tutto ciò ma ha anche "stato", cioè è una forma di entità mutevole .

  2. Ci sono profonde questioni filosofiche a che fare con ciò che significa "cambiamento" (e che cosa significa "entità", in quanto è in continua evoluzione) e se le descrizioni matematiche in realtà catturano entità mutevoli.

hg(x)=gxg1hggxgxg1g,xgxg1g,xgxg1,xg1xg

xx˙x(t)x˙x(t)t. Da questo, molti matematici di pensiero profondo hanno concluso che il cambiamento non esiste davvero e tutto ciò che hai sono funzioni del tempo. Ma ciò che stava cambiando nella meccanica newtoniana non era la posizione, ma la particella . La posizione è il suo stato istantaneo. Nessun matematico o fisico pretenderebbe che una particella sia un'idea matematica. È una cosa fisica.

Lo stesso vale per gli oggetti. Sono cose "fisiche" e gli stati sono i loro attributi matematici. Per una bella discussione di questo aspetto, consultare il capitolo 3 di Struttura e interpretazione dei programmi per computer di Abelson e Sussman . Questo è un libro di testo al MIT e lo insegnano a tutti gli scienziati e ingegneri, che penso capiscano perfettamente le cose "fisiche".

x1(t)x2(t)

Allo stesso modo, il modo matematico standard per modellare i programmi orientati agli oggetti è di trattare ogni oggetto come un indice nello spazio degli stati. L'unica differenza è che, poiché gli oggetti vanno e vengono e la struttura del sistema è dinamica, dobbiamo estenderlo a un modello di "mondo possibile" in cui ogni mondo è fondamentalmente una raccolta di indici. Allocazione e deallocazione di oggetti comporterebbe il passaggio da un mondo all'altro.

C'è un problema però. A differenza della meccanica, vogliamo che lo stato dei nostri oggetti sia incapsulato . Ma le descrizioni matematiche degli oggetti mettono gli stati ovunque, distruggendo completamente l'incapsulamento. Esiste un trucco matematico chiamato "parametria relazionale" che può essere usato per ridimensionare le cose. Non ci entrerò ora, se non per sottolineare che si tratta di un trucco matematico, non una spiegazione molto concettuale dell'incapsulamento. Un secondo modo di modellare matematicamente gli oggetti, con l' incapsulamento, è quello di affinare gli stati e descrivere il comportamento degli oggetti in termini di eventi osservabili. Per una buona discussione di entrambi questi modelli, posso fare riferimento al mio documento intitolato Oggetti e classi in linguaggi simili all'Algol .


[Nota aggiunta:]

Una bella analisi delle basi matematiche degli oggetti può essere trovata nell'articolo di William Cook " Sulla comprensione dell'astrazione dei dati, rivisitato ".


2
Sapevo che qualcuno qui sarebbe stato in grado di rispondere ...
Andrej Bauer,

Grazie Uday, per il tuo tempo e una risposta dettagliata. Quando ho posto questa domanda, pensavo solo nel senso di "dati + operazioni", e non mi è mai venuto in mente che la teoria dei gruppi possa rappresentare "OGGETTO" come "dati + operazioni". Inoltre, esaminerò anche i collegamenti che hai indicato.
user1260776

@AndrejBauer. Sì, probabilmente sono andato in mare. L'OP stava probabilmente usando "matematica" proprio come una parola per formalizzazione, al contrario di una disciplina.
Uday Reddy,

@Giorno, potrei non avere correttamente formulato la domanda, ma quando intendevo "matematica", intendevo chiaramente matematica formale. Il mio pensiero era "la teoria degli insiemi" costituisce la base della matematica, come "spiegare" o "derivare" gli oggetti della modellazione OO in termini di teoria degli insiemi. Come possiamo mettere insieme tutti questi - Teoria degli insiemi, Oggetti e logica formale (come logica del primo ordine) ... "Anche se non capisco completamente la tua risposta, sono in grado di" capire "ciò che hai detto, e ti assicuro, questa è la risposta che mi aspettavo. Grazie !! (le mie idee non sono completamente organizzate, per favore
scusatemi

2
@ user1260776. Capisco. Ma il mio punto è che "formale" e "matematica" sono idee diverse. Puoi formalizzare concetti senza ridurli a (o derivarli da) matematica. Newton ha formalizzato la meccanica ma non si è preoccupato di ridurre le "particelle" in "insiemi". Sono personalmente abbastanza felice di seguire l'esempio di Newton e ammettere cose che non riduco ai set. Ma immagino che dobbiamo sapere quando ridurre e quando non ridurre. Essendo stato addestrato come fisico, lo trovo abbastanza facile da fare. Per molti altri scienziati informatici, potrebbe non essere così semplice.
Uday Reddy,

0

penso che esista una descrizione teorica abbastanza buona degli oggetti nel vecchio libro classico "struttura e interpretazione dei programmi per computer" [1] di abelson & sussman, basato sullo schema (una variante lisp). ora gratis online! questo mostra come il concetto di orientamento dell'oggetto può essere incorporato anche nel calcolo lambda (~ aka Lisp) se si dispone di un meccanismo per memorizzare lo stato locale. a quanto ho capito, questo è stato un libro di testo del MIT standard per molti anni. non dire che questo è il miglior riferimento al soggetto; sono sicuro che ce ne sono altri migliori in questo pt.

Non penso che questo sia stato completamente formalizzato ovunque io abbia sentito parlare, ma gli oggetti vagamente parlando sono fondamentalmente composti da codice + dati sotto forma di

  • metodi (con parametri)
  • stato, ovvero variabili di istanza

in qualche forma incapsulata. probabilmente altri aspetti come l'eredità non sono fondamentali. come affermato in abelson & sussman, quello che chiamano "zucchero sintattico".

[1] struttura e interpretazione dei programmi per computer di abelson & sussman


3
Naturalmente gli oggetti nel senso della programmazione orientata agli oggetti sono stati formalizzati. Ci sono libri di Abadi & Cardelli, Castanga e Kim Bruce dedicati all'argomento. Ci sono stati 10 anni di seminari nella serie FOOL dedicati alle basi della programmazione orientata agli oggetti. Le conferenze ECOOP e OOPSLA avevano regolarmente articoli sulle basi di OO. In effetti, il primo documento sulla semantica di OO ha circa 20 anni.
Dave Clarke,

@vzn, grazie per la risposta. Esaminerò i libri che hai suggerito ...
user1260776

DC-- L'ho detto male. più precisamente, ritengono sicuro affermare che le definizioni formali di ciò che costituisce esattamente un "oggetto" o quali sono le componenti chiave / fondamentali di OOP tendono a variare significativamente nella letteratura. le definizioni si sono probabilmente ampliate in modo significativo nel tempo. per esempio, sospetto che l'eredità sia stata aggiunta più tardi e l'idea originale era principalmente solo codice + dati in una forma incapsulata.
vzn

un altro esempio di una funzionalità OOP che non è concordato come fondamentale da quello che posso dire è l'ereditarietà multipla che è vista ad esempio in C ++ ma intenzionalmente evitata in Java a favore di interfacce. ecc.
vzn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.