|
Растолкуйте по шаблону С++ |
|
|
|
Jul 27 2018, 10:05
|
Adept
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343
|
Цитата(Kabdim @ Jul 27 2018, 16:15) Да кмк здесь слово метод более употребительно чем там, но и там оно тоже используется. Я вижу, вам тоже оно нравится (более коротко и/или привыкли). Цитата(Kabdim @ Jul 27 2018, 16:15) Из-за чего так? Кмк потому что методы вошли в общепринятую терминологию позже плюсов. "Метод" (как и ООП) появился куда раньше плюсов. Обратите внимание, он говорит про Java и взял в кавычки, подчёркивая, что в плюсах далеко не все функции-члены являются методами. Цитата(Kabdim @ Jul 27 2018, 16:15) К тому же вошли в двух разных школах. В ораклово-явовской метод=вирутальная функция член, в майкрософто-решеточной (и дельфевской из которой решетка переняла многое) метод просто функция в классе. Поэтому прошу не утверждать что есть единая верная интерпретация. Я ничего не утверждаю. Ну, разве что то, что термина "метод" в С++ нет вообще. Есть функция, функция-член, статическая функция-член, виртуальная функция-член. На последнюю можно отмапить термин "метод", переходя на ОО терминологию. Но тащить её дальше и обобщать - это как-то слишком. Цитата(Kabdim @ Jul 27 2018, 16:15) Вообще в оригинале абстрактного ОО (Smalltalk) метод диспетчеризуется по имени, о чем (и вообще о философии ОО применительно к плюсам) Страуструп рассуждает в What is ‘‘Object-Oriented Programming’’ - рекомендую прочитать. Вот если вы пройдёте по вхождениям словам "method", то убедитесь, что Страуструп очень аккуратно использует терминологию, употребляя этот термин именно как синоним виртуальной функции-члена, например (стр. 20): Цитата This idea captures only part of the expressive power of inheritance, but it is strongly encouraged by languages where every member function is virtual (or a method).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jul 27 2018, 10:14
|
Знающий
Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842
|
Цитата(dxp @ Jul 27 2018, 13:05) "Метод" (как и ООП) появился куда раньше плюсов. Обратите внимание, он говорит про Java и взял в кавычки, подчёркивая, что в плюсах далеко не все функции-члены являются методами. "Метод" как способ диспатча по строке с именем - да, но не то что вы сейчас называете методом. Почему вы из кавычек умудрились вытянуть этот скрытый смысл? Для меня кавычки это цитата, не более того. Которые в данном месте применили что бы подчеркнуть что это не официальный термин плюсов, а джавовский. Цитата(dxp @ Jul 27 2018, 13:05) На последнюю можно отмапить термин "метод", переходя на ОО терминологию. Ну раз её можно "мапить", то почему бы не отмапить в шарпнутую плоскость? Цитата(dxp @ Jul 27 2018, 13:05) Вот если вы пройдёте по вхождениям словам "method", то убедитесь, что Страуструп очень аккуратно использует терминологию, употребляя этот термин именно как синоним виртуальной функции-члена, например (стр. 20): Собственно я и не спорил что Страуструп использует слово метод и в том и в другом смысле. Но из пропузалов в стандарт слово метод вымарывается нещадно и в значении витруальной функции члена тоже. Последнее несложно увидеть в репозиториях пропоузалов.
|
|
|
|
|
Jul 27 2018, 11:19
|
Adept
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343
|
Цитата(halfdoom @ Jul 27 2018, 17:59) Видимо не стоит буквально переводить "method" как "метод". В русском языке слово "метод" в контексте класса/объекта устаканилось для обозначения статической/виртуальной/обычной функции или процедуры, вложенной в контекст класса. Да, именно в русскоязычном сегменте. И если даже, как вы говорите, обычные функции уже называют методами, то мне тогда совсем не понятно, почему именно методами, а не, скажем, слонами - по близости смысла (а точнее, дальности) они где-то рядом. Цитата(halfdoom @ Jul 27 2018, 17:59) В англоязычных источниках, используется member function Полагаю, это потому, что они построже обращаются с терминологией. Цитата(halfdoom @ Jul 27 2018, 17:59) который, как уже заметили, несколько не благозвучен в буквальном переводе. Хе. Ну, тогда и для членов-данных нужно тем более придумать левый синоним - ведь с данными-то всё ещё хуже (если там хоть функция-ч..., то данные чаще всего называют просто ч...).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jul 27 2018, 12:00
|
Профессионал
Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072
|
Цитата(dxp @ Jul 27 2018, 14:19) обычные функции уже называют методами, то мне тогда совсем не понятно, почему именно методами Имееются в виду не статические или виртуальные: Код class A { void plain_method(); }; Цитата(dxp @ Jul 27 2018, 14:19) Ну, тогда и для членов-данных нужно тем более придумать левый синоним - ведь с данными-то всё ещё хуже Так их вроде так и называют — "(статические) данные класса". Вот со свойствами из ОО-Паскаля или С-шарпа вышла накладка, т.к. понятие "свойства класса" выходит за рамки внутриклассовых синтаксических конструкций. В начале 90-х, некоторые придерживались кальки с английского "проперти", что в беглой речи тоже превращало property editor в не очень благозвучное слово.
|
|
|
|
|
Aug 8 2018, 06:28
|
Профессионал
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831
|
Вставлю свои "пять копеек" Я использую только два термина для класса: функции-члены (любые) - " методы", данные (тоже любые) - " поля": https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%...%81%D1%81%D0%B0Не помню, где это это вычитал, но зацепила простота и краткость этих двух слов. Привык Есть еще третий термин "свойство", но не использую его, поскольку, по-моему, оно это слишком уже не очевидное - где-то им называют поля класса, а где - сеттеры/геттеры. Можно запутаться. Не вижу смысла в тексте указывать вид "метода" или "поля" - статические/нестатические/виртуальные/закрытые/защищенные ... - это, имхо, лишнее, и не имеет как такового смысла в рядовом общении. Термин "функция" использую применительно только к си, равно как и "процедура" - к паскалю (дельфи).
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|