Domanda

Recentemente ho posto una domanda su quelle che ho chiamato "chiamate di metodo".La risposta si riferiva a "messaggi".Come programmatore per hobby autodidatta che cerca di formulare domande che non mi facciano sembrare un idiota, mi sto rendendo conto che la terminologia che utilizzo rivela molto su come ho imparato a programmare.

Esiste una distinzione tra i vari termini per metodi/messaggi/ecc.nella programmazione OO?Si tratta di una differenza che deriva dai diversi linguaggi di programmazione che utilizzano una terminologia diversa per descrivere concetti simili?

Mi sembra di ricordare che nei linguaggi pre-OO a volte veniva fatta una distinzione tra "subroutine" e "funzioni" in base al fatto che fosse previsto un valore di ritorno, ma anche allora, si trattava di una distinzione lingua per lingua?

È stato utile?

Soluzione

Ho scoperto che questa è una questione di linguaggio e paradigma di programmazione.Un paradigma, l'OOP, si riferisce agli oggetti con metodi membro, che concettualmente rappresentano il modo in cui si inviano messaggi a tali oggetti (questa visione si riflette, ad esempio, in UML).

Un altro paradigma, quello funzionale, può coinvolgere o meno classi di oggetti, ma le funzioni sono l’unità atomica del lavoro.

Nella programmazione strutturata c'erano delle sub-routine (notate che il prefisso "sub" implica struttura).

Nella programmazione imperativa (che si sovrappone parecchio a quella strutturata, ma con un modo leggermente diverso di guardare le cose), si ha una visione più stereotipata del mondo, e quindi le "funzioni" rappresentano alcune operazioni (spesso matematiche).

Tutto quello che devi fare per non sembrare un idiota è usare la terminologia usata dalla lingua di riferimento per la lingua che stai utilizzando.

Altri suggerimenti

Messaggio!=Metodo!=funzione

nell'OOP diverso oggetti potrebbe essere diverso metodi vincolato allo stesso Messaggio.

Per esempio:il messaggio "ruota a sinistra di n gradi" verrebbe implementato in modo diverso da oggetti diversi come forma, cerchio, rettangolo e quadrato.

Messaggi:Gli oggetti comunicano attraverso messaggi.

-Gli oggetti inviano e ricevono messaggi.

-la risposta a un messaggio sta eseguendo un metodo.

-Il metodo da utilizzare è determinare il ricevitore in fase di esecuzione.

In C++ vengono chiamati metodi e messaggi membri della funzione.

Credo Messaggio è usato nelle chiacchiere.

Java, C# ecc.tendono ad usare metodo O metodo di istanza.

Sono abbastanza sicuro (ma veloce Wikipedia check sembra confermarlo) che la terminologia di "passaggio di messaggi" proviene dalla comunità Smalltalk.Penso che sia più o meno equivalente a una chiamata al metodo.

Il termine "Messaggio" può riferirsi all'invio di un messaggio a un oggetto, che è supportato in alcuni linguaggi di programmazione e non in altri.

Se l'oggetto supporta il messaggio, eseguirà del codice.Altrimenti lo ignorerà semplicemente.Si tratta di un approccio più dinamico rispetto a una chiamata esplicita di funzione/metodo in cui l'oggetto deve supportare tale funzione.

Objective-c, credo, utilizza questo approccio di messaggistica.

Nelle implementazioni orientate agli oggetti come C#, il concetto di "messaggio" non esiste realmente come costrutto linguistico esplicito.Non puoi guardare un particolare frammento di codice e dire "ecco il messaggio".

Invece, un metodo della classe di un oggetto implica l'idea che altri oggetti possano inviare un tipo di messaggio che innesca il comportamento all'interno di quel metodo.Quindi finisci per specificare direttamente il metodo, anziché inviare un messaggio.

Con altre implementazioni come Smalltalk, puoi vedere il messaggio che viene passato e l'oggetto ricevente ha la capacità di fare ciò che vuole con quel messaggio.

Esistono librerie che si trovano sopra linguaggi come C# che tentano di ripristinare la sensazione di passaggio di messaggi espliciti nel linguaggio.Ne ho preparato uno per divertimento qui: http://collaborateframework.codeplex.com/

Non sono sicuro dell'origine di Messaggio terminologia.Molto spesso incontro messaggi nella progettazione UML.Gli oggetti (attori nella terminologia UML) possono comunicare tra loro tramite messaggi.Nel codice del mondo reale Messaggio di solito è solo una chiamata di funzione.Penso al messaggio come al tentativo di comunicare con qualche oggetto.Può essere un messaggio reale (come i messaggi nel sistema operativo) o chiamate di funzione.

Di solito, "Metodo" sembra essere il nome corretto per Funzioni.Tuttavia, ogni lingua ha le proprie parole chiave.Delphi, ad esempio, fa anche una differenza tra metodi che restituiscono qualcosa ("Funzioni") e metodi che restituiscono Niente ("Procedure") mentre nei linguaggi di tipo C non c'è differenza.

Ecco alcune definizioni semplificate:

metodi/subroutine/vuoti:eseguire un'azione

funzioni:eseguire un'azione e restituire un valore

eventi:vengono chiamati quando si agisce su un oggetto

gestori:sono le funzioni/metodi che gestiscono gli eventi


PS:questo è un perfetto esempio del motivo per cui SO dovrebbe supportare i tag DL/DT/DD.

Credo che a questo punto sia una questione di preferenze.Le parole che menzioni sono fondamentalmente sinonimi nelle lingue odierne e la maggior parte delle persone capirà cosa intendi se dici "metodo" o "funzione".Se utilizzi "messaggio", che in realtà viene utilizzato solo in OOP, potresti confondere ciò che stai tentando di trasmettere. Ad esempio:"Devo creare un messaggio per inviare un messaggio di posta elettronica." Altri termini che potrebbero essere sinonimi e questo non è un elenco completo, sono la subroutine, l'azione, la procedura, il funzionamento (sebbene di solito in natura matematica), sottoprogramma, comando ...

metodo :simile alla funzione nelle lingue tradizionali

Messaggio :simile al passaggio di parametri nel linguaggio tradizionale

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top