2013-04-25 16 views
8

Ho appena deciso di integrare le mie competenze di programmazione MATLAB con una codifica Java più coerente e rigorosa. Quindi spero che non sarà una domanda troppo ingenua.Metodi di Java e funzioni

Mi piacerebbe sapere se esiste una reale ragione per cui Java si riferisce a funzioni come methods e non come functions, come fanno molti altri linguaggi di programmazione.

A causa della natura interna di OOP Java rispetto ai linguaggi procedurali come C/C++? o ci sono altre ragioni importanti (o sottili)?

Grazie in anticipo.

+0

metodi sono funzioni delle classi nell'ambito di classe ... –

+0

@JavaNewb Cosa? –

+1

Non sono molto contento della definizione contenuta nella risposta accettata nel "dupe", francamente; si tratta ancora di una questione di definizione, e tale definizione dipende dal contesto. La linea di fondo è "perché è quello che Java li chiama". –

risposta

3

A mio parere questa figura http://www.jot.fm/issues/issue_2008_03/article4/images/figure2.gif

one, two and three dimensional method dispatch

da http://www.jot.fm/issues/issue_2008_03/article4/ aiuta comprendere una delle principali differenze tra OO e programmazione procedurale. Fondamentalmente l'idea è che

programmazione procedurale fornisce una sola dimensione per associare un'unità computazionale con un nome. Qui, le chiamate di procedura oi nomi vengono mappati direttamente alle implementazioni della procedura.In figura a chiamare m1 lascia altra scelta che l'invocazione l'unica implementazione di procedura m1

mentre

programmazione orientata agli oggetti aggiunge un'altra dimensione di risoluzione di nomi a quella di programmazione procedurale. Oltre al metodo o al nome della procedura , la spedizione dei messaggi prende in considerazione il destinatario del messaggio nella considerazione durante la ricerca di un metodo. Nella Figura 2b vediamo due implementazioni del metodo m1. La scelta del metodo appropriato dipende non solo il nome messaggio m1, ma anche il ricevitore del messaggio effettivo, qui Ry

terza sezione della figura (c) si riferisce ad assoggettare programmazione orientata, in cui il comportamento di un oggetto (il metodo chiamato) non dipende solo dallo stato dell'oggetto, ma anche dai soggetti che lo invocano (o lo osservano). Tuttavia questo è effettivamente fuori dalla portata della tua domanda.

0

Sono uguali. In genere il C++ li chiama funzioni. Java in genere si riferisce a loro come metodi.

I metodi sono in genere associati a una classe.

A volte sentirete anche "funzione di classe", che è solo un metodo.

Non importa, la gente saprà di cosa stai parlando se li chiami.

+4

Non è vero, anche se pensiamo che sia la stessa cosa. Un metodo è per gli oggetti e una funzione è indipendente dagli oggetti. –

+1

Ovviamente non sei stato nel mondo della programmazione. Indietro prima di Java, abbiamo chiamato metodi "funzioni di classe". Non restare impigliato nella semantica. –

+1

Guarda questo post (risposta di Aaron). http://stackoverflow.com/questions/155609/what-is-the-difference-between-a-method-and-a-function –

4

Bene c'è una piccola differenza tra un metodo e una funzione.

Una funzione è solo un codice che è possibile chiamare in qualsiasi momento con il suo nome ed è possibile passare argomenti anche noti come parametri e si può anche ottenere il risultato da qualsiasi funzione vale a dire valore di ritorno della funzione.

Ma un metodo è un codice che viene chiamato con il suo nome ma è associato a qualsiasi oggetto. Puoi anche passare i parametri ai metodi e puoi anche ottenere un valore di ritorno dai metodi, ma la cosa è che saranno sempre associati a alcuni oggetti.

CURA

Java è orientato agli oggetti, non si può avere il codice Java di funzionare senza classi, nella maggior parte dei casi, tuttavia in C++ è possibile ottenere la corsa codice senza classi. Quindi in Java ci saranno classi e il codice verrà scritto in classi, quindi vengono chiamati metodi anziché funzioni, in quanto saranno associati agli oggetti.

Ma in C++ è possibile avere una funzione che può essere chiamata passando i valori in modo esplicito.

In termini semplici, si può dire, un metodo è una funzione correlata a un oggetto.

+2

* Java è veramente orientato agli oggetti * Non lo direi. Java ha metodi statici (infatti il ​​punto di ingresso per ogni programma Java è un metodo statico) e appartengono alle classi, ma non agli oggetti. Java è un linguaggio procedurale imperativo che può (e dovrebbe) essere usato in un modo orientato agli oggetti, ma non è assolutamente un linguaggio OO puro –

+0

@SeanPatrickFloyd Non l'ho chiamato PURAMENTE OO, l'ho chiamato Veramente. è anche male? e come puoi dire che Java è un linguaggio procedurale? Qualche fonte di leggere questa cosa? – gprathour

+0

È un linguaggio OO che può essere utilizzato in modo errato in un modo non OO (nulla ti impedirà di scrivere un singolo metodo principale lungo migliaia di righe senza una singola allocazione dell'oggetto). Se questo corrisponde alla tua definizione di OO, le nostre definizioni sono diverse –

1

Non posso fare a meno di pensare a un dramma inutile in questo. "metodi" è solo un nome, sicuramente, che Java utilizza, per le subroutine che possono o non possono richiedere parametri e possono o meno restituire un valore?

E.g. "metodi" validi potrebbero essere i seguenti, senza entrare nella purezza OO, definizioni canoniche di "funzioni", ecc .; entrambi sottostante può o non può utilizzare un oggetto di "stato" corrente (istanza valori variabili) nella loro esecuzione anche:

// kind of a function, returns a value 
public int calculateStuff(int param1) 

// more of a procedure, presumably just "does stuff", returns nothing 
public void doStuff(int param1) 
Problemi correlati