Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Несколько разнородных классов с общими полями / 14 сообщений из 14, страница 1 из 1
18.11.2020, 03:34
    #40019771
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
Необходимо создавать несколько разнородных объектов, имеющих и общие поля, и методы

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

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

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

  • через интерфейсы (но тогда придется каждый раз писать реализацию одинаковых методов и все равно наследовать реализующий интерфейс класс, т.к. будет разный состав полей)
  • просто через наследование классов
  • с помощью абстрактных классов или классов с абстрактными методами
или еще как... повествование на пальцах приветствуется :)
...
Рейтинг: 0 / 0
18.11.2020, 04:14
    #40019776
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
2
...
Рейтинг: 0 / 0
18.11.2020, 04:41
    #40019779
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
antox
Т.е. поля код, наименование, описание будут у всех, как и некоторые методы, например - добавить, удалить

Смешение мух с котлетами вижу я тут.
...
Рейтинг: 0 / 0
18.11.2020, 04:56
    #40019781
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
softwarer
antox
Т.е. поля код, наименование, описание будут у всех, как и некоторые методы, например - добавить, удалить

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


Хочется подробностей :) please
...
Рейтинг: 0 / 0
18.11.2020, 05:04
    #40019783
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
antox
Хочется подробностей :) please

Во дворе стоит мусорный бак. У него есть методы "добавить" и "удалить", но нет "наименования". В баке лежит бомж Петя. У него есть наименование, но нет методов "добавить" и тем более "удалить".
...
Рейтинг: 0 / 0
18.11.2020, 05:40
    #40019784
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
Всегда можно добавить Пете бутылку и удалить из него почку.

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


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

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

От Физического типа рожден тип мусорный бак, от биологического рожден Петя.
...
Рейтинг: 0 / 0
18.11.2020, 05:48
    #40019785
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
softwarer
antox
Хочется подробностей :) please

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


Планируется не так... Есть 8 баков, одни из них под мусор, некоторые под еду, другие под химикаты
...
Рейтинг: 0 / 0
18.11.2020, 10:28
    #40019828
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
Тогда, ИМХО, наследования для начала хватит. Возможно с абстрактным базовым классом.
Если потом не выяснится, что иногда приезжает мусоровоз от компании-аутсорсера, которому нужно знать что в этих баках и выгружать из них мусор...

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

Короче все три варианта в первом посте - не взаимоисключающие, а дополняющие.
...
Рейтинг: 0 / 0
18.11.2020, 10:39
    #40019832
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
Есть сабжевая задача это банальная КИС с карточками клиента, то ООП тут будет чрезвычайно лишним.
...
Рейтинг: 0 / 0
18.11.2020, 11:14
    #40019847
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
L_argo
Есть сабжевая задача это банальная КИС с карточками клиента, то ООП тут будет чрезвычайно лишним.

Предлагаете писать процедурный код?..
...
Рейтинг: 0 / 0
18.11.2020, 16:02
    #40020007
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
L_argo
Есть сабжевая задача это банальная КИС с карточками клиента, то ООП тут будет чрезвычайно лишним.


Раскидай в 3х словах
...
Рейтинг: 0 / 0
18.11.2020, 16:04
    #40020008
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
alekcvp
Предлагаете писать процедурный код?..


Как-то не хочется, баки могут повторяться 3 первых, 2 третьих и 5 шестых, так что лучше все-таки ООП :)
...
Рейтинг: 0 / 0
18.11.2020, 16:08
    #40020011
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
rgreat
Есть базовый Паспортизируемый тип.

Проблема в том, что паспортизируемый тип - не контейнер. По-хорошему, здесь нужно множественное наследование. А попытка внедрить базовый суперкласс, объединяющий в себе черты всех предков, которые в разных комбинациях понадобятся кому-то из потомков - понятно, откуда растёт, но приводит к отвратительным последствиям.
...
Рейтинг: 0 / 0
18.11.2020, 16:38
    #40020029
x1ca4064
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько разнородных классов с общими полями
antox

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

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


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


Решать нужно через обычное наследование
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Несколько разнородных классов с общими полями / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]