Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Embarcadero RAD Studio XE3

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Открыть новую тему     Написать ответ в эту тему

limarukraine

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всех приветствую
 
Когда я года 4 назад в 7-х дельфях занимался объектно-ориентированным программированием, то тогда там возможности реализации множественного наследования не было. Сейчас после длительного перерыва я вернулся к делфи (уже XE 2012 года). Что то изменилось с тех пор ? Возможность множественного наследования появилась или нет ?  
 
Сибо

Всего записей: 3 | Зарегистр. 13-10-2012 | Отправлено: 17:22 30-10-2012
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет и не будет. Или это уже не Дельфи будет.
 
Люди и так накосячить умудряются, а ты им еще ромбов на дорожку подкинуть хочешь...
 

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 17:27 30-10-2012
Lena44



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Возможность множественного наследования появилась или нет ?

 
Я читаю литературу по программированию С++. О множественном наследовании говорят, что это зло. В качестве удачного применения приводят библиотеку MFC, но тут же говорят, что это исключение. Может множественное наследование реально не нужно?
 

Всего записей: 282 | Зарегистр. 27-02-2007 | Отправлено: 18:55 30-10-2012
LG Team



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как пишут в википедии "В список языков, поддерживающих множественное наследование, входят: ... Delphi (благодаря Class Helpers)"  (:

Всего записей: 328 | Зарегистр. 04-12-2006 | Отправлено: 19:54 30-10-2012
HeMet

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LG Team
 
Цитируя официальную справку: «Helpers are a way to extend a class without using inheritance...», тем более, что присутствует ряд ограничений таких, как:
 - один хелпер на один класс/запись в пределах одной области видимости
 - нельзя таким образом добавлять новые поля в структуры (разве что поля класса, но они как бы глобальные переменные с ограниченной областью видимости)
 
Ну и: «...but they should not be viewed as a design tool to be used when developing new code. For new code you should always rely on normal class inheritance and interface implementations.»
 
Так что неправильно пишут. Не читают справку )

Всего записей: 212 | Зарегистр. 05-09-2007 | Отправлено: 20:22 30-10-2012
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Нечто подобное множественному наследованию можно реализовать через интерфейсы, но на мой взгляд неудобно и много писанины.
Класс хелперы, больше похожи на некую надстройку, пусть местами удобную, но всё же надстройку.
Так что множественного наледования в Делфях скорее нет, чем есть. Но оно мне и не надо.

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 10:27 31-10-2012
RuXandr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
exteris, множ. наследования в Делфи действительно нет. Во всяком случае в том виде в каком оно есть в С++. Однако, программируя на этом языке более 5 лет, я понял, что в нем очень много других возможностей, и порой не менее удобных, чтобы реализовать все что я только могу себе представить. Изучайте этот глубокий и емкий язык и поймете о чем я говорю.  
 
Кстати, от множественного наследования отказались при разработке почти вех современных языков, я думаю это именно потому, что эта фича в реальных задачах просто не работает.

Всего записей: 96 | Зарегистр. 13-10-2009 | Отправлено: 12:22 31-10-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
limarukraine
 
Коллеги правы - множественного наследования нет. Всю реальную пользу множественного наследования можно извлечь, применяя механизм интерфейсов: когда из объекта запрашивается нужный интерфейс. Также объект может реализовывать произвольное количество интерфейсов.  
 
В общем, крайне полезный механизм, настолько, что Nick Hodges призывает использовать ТОЛЬКО интерфейсы. Проект Spring4D и блогозаписи про него дают общую картину возможностей!

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 13:01 31-10-2012
GlavBuh

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
limarukraine

Цитата:
возможности реализации множественного наследования не было.

 
И слава богу

Всего записей: 96 | Зарегистр. 13-11-2003 | Отправлено: 21:56 31-10-2012
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Однако, программируя на этом языке более 5 лет, я понял, что в нем очень много других возможностей, и порой не менее удобных, чтобы реализовать все что я только могу себе представить.

Имея не меньший опыт, полностью вас поддерживаю
Оно это наследование мне никуда не упало.

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 09:06 01-11-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
exteris
Почти все отказались от множественного наследования. От него проку не много, но вот код он запутывает порядочно и суппорт просто ужасен.
С интерфейсами все прозрачно и красиво. Тот же Microsoft отказался в C# от множественного наследования.

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 09:32 01-11-2012
Eternal_Shield

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
salexn1

Цитата:
 Тот же Microsoft отказался в C# от множественного наследования.

А по-другому и быть не могло ... ведь C# был создан тем же человеком, что и Delphi: Хейлсбергом. За что ему огромный респект .. и Вирту тоже.

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 10:58 01-11-2012 | Исправлено: Eternal_Shield, 11:01 01-11-2012
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Но ведь дело не только в Хейлсберге и DotNet.
возьми Яву - в Скале нет множественного наследования, а есть "обычаи" - traits.
 
Не нравится managed - возьми компилируемые языки - например D, "наследник"  C++ - то же самое.
 
Ромбическая проблема всех задолбала и люди пришли к выводу, что родитель нужен один. А остальные куски кода либо должны заново реализовываться ( Interface + delegation) либо подмешиваться на подчинённых ролдях не перебивая основного родителя (mixins)
 
http://dlang.org/template-mixin.html
http://ru.wikipedia.org/wiki/Примесь_(программирование)

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 11:48 01-11-2012
Eternal_Shield

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
Да, не только в нём, но он повёл C# в правильном направлении и теперь этот Delphi-like с синтаксисом от С и парой-тройкой фич язык вызывает у всех nerdgasm'ы и восторги, и пипл хавает
 
Что касается множественного наследования, то тут я соглашусь: Не очень удобный подход, если он применяется в крупный проектах и очень часто. Разобраться что к чему вообще невозможно. И правильно делают, что отказываются от него.
 

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 13:31 01-11-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eternal_Shield

Цитата:
 парой-тройкой фич

Ну это вы перегнули палочку то... До С# дельфе еще ого-го и еще немного. Так конечно можно все свести к ассемблеру: подумаешь к асму добавили пару фич и получили Дельфи

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 15:32 01-11-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
salexn1
 
Ну - а какие фичи в C# есть супротив дельфей? await/async? (про GC не надо) - еще?
 
Правда - любопытно чек-лист составить!

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 16:09 02-11-2012
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нормальные дженерики работающие с числами, строками и т.д.
В Delphi нельзя сделать  
 

Цитата:
function<T> MultAdd(const a,b,c:T):T;
begin
  Result := A*B+C; end;  

 
Еще интересно что там вместо класс-хелперов было ?

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 17:28 02-11-2012 | Исправлено: Arioch1, 17:28 02-11-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
 
Ну - что то похожее есть:
 
_http://docwiki.embarcadero.com/RADStudio/XE3/en/Operator_Overloading_(Delphi)
 

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 18:06 02-11-2012
Eternal_Shield

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks

Цитата:
await/async?  

Несколько я понимаю, это всего лишь расширение через ассембли и не является built-in модификатором.  Поэтому на новую "фичу" это не тянет. Имхо.
 
salexn1

Цитата:
До С# дельфе еще ого-го и еще немного.

Я про идею и дух языка говорил и вот от C# (в своём изначальном варианте, без "расширялок") несёт Делфёй за версту. Да и было бы странно, если дитятко (C#) не превзошёл бы родителя ... если вас коробит такое определение, то читайте это так: "русский ребёнок родился в США и теперь говорит по омереканске, но от этого его русский гений не только не пострадал, а стал ещё лучше"

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 18:08 02-11-2012 | Исправлено: Eternal_Shield, 18:10 02-11-2012
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
на новую "фичу" это не тянет

само то, что это позволяется через язык - фича.
в OTL это имитируется - но выглядит по другому.
 
Для сравнения, в Скале using(ресурс){...} из C# ввели через библиотеку.
Сам по себе using - не фиша языка. А во то, что язык повзолил библиотеке так вмешаться в синтаксис - это фишка.
 

Цитата:
Operator_Overloading

ты предлагаешь авто-боксинг реализовать ? во-первых это скоре всего будет дико тормозить. во-вторых я сомневаюсь, что это сработает. type inferring в Дельфи хреновый (не знаю сильно ли лучше в шарпе - но в Дельфи точно хреновый) -  может приджется явное преобразование сделать.
 
О! вот недавно пробегало, кстати!

Цитата:
procedure<T> Append(const value: T; const container: TArray<T>);

Или что-то подобное.
 
Попытки вызвать не компилировалось с совершенно дикими сообщениями об ошибке.
Хотя казалоь бы по первому параметру можно было вывести и тип процедуры и тип второго параметра.
 
Добавлено:
Кстати, меня бесят кложуры в Delphi - синтаксис красив но дико не практичен, лучше бы сделали как C++
Некрасиво ,но удобно

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 18:30 02-11-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Embarcadero RAD Studio XE3


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru