Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Несколько разнородных классов с общими полями  [new]
antox
Member

Откуда: РФ
Сообщений: 1160
Необходимо создавать несколько разнородных объектов, имеющих и общие поля, и методы

Т.е. поля код, наименование, описание будут у всех, как и некоторые методы, например - добавить, удалить

Но другие поля будут разными, реализация некоторых методов также будет разная, кроме того будут и вообще разные методы

Как лучше поступить?

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

или еще как... повествование на пальцах приветствуется :)

Сообщение было отредактировано: 18 ноя 20, 03:31
18 ноя 20, 03:34    [22234309]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
rgreat
Member

Откуда:
Сообщений: 6312
2
18 ноя 20, 04:14    [22234314]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
antox
Т.е. поля код, наименование, описание будут у всех, как и некоторые методы, например - добавить, удалить

Смешение мух с котлетами вижу я тут.
18 ноя 20, 04:41    [22234318]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
antox
Member

Откуда: РФ
Сообщений: 1160
softwarer
antox
Т.е. поля код, наименование, описание будут у всех, как и некоторые методы, например - добавить, удалить

Смешение мух с котлетами вижу я тут.


Хочется подробностей :) please
18 ноя 20, 04:56    [22234320]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
antox
Хочется подробностей :) please

Во дворе стоит мусорный бак. У него есть методы "добавить" и "удалить", но нет "наименования". В баке лежит бомж Петя. У него есть наименование, но нет методов "добавить" и тем более "удалить".
18 ноя 20, 05:04    [22234322]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
rgreat
Member

Откуда:
Сообщений: 6312
Всегда можно добавить Пете бутылку и удалить из него почку.

А название у бака всетаки есть. ;)


Есть базовый Паспортизируемый тип.

От него рождены Физический и Биологический типы.

От Физического типа рожден тип мусорный бак, от биологического рожден Петя.

Сообщение было отредактировано: 18 ноя 20, 05:39
18 ноя 20, 05:40    [22234324]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
antox
Member

Откуда: РФ
Сообщений: 1160
softwarer
antox
Хочется подробностей :) please

Во дворе стоит мусорный бак. У него есть методы "добавить" и "удалить", но нет "наименования". В баке лежит бомж Петя. У него есть наименование, но нет методов "добавить" и тем более "удалить".


Планируется не так... Есть 8 баков, одни из них под мусор, некоторые под еду, другие под химикаты
18 ноя 20, 05:48    [22234326]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
alekcvp
Member

Откуда:
Сообщений: 2494
Тогда, ИМХО, наследования для начала хватит. Возможно с абстрактным базовым классом.
Если потом не выяснится, что иногда приезжает мусоровоз от компании-аутсорсера, которому нужно знать что в этих баках и выгружать из них мусор...

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

Интерфейсы, вроде, можно в любой момент прикрутить ЕМНИП.
Главное тогда наследоваться от TInterfacedObject, но это вроде ни на что кроме поддержи интерфейсов не влияет.
И непонятно зачем писать реализацию одинаковых методов, если её можно один раз прописать в родителе.

Короче все три варианта в первом посте - не взаимоисключающие, а дополняющие.

Сообщение было отредактировано: 18 ноя 20, 10:26
18 ноя 20, 10:28    [22234401]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
L_argo
Member

Откуда:
Сообщений: 1297
Есть сабжевая задача это банальная КИС с карточками клиента, то ООП тут будет чрезвычайно лишним.
18 ноя 20, 10:39    [22234407]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
alekcvp
Member

Откуда:
Сообщений: 2494
L_argo
Есть сабжевая задача это банальная КИС с карточками клиента, то ООП тут будет чрезвычайно лишним.

Предлагаете писать процедурный код?..
18 ноя 20, 11:14    [22234429]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
antox
Member

Откуда: РФ
Сообщений: 1160
L_argo
Есть сабжевая задача это банальная КИС с карточками клиента, то ООП тут будет чрезвычайно лишним.


Раскидай в 3х словах
18 ноя 20, 16:02    [22234710]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
antox
Member

Откуда: РФ
Сообщений: 1160
alekcvp
Предлагаете писать процедурный код?..


Как-то не хочется, баки могут повторяться 3 первых, 2 третьих и 5 шестых, так что лучше все-таки ООП :)
18 ноя 20, 16:04    [22234711]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63960
Блог
rgreat
Есть базовый Паспортизируемый тип.

Проблема в том, что паспортизируемый тип - не контейнер. По-хорошему, здесь нужно множественное наследование. А попытка внедрить базовый суперкласс, объединяющий в себе черты всех предков, которые в разных комбинациях понадобятся кому-то из потомков - понятно, откуда растёт, но приводит к отвратительным последствиям.
18 ноя 20, 16:08    [22234714]     Ответить | Цитировать Сообщить модератору
 Re: Несколько разнородных классов с общими полями  [new]
x1ca4064
Member

Откуда:
Сообщений: 1210
antox

Т.е. поля код, наименование, описание будут у всех, как и некоторые методы, например - добавить, удалить

Но другие поля будут разными, реализация некоторых методов также будет разная, кроме того будут и вообще разные методы


Если убрать сбивающую с толку, но ничего не описывающую, семантику, то задачу:
Поля Prop1, Prop2, Prop3 будут у всех, как и некоторые методы, например - Method1, Method2
Но другие поля будут разными, реализация некоторых методов также будет разная, кроме того будут и вообще разные методы


Решать нужно через обычное наследование
18 ноя 20, 16:38    [22234746]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить