Перейти к содержанию
    

Растолкуйте по шаблону С++

Да кмк здесь слово метод более употребительно чем там, но и там оно тоже используется.

Я вижу, вам тоже оно нравится (более коротко и/или привыкли).

 

Из-за чего так? Кмк потому что методы вошли в общепринятую терминологию позже плюсов.

"Метод" (как и ООП) появился куда раньше плюсов. Обратите внимание, он говорит про Java и взял в кавычки, подчёркивая, что в плюсах далеко не все функции-члены являются методами.

 

К тому же вошли в двух разных школах. В ораклово-явовской метод=вирутальная функция член, в майкрософто-решеточной (и дельфевской из которой решетка переняла многое) метод просто функция в классе. Поэтому прошу не утверждать что есть единая верная интерпретация.

Я ничего не утверждаю. Ну, разве что то, что термина "метод" в С++ нет вообще. Есть функция, функция-член, статическая функция-член, виртуальная функция-член. На последнюю можно отмапить термин "метод", переходя на ОО терминологию. Но тащить её дальше и обобщать - это как-то слишком.

 

Вообще в оригинале абстрактного ОО (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).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Метод" (как и ООП) появился куда раньше плюсов. Обратите внимание, он говорит про Java и взял в кавычки, подчёркивая, что в плюсах далеко не все функции-члены являются методами.

"Метод" как способ диспатча по строке с именем - да, но не то что вы сейчас называете методом. Почему вы из кавычек умудрились вытянуть этот скрытый смысл? Для меня кавычки это цитата, не более того. Которые в данном месте применили что бы подчеркнуть что это не официальный термин плюсов, а джавовский.

На последнюю можно отмапить термин "метод", переходя на ОО терминологию.

Ну раз её можно "мапить", то почему бы не отмапить в шарпнутую плоскость?

Вот если вы пройдёте по вхождениям словам "method", то убедитесь, что Страуструп очень аккуратно использует терминологию, употребляя этот термин именно как синоним виртуальной функции-члена, например (стр. 20):

Собственно я и не спорил что Страуструп использует слово метод и в том и в другом смысле. Но из пропузалов в стандарт слово метод вымарывается нещадно и в значении витруальной функции члена тоже. Последнее несложно увидеть в репозиториях пропоузалов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо не стоит буквально переводить "method" как "метод". В русском языке слово "метод" в контексте класса/объекта устаканилось для обозначения статической/виртуальной/обычной функции или процедуры, вложенной в контекст класса. В англоязычных источниках, используется member function, который, как уже заметили, несколько не благозвучен в буквальном переводе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо не стоит буквально переводить "method" как "метод". В русском языке слово "метод" в контексте класса/объекта устаканилось для обозначения статической/виртуальной/обычной функции или процедуры, вложенной в контекст класса.

Да, именно в русскоязычном сегменте. И если даже, как вы говорите, обычные функции уже называют методами, то мне тогда совсем не понятно, почему именно методами, а не, скажем, слонами - по близости смысла (а точнее, дальности) они где-то рядом. :biggrin:

 

В англоязычных источниках, используется member function

Полагаю, это потому, что они построже обращаются с терминологией.

 

который, как уже заметили, несколько не благозвучен в буквальном переводе.

Хе. Ну, тогда и для членов-данных нужно тем более придумать левый синоним - ведь с данными-то всё ещё хуже (если там хоть функция-ч..., то данные чаще всего называют просто ч...). :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

обычные функции уже называют методами, то мне тогда совсем не понятно, почему именно методами

 

Имееются в виду не статические или виртуальные:

 

class A
{
  void plain_method();
};

 

Ну, тогда и для членов-данных нужно тем более придумать левый синоним - ведь с данными-то всё ещё хуже

 

Так их вроде так и называют — "(статические) данные класса".

 

Вот со свойствами из ОО-Паскаля или С-шарпа вышла накладка, т.к. понятие "свойства класса" выходит за рамки внутриклассовых синтаксических конструкций. В начале 90-х, некоторые придерживались кальки с английского "проперти", что в беглой речи тоже превращало property editor в не очень благозвучное слово.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так их вроде так и называют — "(статические) данные класса".

Что-то вы совсем не о том. Члены-данные класса (class data member) и статические члены-данные класса - это две ба-альшие разницы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то вы совсем не о том. Члены-данные класса (class data member) и статические члены-данные класса - это две ба-альшие разницы.

 

Просто сокращенно написал, понятно, что два разных вида:

 

- данные класса;

- статические данные класса.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вставлю свои "пять копеек"

Я использую только два термина для класса:

функции-члены (любые) - "методы",

данные (тоже любые) - "поля": https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%...%81%D1%81%D0%B0

Не помню, где это это вычитал, но зацепила простота и краткость этих двух слов. Привык :)

 

Есть еще третий термин "свойство", но не использую его, поскольку, по-моему, оно это слишком уже не очевидное - где-то им называют поля класса, а где - сеттеры/геттеры. Можно запутаться.

 

Не вижу смысла в тексте указывать вид "метода" или "поля" - статические/нестатические/виртуальные/закрытые/защищенные ... - это, имхо, лишнее, и не имеет как такового смысла в рядовом общении.

Термин "функция" использую применительно только к си, равно как и "процедура" - к паскалю (дельфи).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё был случай в истории, когда в строевой подготовке использовали "термины": "сено" и "солома". Для простоты. Многим очень нравилась простота и краткость этих двух слов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё был случай в истории, когда в строевой подготовке использовали "термины": "сено" и "солома". Для простоты. Многим очень нравилась простота и краткость этих двух слов.

Ну и по "традиции жанра" наверняка нашелся тот, который был против этой "простоты". Разумеется, ему дали "три наряда вне очереди"? ... :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...