Якая розніца паміж метадам і функцыяй?

Ці можа хто-небудзь даць простае тлумачэнне метадаў і функцый у кантэксце ООП?

1522
01 окт. зададзены willc2 01 каст. 2008-10-01 02:45 '08 2:45 2008-10-01 02:45
@ 35 адказаў
  • 1
  • 2

функцыя - гэта фрагмент кода, які выклікаецца па імені. Гэта можа быць перададзена дадзеных для працы (гэта значыць параметраў) і можа пры неабходнасці вяртаць дадзеныя (вяртаецца значэнне). Усе дадзеныя, перададзеныя функцыі, відавочна перадаюцца.

A метад - гэта фрагмент кода, які выклікаецца імем, звязаным з аб'ектам. У большасці выпадкаў ён ідэнтычны функцыі, за выключэннем двух ключавых адрозненняў:

  • Метад няяўна перадае аб'ект, на які ён быў выкліканы.
  • Метад здольны працаваць з дадзенымі, якія змяшчаюцца ў класе (памятаючы, што аб'ект з'яўляецца асобнікам класа - клас з'яўляецца вызначэннем, аб'ект з'яўляецца асобнікам гэтых дадзеных).

(гэта спрошчанае тлумачэнне, ігнаруючы праблемы scope і г.д.)

1587
01 окт. адказ дадзены Andrew Edgecombe 01 каст. 2008-10-01 03:00 '08 у 03:00 2008-10-01 03:00

Метад знаходзіцца на аб'екце.
Функцыя не залежыць ад аб'екта.

Для Java існуюць толькі метады.
Для C існуюць толькі функцыі.

border=0

Для З ++ гэта будзе залежаць ад таго, знаходзіцеся вы ў класе.

892
01 окт. адказ дадзены Aaron 01 каст. 2008-10-01 02:51 '08 у 02:51 2008-10-01 02:51

'method' - гэта аб'ектна-арыентаванае слова для 'function'. Гэта амаль усё, што ёсць для яго (г.зн. Ніякай рэальнай розніцы).

На жаль, я думаю, што многія адказы тут увекавечваюць або прасоўваюць ідэю аб тым, што існуе нейкая складаная, значная розніца.

Сапраўды - для яго не так шмат, проста розныя словы для аднаго і таго ж.

[Апошняе дадатак]


Фактычна, паколькі Браян Ніл ўказаў у каментары да гэтага пытання , стандарт З ++ ніколі выкарыстоўвае тэрмін "метад" пры спасылцы на функцыі-члены. Некаторыя людзі могуць лічыць гэта прыкметай таго, што З ++ не з'яўляецца аб'ектна-арыентаваным мовай; аднак я аддаю перавагу лічыць гэта прыкметай таго, што даволі разумная група людзей не думала, што існуе асаблівая прычына выкарыстоўваць іншы тэрмін.

181
01 окт. адказ дадзены Michael Burr 01 каст. 2008-10-01 02:48 '08 у 02:48 2008-10-01 02:48

Увогуле: метады - гэта функцыі, якія належаць класу, функцыі могуць быць у любой іншай вобласці кода, таму вы можаце паказаць, што ўсе метады з'яўляюцца функцыямі, але не ўсе функцыі з'яўляюцца метадамі:

Возьмем наступны прыклад python:

 class Door: def open(self): print 'hello stranger' def knock_door: a_door = Door() Door.open(a_door) knock_door() 

Прыведзены прыклад паказвае вам клас пад назвай "Дзверы", які мае метад або дзеянне пад назвай "open", ён называецца метадам, таму што ён быў абвешчаны ўнутры класа. Існуе яшчэ адна частка кода з "def" крыху ніжэйшая, якая вызначае функцыю, гэта функцыя, таму што яна не абвешчаная ўнутры класа, гэтая функцыя выклікае метад, які мы вызначылі ўнутры нашага класа, як вы можаце бачыць, і, нарэшце, функцыя само па сабе.

Як вы можаце бачыць, вы можаце выклікаць функцыю дзе заўгодна, але калі вы хочаце выклікаць метад, вам трэба перадаць новы аб'ект таго ж тыпу, што і клас, абвешчаны метадам (клас .method (object)), ці вы павінны выклікаць метад ўнутры аб'екта (object.Method ()), па меншай меры, на python.

Падумайце аб метадах, якія могуць выконваць толькі адна сутнасць, таму, калі ў вас ёсць клас Dog, мае сэнс мець функцыю кары толькі ўнутры гэтага класа, і гэта будзе метад, калі ў вас таксама ёсць клас Person, які мог бы мае сэнс напісаць функцыю "feed", якая не належыць ні да якога класа, паколькі могуць быць перададзены як людзі, так і сабакі, і вы можаце назваць гэтую функцыю, паколькі яна не адносіцца да якога-небудзь класу у прыватнасці.

83
01 окт. адказ дадзены Gustavo Rubio 01 каст. 2008-10-01 03:33 '08 у 03:33 2008-10-01 03:33

Вельмі агульнае вызначэнне асноўнага адрозненні паміж Функцыя і Метад:

Функцыі вызначаюцца па-за класаў, а метады вызначаны ўнутры і ў частцы класаў.

37
29 окт. адказ дадзены Jorgesys 29 каст. 2014-10-29 02:08 '14 у 02:08 2014/10/29 02:08

Просты спосаб запомніць:

  • F unctionF ree (Свабодныя азначае не прыналежнасць да аб'екта або класу)
  • M ethodM ember (член аб'екта або класа)
29
08 окт. адказ дадзены Duc Filan 08 каст. 2017-10-08 03:07 '17 у 03:07 2017/10/08 03:07

Калі вам хочацца чытаць тут, гэта "Маё ўвядзенне ў метады OO"

Ідэя аб'ектна-арыентаванай парадыгмы заключаецца ў "пагрозу" праграмнага забеспячэння, які складаецца з ... добра "аб'ектаў". Аб'екты ў рэальным свеце маюць ўласцівасці, напрыклад, калі ў вас ёсць Супрацоўнік, у супрацоўніка ёсць імя, ідэнтыфікатар супрацоўніка, пасада, ён належыць аддзелу і г.д. І г.д.

Аб'ект таксама ведае, як спраўляцца з яго атрыбутамі і выконваць некаторыя аперацыі над імі. Скажам, калі мы хочам ведаць, што робіць работнік прама цяпер, мы будзем патрабаваць яго.

 employe whatAreYouDoing. 

Гэта "whatAreYouDoing" - гэта "паведамленне", адпраўленае аб'екту. Аб'ект ведае, як адказаць на гэтыя пытанні, гаворыцца, што ў яго ёсць "метад" для вырашэньня пытаньня.

Такім чынам, спосаб, якім аб'екты павінны выстаўляць свае паводзіны, называецца метадамі. Такім чынам, метады артэфакта павінны "нешта" рабіць.

Іншыя магчымыя метады:

 employee whatIsYourName employee whatIsYourDepartmentsName 

і інш.

Функцыі з другога боку - гэта спосабы, якімі мова праграмавання павінен вылічаць некаторыя дадзеныя, напрыклад, у вас можа быць функцыя addValues ​​(8, 8), якая вяртае 16

 // pseudo-code function addValues( int x, int y ) return x + y // call it result = addValues( 8,8 ) print result // output is 16... 

Паколькі першыя папулярныя мовы праграмавання (такія як fortran, c, pascal) не ахоплівалі парадыгму OO, яны толькі спасылаюцца на гэтыя "артэфакты" гэтых аб'ектаў.

напрыклад, папярэдняя функцыя ў C:

 int addValues( int x, int y ) { return x + y; } 

Нельга сказаць, што ў аб'екта ёсць "функцыя" для выканання якога-небудзь дзеянні, таму што функцыі больш звязаны з матэматычным матэрыялам, а ў Работніка мала матэматыкі на ім, але вы можаце мець метады, якія робяць дакладна такія ж як функцыі, напрыклад, у Java, гэта будзе эквівалентная функцыя addValues.

 public static int addValues( int x, int y ) { return x + y; } 

Выглядае знаёма? Гэта звязана з тым, што Java мае свае карані на З ++ і С ++ на C.

У канцы гэта ўсяго толькі канцэпцыя, у рэалізацыі яны могуць выглядаць аднолькава, але ў дакументацыі OO яны называюцца метадам.

Вось прыклад папярэдняга аб'екта Employee ў Java.

 public class Employee { Department department; String name; public String whatsYourName(){ return this.name; } public String whatsYourDeparmentsName(){ return this.department.name(); } public String whatAreYouDoing(){ return "nothing"; } // Ignore the following, only set here for completness public Employee( String name ) { this.name = name; } } // Usage sample. Employee employee = new Employee( "John" ); // Creates an employee called John // If I want to display what is this employee doing I could use its methods. // to know it. String name = employee.whatIsYourName(): String doingWhat = employee.whatAreYouDoint(); // Print the info to the console. System.out.printf("Employee %s is doing: %s", name, doingWhat ); Output: Employee John is doing nothing. employee doing I could use its methods public class Employee { Department department; String name; public String whatsYourName(){ return this.name; } public String whatsYourDeparmentsName(){ return this.department.name(); } public String whatAreYouDoing(){ return "nothing"; } // Ignore the following, only set here for completness public Employee( String name ) { this.name = name; } } // Usage sample. Employee employee = new Employee( "John" ); // Creates an employee called John // If I want to display what is this employee doing I could use its methods. // to know it. String name = employee.whatIsYourName(): String doingWhat = employee.whatAreYouDoint(); // Print the info to the console. System.out.printf("Employee %s is doing: %s", name, doingWhat ); Output: Employee John is doing nothing. 

Розніца тады знаходзіцца ў "дамене", дзе яна ўжываецца.

AppleScript мае ўяўленне аб "натуральнай мове" matphor, які ў нейкі момант меў OO. Напрыклад, Smalltalk. Спадзяюся, вам будзе лягчэй зразумець метады ў аб'ектах пасля чытання гэтага.

ЗАЎВАГА. Код не павінен кампілявацца, проста каб служыць у якасці прыкладу. Не саромейцеся мадыфікаваць паведамленне і дадаць прыклад Python.

26
01 окт. адказ дадзены OscarRyz 01 каст. 2008-10-01 03:21 '08 у 03:21 2008-10-01 03:21

У свеце ГА гэтыя два звычайна выкарыстоўваюцца для абазначэння аднаго і таго ж.

З чыстай пункту гледжання Math і CS функцыя заўсёды вяртае той жа вынік пры выкліку з тымі ж аргументамі (f (x, y) = (x + y)). Метад, з другога боку, звычайна звязаны з асобнікам класа. Зноў жа, большасць сучасных моў OO больш не выкарыстоўваюць тэрмін "функцыя" па большай частцы. Многія статычныя метады могуць быць падобнымі на функцыі, паколькі яны звычайна не маюць стану (не заўсёды дакладна).

16
01 окт. адказ дадзены TheSoftwareJedi 01 каст. 2008-10-01 02:56 '08 у 02:56 2008-10-01 02:56

Скажам, функцыя з'яўляецца блокам кода (звычайна з яго ўласнай вобласцю, а часам і з яе уласным закрыццём), якая можа прымаць некаторыя аргументы і таксама можа вяртаць вынік.

Метад - гэта функцыя, якая належыць аб'екту (у некаторых аб'ектна-арыентаваных сістэмах больш правільна сказаць, што ён належыць класу). Будучы "належаць" аб'ектам / класам, вы спасылаецеся на метад праз аб'ект / клас; напрыклад, на Java, калі вы жадаеце выклікаць метад "open ()", які належыць "дзверы" аб'екта, вам трэба напісаць "door.open ()".

Звычайна метады таксама атрымліваюць некаторыя дадатковыя атрыбуты, якія апісваюць іх паводзіны ў аб'екце / класе, напрыклад: бачнасць (звязаная з аб'ектна-арыентаванай канцэпцыяй інкапсуляцыі), якая вызначае, з якіх аб'ектаў (або класаў) метад можа быць выкліканы.

У многіх аб'ектна-арыентаваных мовах ўсё "функцыі" ставяцца да некаторага аб'екту (ці класу), таму на гэтых мовах няма функцый, якія не з'яўляюцца метадамі.

14
01 окт. адказ дадзены Mike Tunnicliffe 01 каст. 2008-10-01 02:55 '08 у 02:55 2008-10-01 02:55

Функцыя або метад - гэта найменны які выклікаецца фрагмент кода, які выконвае некаторыя аперацыі і неабавязкова вяртае значэнне.

У мове C выкарыстоўваецца функцыя term. Java і З # людзі скажуць гэта метадам (і функцыя ў гэтым выпадку вызначана ўнутры класа / аб'екта).

A Праграміст З ++ можа называць яго функцыяй або часам метадам (у залежнасці ад таго, ці запісваюць яны працэдурны код З ++ або робяць аб'ектна-арыентаваны шлях З ++, таксама хутчэй за ўсё праграміст на C / З ++ называць яго функцыяй, таму што тэрмін "метад" радзей выкарыстоўваецца ў літаратуры C / З ++).

Вы карыстаецеся функцыю, проста называючы гэта імя, як,

 result = mySum(num1, num2); 


Вы б выклікалі метад, спачатку спасылаючыся на яго аб'ект, напрыклад,

 result = MyCalc.mySum(num1,num2); 
11
06 февр. адказ дадзены Abdullah Leghari 06 февр. 2014-02-06 08:03 '14 у 08:03 2014/02/06 08:03

Гістарычна склалася, што можа быць тонкая розніца, калі "метад" з'яўляецца тым, што не вяртае значэнне, і "функцыяй", якая робіць. Кожная мова мае свой уласны лексікон тэрмінаў з адмысловым значэннем.

У "C" слова "функцыя" азначае праграмную працэдуру.

У Java тэрмін "функцыя не мае асаблівага значэння. У той час як" метад "азначае адну з падпраграм, якія ўтвараюць рэалізацыю класа.

У З #, які будзе выглядаць наступным чынам:

 public void DoSomething() {} // method public int DoSomethingAndReturnMeANumber(){} // function 

Але на самой справе, я паўтараю, што ў 2 паняццях няма ніякай розніцы. Калі вы выкарыстоўваеце тэрмін "функцыя" у неафіцыйных дыскусіях аб Java, людзі мяркуюць, што вы маеце на ўвазе "метад" і працягваеце. Не выкарыстоўвайце яго ў адпаведных дакументах або прэзентацыях аб Java, інакш вы будзеце выглядаць недарэчна.

11
12 янв. адказ дадзены Jaimin Patel 12 студз. 2016-01-12 05:13 '16 у 05:13 2016/01/12 05:13

Функцыя - матэматычнае паняцце. напрыклад:

 f(x,y) = sin(x) + cos(y) 

кажа, што функцыя f () верне sin першага параметра, дададзенага да косінус другую опцыю. Гэта проста матэматыка. Бо sin () і cos () таксама з'яўляюцца функцыямі. Функцыя мае іншае ўласцівасць: усе выклікі функцыі з тымі ж параметрамі павінны вяртаць той жа вынік.

Метад, з другога боку, з'яўляецца функцыяй, звязанай з аб'ектам на аб'ектна-арыентаваным мове. Ён мае адзін няяўнай параметр: аб'ект, на які ўздзейнічае (і яго стан).

Такім чынам, калі ў вас ёсць аб'ект Z з метадам g (x), вы можаце ўбачыць наступнае:

 Zg(x) = sin(x) + cos(Zy) 

У гэтым выпадку перадаецца параметр x, той жа, што і ў прыкладзе функцыі раней. Аднак параметр cos () - гэта значэнне, якое жыве ўнутры аб'екта Z. Z, а дадзеныя, якія знаходзяцца ўнутры яго (Zy), з'яўляюцца няяўныя параметрамі для метаду Z g ().

11
01 окт. адказ дадзены Bradley Mazurek 01 каст. 2008-10-01 03:54 '08 у 03:54 2008-10-01 03:54

Метады - гэта функцыі класаў. У звычайным жаргоне людзі абменьваюцца метадам і функцыянуюць паўсюль. У асноўным вы можаце думаць пра іх як пра тое ж (не ўпэўнены, што глабальныя функцыі называюцца метадамі).

http://en.wikipedia.org/wiki/Method_(computer_science)

10
01 окт. адказ дадзены Statement 01 каст. 2008-10-01 02:52 '08 у 2:52 2008-10-01 02:52

У мовах OO, такіх як Object Pascal ці З ++, "метад" - гэта функцыя, звязаная з аб'ектам. Так, напрыклад, аб'ект "Сабака" можа мець функцыю "кары", і гэта будзе лічыцца "метадам". Наадварот, функцыя "StrLen" варта адна (яна прадастаўляе даўжыню радка, прадстаўленай у якасці аргументу). Гэта, такім чынам, проста "функцыя". Javascript тэхнічна аб'ектна арыентаваны, але мае мноства абмежаванняў у параўнанні з такім чынам паўнапраўным мовай, такім як З ++, З # або Pascal. Тым не менш, гэта адрозненне ўсё яшчэ павінна захоўвацца.

Некалькі дадатковых фактаў: ​​З # цалкам аб'ектна арыентаваны, таму вы не можаце ствараць аўтаномныя "функцыі". У З # кожная функцыя прывязаная да аб'екта і, такім чынам, тэхнічна з'яўляецца "метадам". Кикер складаецца ў тым, што нешматлікія людзі ў З # называюць іх "метадамі" - яны проста выкарыстоўваюць тэрмін "функцыі", таму што не існуе ніякага рэальнага адрозненні.

Нарэшце - так, каб усе гуру Паскаля ня скакалі на мяне тут, - Паскаль таксама адрознівае "функцыі" (якія вяртаюць значэнне) і "працэдуры", якіх няма. З # ня робіць гэта адрозненне відавочна, хоць вы, вядома, можаце выбраць значэнне ці не.

7
01 окт. адказ дадзены Mark Brittingham 01 каст. 2008-10-01 02:59 '08 у 2:59 2008-10-01 02:59

Метады дзеяння класа на асобнік класа, званага аб'ектам.

 class Example { public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable". public void UpdateData() // .. and manipulates it (This is a method by the way) { data = data + 1; } public void PrintData() // This is also a method { Console.WriteLine(data); } } class Program { public static void Main() { Example exampleObject1 = new Example(); Example exampleObject2 = new Example(); exampleObject1.UpdateData(); exampleObject1.UpdateData(); exampleObject2.UpdateData(); exampleObject1.PrintData(); // Prints "2" exampleObject2.PrintData(); // Prints "1" } } 
7
01 окт. адказ дадзены Statement 01 каст. 2008-10-01 02:57 '08 у 02:57 2008-10-01 02:57

Паколькі вы згадалі Python, наступная ілюстрацыя можа быць карыснай ілюстрацыяй ўзаемасувязі паміж метадамі і аб'ектамі на большасці сучасных аб'ектна-арыентаваных моў. Сцісла тое, што яны называюць "метадам", - гэта проста функцыя, якая атрымлівае дадатковы аргумент (як паказвалі іншыя адказы), але Python робіць гэта больш відавочным, чым большасць моў.

 # perfectly normal function def hello(greetee): print "Hello", greetee # generalise a bit (still a function though) def greet(greeting, greetee): print greeting, greetee # hide the greeting behind a layer of abstraction (still a function!) def greet_with_greeter(greeter, greetee): print greeter.greeting, greetee # very simple class we can pass to greet_with_greeter class Greeter(object): def __init__(self, greeting): self.greeting = greeting # while we're at it, here a method that uses self.greeting... def greet(self, greetee): print self.greeting, greetee # save an object of class Greeter for later hello_greeter = Greeter("Hello") # now all of the following print the same message hello("World") greet("Hello", "World") greet_with_greeter(hello_greeter, "World") hello_greeter.greet("World") message # perfectly normal function def hello(greetee): print "Hello", greetee # generalise a bit (still a function though) def greet(greeting, greetee): print greeting, greetee # hide the greeting behind a layer of abstraction (still a function!) def greet_with_greeter(greeter, greetee): print greeter.greeting, greetee # very simple class we can pass to greet_with_greeter class Greeter(object): def __init__(self, greeting): self.greeting = greeting # while we're at it, here a method that uses self.greeting... def greet(self, greetee): print self.greeting, greetee # save an object of class Greeter for later hello_greeter = Greeter("Hello") # now all of the following print the same message hello("World") greet("Hello", "World") greet_with_greeter(hello_greeter, "World") hello_greeter.greet("World") 

Цяпер параўнайце функцыю greet_with_greeter і метад greet : адзіным адрозненнем з'яўляецца імя першага параметру (у функцыі, якую я назваў "greeter", у метадзе, які я назваў "self"). Таму я магу выкарыстоўваць метад greet сапраўды гэтак жа, як я выкарыстоўваю функцыю greet_with_greeter (выкарыстоўваючы сінтаксіс "кропка", каб атрымаць на ім, паколькі я вызначыў яго ўнутры класа):

 Greeter.greet(hello_greeter, "World") 

Такім чынам, я эфектыўна ператварыў метад у функцыю. Ці магу я ператварыць функцыю ў метад? Ну, паколькі Python дазваляе вам мець зносіны з класамі пасля таго, як яны вызначаны, паспрабуйце:

 Greeter.greet2 = greet_with_greeter hello_greeter.greet2("World") 

Так, функцыя greet_with_greeter цяпер таксама вядомая як метад greet2 . Гэта паказвае адзіную рэальную розніцу паміж метадам і функцыяй: калі вы выклікаеце метад "on" аб'ект, выклікаючы object.method(args) , мова магічна ператварае яго ў method(object, args) .

(Пурыстаў OO могуць сцвярджаць, што метад адрозніваецца ад функцыі, і калі вы трапляеце ў прасунуты Python або Ruby - або Smalltalk! - вы пачнеце бачыць іх кропку. Таксама некаторыя мовы прадастаўляюць метады спецыяльнага доступу да біт але асноўная канцэптуальная розніца па-ранейшаму застаецца схаваным дадатковым параметрам.)

7
01 окт. адказ дадзены Sam Stokes 01 каст. 2008-10-01 04:20 '08 у 4:20 2008-10-01 04:20

Функцыя ўяўляе сабой набор лагічных элементаў, якія могуць выкарыстоўвацца для кіравання дадзенымі.

У той час як метад - гэта функцыя, якая выкарыстоўваецца для кіравання дадзенымі аб'екта, да якога ён належыць. Тэхнічна, калі ў вас ёсць функцыя, якая не цалкам звязана з вашым класам, але была абвешчаная ў класе, гэта не метад; Ён назваў дрэнны дызайн.

7
03 дек. адказ дадзены gian ebao 03 снеж. 2008-12-03 12:47 '08 у 12:47 2008-12-03 00:47

Функцыя - гэта набор логікі, які можа выкарыстоўвацца для кіравання дадзенымі. У той час як метад - гэта функцыя, якая выкарыстоўваецца для кіравання дадзенымі аб'екта, да якога ён належыць. Тэхнічна, калі ў вас ёсць функцыя, якая не цалкам звязана з вашым класам, але была абвешчаная ў класе, гэта не метад; Ён назваў дрэнны дызайн.

7
25 февр. адказ дадзены Debaprasad 25 февр. 2014-02-25 07:40 '14 у 7:40 2014/02/25 07:40

для мяне: функцыя метаду і функцыя супадаюць, калі я пагаджуся з тым, што:

  • функцыя можа вярнуць значэнне
  • могуць чакаць параметры

Як і любы фрагмент кода, у вас могуць быць аб'екты, якія вы ўстаўляеце, і ў вас можа быць аб'ект, які з'яўляецца ў выніку. Падчас выканання яны могуць змяніць стан аб'екта, але гэта не зменіць іх базавую функцыянаванне для мяне.

Можа існаваць вызначэнне, адрозніваюць пры выкліку функцый аб'ектаў або іншых кодаў. Але хіба гэта не што-то для славесных адрозненняў і чаму людзі мяняюць іх? Прыкладам прыкладу вылічэнні я б быў асцярожны. таму што я наймаю супрацоўнікаў для выканання сваіх разлікаў:

 new Employer().calculateSum( 8, 8 ); 

Такім чынам, я магу спадзявацца на тое, што працадаўца нясе адказнасць за вылічэнні. Калі ён хоча больш грошай, я вызвалю яго і дазволю функцыі калекцыянера ўтылізацыі непатрэбных супрацоўнікаў зрабіць усё астатняе і атрымаць новага супрацоўніка.

Нават сцвярджаючы, што метад з'яўляецца функцыяй аб'ектаў, а функцыя не звязаная, вылічэнне не дапаможа мне. Сам дэскрыптар функцыі і, у ідэале, дакументацыя па функцый падкажа мне, што яму трэба і што ён можа вярнуць. Астатняе, як і маніпуляванне якім-небудзь станам аб'екта, для мяне не вельмі празрыста. Я чакаю, што як функцыі, так і метады будуць дастаўляць і маніпуляваць тым, што яны заяўляюць, не ведаючы падрабязна, як яны гэта робяць. Нават чыстая вылічальная функцыя можа змяніць стан кансолі або дадаць у файл часопіса.

6
13 апр. адказ дадзены Dirk Schumacher 13 крас. 2012-04-13 12:50 '12 у 12:50 2012-04-13 00:50

З майго разумення метад - гэта любая аперацыя, якая можа выконвацца ў класе. Гэта агульны тэрмін, які выкарыстоўваецца ў праграмаванні.

На многіх мовах метады прадстаўлены функцыямі і падпраграмамі. Асноўнае адрозненне, якое большасць моў выкарыстоўвае для іх, складаецца ў тым, што функцыі могуць вяртаць значэнне назад выклікаламу, а падпраграма можа не працаваць. Однако многие современные языки имеют только функции, но они необязательно не возвращают никакого значения.