Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 298 299 [300] 301 302 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#4486
,
|
|
|
|
Ну какие все, млин? Вот я чуть выше написал примитивный класс "вектор". Мне что, отдельно длину, отдельно значения элементов в объекты разносить? |
|
Сообщ.
#4487
,
|
|
|
|
Цитата DesweR @ Простой пример: пишем свой компонент TMyStatusBar, наследуется от TCustomPanel и переносим из протектед в публишед все свойства окромя Aligh, Height, Weigth. вот опять, имеем базовый объект, в котором пытаются решить все задачи всех возможных наследников. почему в TCustomPanel эти свойства не в published? зачем вообще этот TCustomPanel? Добавлено не подталкиваю, они и так сами справляются =) |
|
Сообщ.
#4488
,
|
|
|
|
Цитата korvin @ вот опять, имеем базовый объект, в котором пытаются решить все задачи всех возможных наследников. почему в TCustomPanel эти свойства не в published? зачем вообще этот TCustomPanel? Общий наследник. У него свои задачи. А вот какую панельку ты на основе него будешь делать, конкретизируется в потомках. Точно такой же пример: есть TCustomLabel, у него Caption протектирована. У TLabel оно в паблик идет, а у TDBLabel - нет, ибо берется из поля таблицы. Но все это - TCustomLabel, выглядит одинаково. По-твоему надо было селать два разных класса? |
|
Сообщ.
#4489
,
|
|
|
|
Цитата Romkin @ Ну какие все, млин? Вот я чуть выше написал примитивный класс "вектор". Мне что, отдельно длину, отдельно значения элементов в объекты разносить? а зачем у тебя длина в protected? у тебя что, у твоего примитивного вектора нельзя взять длину? как ты его итерировать собрался? и мне интересно, как это у тебя в интерфейсе методы публичные, а в объекте, реализующем этот интерфейс -- защищенные? Добавлено Цитата Romkin @ Общий наследник. У него свои задачи. А вот какую панельку ты на основе него будешь делать, конкретизируется в потомках. Точно такой же пример: есть TCustomLabel, у него Caption протектирована. У TLabel оно в паблик идет, а у TDBLabel - нет, ибо берется из поля таблицы. Но все это - TCustomLabel, выглядит одинаково. По-твоему надо было селать два разных класса? по-моему нужно было в TCustomLabel (это же у нас абстрактный класс, да?) сделать Caption абстрактным методом/свойством без реализации. а так у вас TDBLabel получается захламлен лишними методами/свойствами/полями из предка. |
|
Сообщ.
#4490
,
|
|
|
|
Цитата korvin @ по-моему нужно было в TCustomLabel (это же у нас абстрактный класс, да?) сделать Caption абстрактным методом/свойством без реализации. а так у вас TDBLabel получается захламлен лишними методами/свойствами/полями из предка. Почему захламлен? Снаружи у него ничего лишнего нет. Изнутри - реализаторы TDBLabel должны же были менять текст на нем, логично это делать через caption, как обычно. |
|
Сообщ.
#4491
,
|
|
|
|
Цитата korvin @ по-моему нужно было в TCustomLabel (это же у нас абстрактный класс, да?) сделать Caption абстрактным методом/свойством без реализации. а так у вас TDBLabel получается захламлен лишними методами/свойствами/полями из предка. Неа. Caption используется TDBLabel, по назначению. Просто не экспонируется. Цитата korvin @ а зачем у тебя длина в protected? у тебя что, у твоего примитивного вектора нельзя взять длину? как ты его итерировать собрался? и мне интересно, как это у тебя в интерфейсе методы публичные, а в объекте, реализующем этот интерфейс -- защищенные? Чтобы пользовались интерфейсом, а не его реализацией, дизайн такой. И если ты посмотришь на код, то увидишь, что все в порядке. |
|
Сообщ.
#4492
,
|
|
|
|
Цитата OpenGL @ Почему захламлен? Снаружи у него ничего лишнего нет. Изнутри - реализаторы TDBLabel должны же были менять текст на нем, логично это делать через caption, как обычно. зато внутри полный абзац, все правильно, так и надо, да. |
|
Сообщ.
#4493
,
|
|
|
|
Цитата korvin @ зато внутри полный абзац, все правильно, так и надо, да. Никакого абзаца там нет. Это просто визуализация строки, не более. Абзац в тех отрывках кода что ты тут писал. Куча объектов для подключения - это не фонтан. |
|
Сообщ.
#4494
,
|
|
|
|
default - он бывает разный. Тут default чего имеется в виду? |
|
Сообщ.
#4495
,
|
|
|
|
Цитата Flex Ferrum @ default - он бывает разный. Тут default чего имеется в виду? Свойство по умолчанию. То есть, поскольку Elem дефолтное, то вместо Vector.Elem[i] можно писать просто Vector[i], ну или dict['MyKey'] := Value; - лишь бы хотя бы один индекс был. |
|
Сообщ.
#4496
,
|
|
|
|
Цитата Romkin @ Свойство по умолчанию. То есть, поскольку Elem дефолтное, то вместо Vector.Elem[i] можно писать просто Vector[i], ну или dict['MyKey'] := Value; - лишь бы хотя бы один индекс был. А, это в С++ реализуется обычным оператором индексирования. Т. е. тут ничего изобретать не надо. |
|
Сообщ.
#4497
,
|
|
|
|
Цитата Flex Ferrum @ А, это в С++ реализуется обычным оператором индексирования. Т. е. тут ничего изобретать не надо. А, понятно |
|
Сообщ.
#4498
,
|
|
|
|
Кстати, надо бы отрефачить реализацию свойств под новый стандарт.
|
|
Сообщ.
#4499
,
|
|
|
|
Цитата Flex Ferrum @ Кстати, надо бы отрефачить реализацию свойств под новый стандарт. Напомни, как твои свойства получают this своего объекта-владельца? |
|
Сообщ.
#4500
,
|
|
|
|
Цитата D_KEY @ Напомни, как твои свойства получают this своего объекта-владельца? ![]() ![]() class Unit { public: Unit() : properties__(this) {/* ... */;} }; |