Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2009, 09:56   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию Как лучше перегружать стандартные функции?

И нужно ли это вообще? В моем интерпретаторе подошел вопрос к использованию функций, расклад следующий: имеет некоторое количество встроенных функций (ну вроде как модуль System в Делфи) + программист может создавать свои (что естественно). Теперь я встал перед выбором: давать ли программисту право переопределять действия имеющихся стандартных функций или нет? И второй вопрос: если будет иметься такая возможность то как отобразить это в синтаксисе? То есть либо просто написать свою функцию с таким именем и числом параметров либо еще в конце указывать какой-либо признак, ну вроде:
Код:
функция бла_бла(параметры) - переопределяемая
Интересно мнение всех программистов, независимо от языка программирования.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.09.2009, 10:14   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Я считаю, что лучше позволить программисту давать функциям любые имена, замещая встроенные. Большая свобода действий - большая привлекательность.
В синтаксисе это по идее не должно проявляться, так как имена функций просто заместят стандартные, НО для следующего проекта они должны вернуться на место, ибо программист должен будет знать, что делает его функция в данный момент - стандартная она или его.
А еще наверное лучше будет в интерфейсе забить что-нибудь типа радиогроуп - там добавить кнопку адд - при нажатии дается возможность добавить свой вариант функи. А в гроупе программист будет выбирать - какой модуль применять для данного проекта.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.09.2009, 10:19   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Ну это понятно, ведь в следующем проекте не будет нового кода стандартных функций, в таком случае будут использоваться встроенный вариант.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.09.2009, 10:25   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Я бы наверное сделал бы вот так:
Изображения
Тип файла: jpg 1.JPG (18.1 Кб, 106 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 20.09.2009, 11:33   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

А почему не использовать стандартные и всем понятные решения - пространства имен или их вариант - указание модуля в Delphi. Причем, количество параметров может не совпадать.

Код:
procedure copy;
begin
end;

begin
   copy;                            // Вызов переопределенной функции
   system.copy(S, 1, 2);      // Вызов стандартной
alexBlack вне форума Ответить с цитированием
Старый 21.09.2009, 06:52   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Ну можно и так, есть ли еще какие варианты?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.09.2009, 08:12   #7
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

А почему не ООП Way ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 21.09.2009, 08:52   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
А почему не ООП Way ?
Я считаю, что ООП, конечно модно, но помимо решения многих задач, также подкидывает еще огромную кучу, в результате чего и возникли - шаблоны, RTTI (до этого оно конечно тоже нужно было, но не так чтобы очень ), множественное наследование, преобразование типов и пр. в том же духе. Поэтому и изобретаю велосипед на лыжах и с парусом .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 21.09.2009, 08:53   #9
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Может я ошибаюсь. а почему бы не пойти по пути С++.

Где функция перегружается и есть два варианта.

1. Перегруженная функция определяется типами и числом входных параметров, типа
- сложение вещественных чисел
- сложение целых
- сложение строк
и пр.

2. В зависимости от не явного контекста (глобальный модуль или локальный, доступность и пр.) определяется вызов функции.
При этом определения функций могут совпадать и однозначность определения будет уже дополняться контекстом (глобальный. внешний, локальный)
При этом
сложение (1, 2 ) / глобальная / = 4
сложение (1, 2 ) / локальная / = 2
будут давать разный результат в зависимости от возможности подключения модулей.

3. Для явного вызова можно использовать что-то типа.
Систем.Сложение
МойМодуль.Сложение

Кажется других вариантов уже не придумать. Ну если только ввести оператор определения:

Вызвать из (путь, модуль, функция по счету): Сложение (1.2).
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 21.09.2009, 08:55   #10
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Я считаю, что ООП, конечно модно, но помимо решения многих задач, также подкидывает еще огромную кучу, в результате чего и возникли - шаблоны, RTTI (до этого оно конечно тоже нужно было, но не так чтобы очень ), множественное наследование, преобразование типов и пр. в том же духе. Поэтому и изобретаю велосипед на лыжах и с парусом .
А для чего его изобретать? Или чтобы сделать самостоятельный язык, что-то в духе PHP?
и это пройдет...
grenles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не используя стандартные функции (за исключением abs), вычислить с точностью до eps>0: GHOST_DOG Помощь студентам 2 12.12.2008 05:58
VB перестал находить стандартные функции neugadal Microsoft Office Excel 1 06.11.2008 12:31
Как лучше организовать базу данных типо как в ICQ Руслантус БД в Delphi 3 09.08.2008 23:57
Макросы или стандартные функции askhattk Microsoft Office Excel 4 20.06.2008 11:17
Оптимезация программ... Как лучше? Altera Общие вопросы Delphi 9 27.02.2008 19:38