Avatar billede jkhaledsoueidan Nybegynder
28. marts 2007 - 09:48 Der er 12 kommentarer

forskellen på metoder og funktioner?

Hej,

Jeg vil gerne hør hvad forskellen mellem en funktion og en metode er?

50 point til de bedste besvarelser.

Mvh
Jamal
Avatar billede mcgoat Nybegynder
28. marts 2007 - 10:00 #1
The difference between a procedure and a method is that the latter, being associated with a particular object, may access or modify the data private to that object in a way consistent with the intended behavior of the object. Consequently, rather than thinking "a method is just a sequence of commands", a programmer using an object-oriented language will consider a method to be "an object's way of providing a service" (its "method of doing the job", hence the name); a method call is thus considered to be a request to an object to perform some task.

Consequently, method calls are often modeled as a means of passing a message to an object. Rather than directly performing an operation on an object, a message (most of the time accompanied by parameters) is sent to the object telling it what it should do. The object either complies or raises an exception describing why it cannot do so. Applied to our stack example, rather than pushing a value onto the stack, a value is sent to the stack, along with the message "Push!".

Ved ikke om det siger dig noget :)
Avatar billede jkhaledsoueidan Nybegynder
28. marts 2007 - 10:01 #2
Hvad med funktioner?

og er alle enig om det?
Avatar billede jkhaledsoueidan Nybegynder
28. marts 2007 - 10:13 #3
Der er to forskellige betydninger jeg har fået.

1. funktioner og metoder er det samme.

2. funktioner findes udenfor classer, metoder findes inde i classer.
- PHP har funktioner, så du kan kalde dem direkte, uden du behøver opretter et objekt af en klasse og kalde de funktioner de har til rådighed (www.php.net).

- C# har kun metoder, da man kan ikke kalde dem direkte uden at oprette et objekt udefra en klasse der indholder de metoder :)
Avatar billede kalp Novice
28. marts 2007 - 10:41 #4
C# har kun metoder, da man kan ikke kalde dem direkte uden at oprette et objekt udefra en klasse der indholder de metoder :)

Det er forkert.. du kan lave statiske metoder... men metoder skal skrives i en klasse.
Avatar billede kalp Novice
28. marts 2007 - 10:48 #5
I mine øjne er funktioner og metoder det samme.. I et objekt orienteret programmeringssprog kaldes det metoder og i scriptingsprog og funktionsprogrammering ja der kalder med det funktioner.

Formålet med begge er det samme... gruppere noget kode, som skal genbruges istedet for copy & paste den samme funktionalitet flere gange.
Avatar billede roenving Novice
28. marts 2007 - 11:29 #6
Man kan da godt kalde funktioner for metoder på statiske objekter, for i f.eks. php, vbscript og javascript kan hele scripting-universet opfattes som et globalt statisk objekt, men det er lidt abstrakt, så ja, forskellen på metoder og funktioner er, at en metode sidder på et objekt, det gør en funktion ikke (så en metode er altså en funktion på et objekt !-)
Avatar billede kalp Novice
28. marts 2007 - 11:39 #7
roenving >> De 2 første linjer i

Kommentar: kalp
28/03-2007 10:41:09

skulle være i " " da ikke er mine ord:P
jeg kommenterede dem nemlig også da jeg er uenig i den betragtning som dig.

- mere hvis din kommentar delvist var rettet imod det indlæg:P
Avatar billede jakoba Nybegynder
28. marts 2007 - 19:47 #8
Reelt set er funktioner og metoder det samme.

Ofte prøver man at adskille de to ved at lave reler for hvordan de skal bruges. Typisk bliver det så at funktionerne ikke ma have nogen side effekter,

eg
var fire = sum( 2, 2 );  // funktion. eneste effekt den har er den returnerede værdi

udskriv_MinTabel();      // printeren begynder at bamle og gud ved hvilke globale
                        // variable der bliver ændret inde i den procedure/metode/subroutine

men det er altså altsammen subroutiner. I pascal prøve Wirth at gøre opdelingen imellem procedurer og funktioner til lov ved at give dem hvert sit navn idet de blew erklæret. Java erkender at din programmeringsdisciplin er dit problem og kalder begge dele for metoder.

mvh JakobA
Avatar billede jkhaledsoueidan Nybegynder
28. marts 2007 - 22:10 #9
John Joyce

The answer does depend on the language in question!
The difference is small and (arguably) unimportant in Ruby. In C++ or
Objective-C the difference and distinction is more clear and more
important.

The main difference is that a method is "part" of an object. It must
understand (respond to) or "have" the method in its definition. (or
inherit the method from an ancestor class)

A function in the strictest sense is a bit of code that is defined
and named and can be called and run by that name. It may take
arguments (parameters) and / or return a value of some sort.
Avatar billede jkhaledsoueidan Nybegynder
28. marts 2007 - 22:11 #10
- James Edward Gray II

The above is all true, but we do sometimes refer to calling methods
in a "function-style" in Ruby.  That's when you call a method without
an explicit receiver.  For example:

  puts "Hello world!"      # function-style
  file.puts "Hello world!"  # normal method call

Everything is still a method, this is just a name we use for the call
style.

I only bring it up because it is sometimes referred to in the
documentation for things like private scope and module_function.
Avatar billede jkhaledsoueidan Nybegynder
28. marts 2007 - 22:11 #11
- Alex Young

I think of them like this:

- A method is a message to which an object responds.
- A function is a mapping from a set of input arguments to an output
value (possibly with side-effects).

By this definition, it is possible for an (object,message) pair to be
viewed as a function.  In a sense, your point 1 above is closest to the
truth in Ruby - it's not possible to define a function that's not
implemented as a method on an object.
Avatar billede jkhaledsoueidan Nybegynder
28. marts 2007 - 22:12 #12
- SonOfLilit

Methods are associated with a receiver object.

Functions are not.

The only things you can call functions in Ruby are lambdas, blocks,
... Even then it's not clear whether they are methods or functions.

Everything else is methods.


AFAIK.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester