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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2017, 16:21   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А чего с "А" непонятно? Просто имя. Обычно как-то так принято называть в Дельфи, иначе ж совпадет с членом класса (в других языках либо регистр первой буквы, либо префиксы типа m_, _ для полей).

F для полей, A для параметров. Видимо от Field и Argument
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.04.2017, 16:48   #12
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Аа. Понятно. А то я подумал, что какие-то особые указатели.
Про CreateA5Book. Если бы у свойства было бы только одно значение - его бы и писать не имело смысла. По Вашему примеру получается, что для каждого значения параметра нужно свой конструктор создавать.
А разве нельзя сделать вот так:
Код:
TPrintProduct = class
public
  Format: string;

  constructor Create(AFormat: string);
end;

TBook = class(TPrintProduct)
public
  Author: string;

  constructor CreateBook(PrintBook: TPrintProduct);
end;

constructor TBook.CreateBook(PrintBook: TPrintProduct);
begin
  Format := PrintBook.Format;
  Author := AAuthor;
end;
Ship_1 вне форума Ответить с цитированием
Старый 05.04.2017, 16:52   #13
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А чем это поможет? Сложно представить сценарий использования где это имело бы смысл и где бы это не решалось конструкторами или функциями типа CreateA5.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.04.2017, 16:59   #14
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
По Вашему примеру получается, что для каждого значения параметра нужно свой конструктор создавать.
Свойства можно (и нужно) задавать и ВНЕ конструктора. Обычно так и делается.
Код:
r:=TPrintProduct.Create(....);
r.Autor:='00000';
r.format:='-----';
а в конструкторе задаются ТОТ МИНИМАЛЬНЫЙ набор свойств без которых объект будет неудобно (или невозможно по мнению разработчика) использовать.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 05.04.2017, 17:05   #15
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
и нужно
С чего вдруг? Это зависит от ситуации.

Если объект не надо изменять после создания (что довольно часто бывает), то лучше вообще сделать свойства извне readonly и использовать только конструктор.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.04.2017, 17:38   #16
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А чем это поможет? Сложно представить сценарий использования где это имело бы смысл и где бы это не решалось конструкторами или функциями типа CreateA5.
Ну я же достаточно, вроде, наглядный пример привёл.
Есть печатная продукция. Делится на виды "Книги" и "Журналы".
Книги, например, могут быть размерами А4, А5, А6, А7.
Журналы: А4 и А3.
Книги могут быть:
серийные, у них параметры - Автор, Название серии, Название книги.
Коллекции (анталогии, собрания) - Автор, Название коллекции, Номер тома, Количество томов,
Просто книги, у которых только автор и название.
И могут быть журналы - вообще со своими свойствами.
Вот мы создали экземпляр КнигаА5 родительского класса ПечатнаяПродукция с типом: Книги, Форматом: А5.
Далее, у нас есть серии, собрания, просто книги.
Чтоб в каждом не писать тип: книга, формат: А5 было бы проще создать дочерний класс, к которому первоначально присваивались эти свойства: Книга и А5.
А т.к. кроме книги есть ещё и журналы, а форматов тоже несколько, то создавать свой конструктор для каждого не проще, чем присваивать "дочкам" свойства "родителей" "вручную". А если в конструктор передавать родителя - это бы решило проблему.
Для книг А4 через родителя КнигиА4 передались бы их параметры, для журнала А4 - через соответствующего, и т.п.
Что-то у меня уже мозг путаться начал...
Или, например, синтезаторы. Может, этот пример лучше будет. Есть родительский класс, определяющий количество нот, количество инструментов, ритмов. На этапе выбора модели нафиг не нужна стоимость. И зачем она в этом классе? Но если модель уже выбрана - то внимание уже начинает падать на неё. Разве не лучше в этом случае создать дочерний класс, в который уже добавить стоимость?

Как хорошо написали выше
Цитата:
Сообщение от evg_m Посмотреть сообщение
родительский класс разлинованная ВЕРХНЯЯ половинка листа
дочерний класс Целый разлинованный лист
Но, переведя на страницы сайта, зачем всё время перерисовывать "шапку" страницы, если она не меняется внутри раздела?

Последний раз редактировалось Ship_1; 05.04.2017 в 17:43.
Ship_1 вне форума Ответить с цитированием
Старый 05.04.2017, 17:55   #17
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Так как вы хотите сделать нельзя. Нет тут простого способа, метода. Надобно всё ручками делать. Придётся вручную присвоить все поля от предка дочерннму классу.
Для этого либо делаем метод assign. Либо делаете класс строитель и его передаёте в конструкторе.
Читать про шаблоны проектирования, книга четырёх с примерами на Си++.
Так же читать про IoC в ООП.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 05.04.2017 в 18:02.
Pavia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
[C#]: Не могу понять, как создать иерархию классов "Печатное издание–Книга– Учебник–Журнал". Классы должны содержать поля для описания свойств объектов и методы для работы с ними sadness130 Помощь студентам 0 05.03.2017 13:10
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" link90 Общие вопросы C/C++ 2 27.03.2016 12:34
Для заданной строки определить все входящие в неё символ. Например: строка "abccbbabbac" состоит из символов "a", "b" и "c" Sandakan01 Помощь студентам 1 24.02.2016 03:20