powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / ООП зависимости
17 сообщений из 17, страница 1 из 1
ООП зависимости
    #36387482
Gerasim1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, объясните пожалуйста, в чем прнцмпиальная разница между агрегацией, кооперированием и внутренними классами?? и кооперирование и коопеерация это одно и то же или отличаются друг от друга?
...
Рейтинг: 0 / 0
ООП зависимости
    #36387552
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внутренний класс, это класс объявленный в пространстве имён другого класса.
При определённых условиях его можно использовать за пределами класса. На связях объектов это никак не сказывается.

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

Агрегация определяет связи объектов и управление временем их жизни. Агрегация указывает на то, что один из объектов связи является частью другого, но не ограничен временем его жизни. Например автомобиль состоит из кузова, мотора и колёс, но все эти объекты после разрушения автомобиля могут продолжать свое независимое существование.

Более сильной связью является встраивание объекта. Встроеный объект не может существовать без объекта-контейнера. Если оболочка воздушного шара рвётся, газ внутри него уходит в атмосферу прекращая своё существование в форме газового шара.
...
Рейтинг: 0 / 0
ООП зависимости
    #36389311
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab пишет:

> Внутренний класс, это класс объявленный в пространстве имён другого класса.
> При определённых условиях его можно использовать за пределами класса. На
> связях объектов это никак не сказывается.

На самом деле я как раз хотел сказать, что понятия "внутренний
класс" в общем ООП и нету. Это -- придумки джавистов.
(ещё это называют вложенным классом).
Ну и в разных языках они по-разному выглядят.
Но про связи сказано правильно -- внутренние классы тут ни
при чём.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ООП зависимости
    #36390026
Фотография mriadus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabВнутренний класс, это класс объявленный в пространстве имён другого класса.
При определённых условиях его можно использовать за пределами класса. На связях объектов это никак не сказывается.

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

Агрегация определяет связи объектов и управление временем их жизни. Агрегация указывает на то, что один из объектов связи является частью другого, но не ограничен временем его жизни. Например автомобиль состоит из кузова, мотора и колёс, но все эти объекты после разрушения автомобиля могут продолжать свое независимое существование.

Более сильной связью является встраивание объекта. Встроеный объект не может существовать без объекта-контейнера. Если оболочка воздушного шара рвётся, газ внутри него уходит в атмосферу прекращая своё существование в форме газового шара.
Про агрегацию написано так абстрактно, что проще застрелиться. Давайте примеры кода на С++ (можно без кода, а просто "объект такого-то класса является членом другого класса" и т.п.)
...
Рейтинг: 0 / 0
ООП зависимости
    #36390029
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv

На самом деле я как раз хотел сказать, что понятия "внутренний
класс" в общем ООП и нету. Это -- придумки джавистов.
(ещё это называют вложенным классом).


В UML такое понятие есть.
...
Рейтинг: 0 / 0
ООП зависимости
    #36390094
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mriadus
Про агрегацию написано так абстрактно, что проще застрелиться. Давайте примеры кода на С++ (можно без кода, а просто "объект такого-то класса является членом другого класса" и т.п.)

Как вариант ассоциации в общем виде:

class PeerA {....};

class PeerB { PeerA *peer; ... };

Тут мы предполагаем, что между классами PeerA и PeerB нет зависимости целое-часть. В противном случае следует говорить не об ассоциации вообще, а о её более сильных видах.


Как вариант агрегаци:

class Part;

class Whole { Part ∂ ... };

Тут объект типа Part на который ссылается Whole::part может продолжить существование после удаления объекта Whole. Естественно, в деструкторе можно прописать безусловное удаление этого объекта, но тогда связь усилится до встраивания или композиции.

Точно так же можно написать:

class Part;

class Whole { Part *part; ... };

Т.е. в C++ глядя на переменную (ссылку или указатель) член класса нельзя однозначно сказать, что данная ассоциация является агрегацией. Нужно смотреть ещё и деструктор класса.


Как вариант встраивания или композиции:

class Part {....};

class Whole { Part part; ... };

Тут объект Whole::part будет неизбежно удалён вместе со своим контейнером типа Whole.

Если книжка написана невнятно, это не повод для суецида с применением огнестрельного оружия. Поищи другую книжку. Если строгие формулировки тебя не пугают, почитай метамодель UML и стандарт UML целиком.
...
Рейтинг: 0 / 0
ООП зависимости
    #36390516
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabВстроеный объект не может существовать без объекта-контейнера. Если оболочка воздушного шара рвётся, газ внутри него уходит в атмосферу прекращая своё существование в форме газового шара.
Красиво сказал. Тебе-бы книжки писать...
...
Рейтинг: 0 / 0
ООП зависимости
    #36390526
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabMasterZiv

На самом деле я как раз хотел сказать, что понятия "внутренний
класс" в общем ООП и нету. Это -- придумки джавистов.
(ещё это называют вложенным классом).


В UML такое понятие есть.
В C# пошли еще дальше. Там ввели такую сущность как partial class.
На мой взгляд нововведение довольно бесполезное.
...
Рейтинг: 0 / 0
ООП зависимости
    #36390682
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКрасиво сказал. Тебе-бы книжки писать...

Долго думал. :)
Можно ещё такую аналогию композиции. Текст, буквы, картинки на листе бумаге сгорают вместе с бумагой. Без бумаги они существовать не могут.
...
Рейтинг: 0 / 0
ООП зависимости
    #36390690
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ C# пошли еще дальше. Там ввели такую сущность как partial class.
На мой взгляд нововведение довольно бесполезное.

C# не читал. Но в других областях очень хорошо, когда язык или система программирования поддерживает конструкции языка моделирования взаимно-однозначно, без костылей и потери проектной информации.

Даже в наиболее продвинутой области - моделирование баз данных - не всё гладко.

Так что пусть делают новые языки.
...
Рейтинг: 0 / 0
ООП зависимости
    #36391210
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, про агрегацию с композицией пишут, что это одно и тоже, а нюансы в принципе по барабану. Но в некоторых источниках их разделяют по принципу времени существования. То есть в одном случае разрушение происходит одновременно с объектом в котором используется этот объект, в другом нет. Поскольку в разных книгах этот момент описывается по разному, предлагаю считать что это "те же яйца только в профиль", с небольшими нюансами, которые в прочем можно использовать по своему усмотрению. Заморачиваться не имеет смысла, поскольку даже мэтры на это забили.
...
Рейтинг: 0 / 0
ООП зависимости
    #36394523
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLo,

видимо так пишут люди, которые не поняли что это такое, или эти термины не входят в круг их понятий, как например в C++ агрегация трудноотличима от простой ассоциации. Однако агрегация и композиция явно отличаются, если не мудрить. Опять же в C++ можно получить указатель как на агрегированный так и на встроенный объект, тогда как в CУБД Оракл на встроеннй объект ссылаться нельзя.

Понимание этих тонкостей позволит ещё на этапе проектирования исключить утечки памяти в программах.
...
Рейтинг: 0 / 0
ООП зависимости
    #36394808
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
partial классы служат для отделения сгенеренного интсрументами кода от кода, который пишется вручную
...
Рейтинг: 0 / 0
ООП зависимости
    #36394851
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabXDiaBLo,

видимо так пишут люди, которые не поняли что это такое, или эти термины не входят в круг их понятий , как например в C++ агрегация трудноотличима от простой ассоциации. Однако агрегация и композиция явно отличаются, если не мудрить. Опять же в C++ можно получить указатель как на агрегированный так и на встроенный объект, тогда как в CУБД Оракл на встроеннй объект ссылаться нельзя.

Понимание этих тонкостей позволит ещё на этапе проектирования исключить утечки памяти в программах.
Я не помню, то-ли у Фаулера в книге по UML, то-ли в GOF это было. Ну в общем не на форумах, а в какой-то знатной книге. Я потом перерыл кучу источников, и понял, что каждый понимает эти агрегации с композициями в меру своей испорченности. Короче читая книгу, главное важно понять, что автор думает про эти термины. Я лично понимаю, в чём их разница, но знаю что всегда следует ожидать подвоха даже от именитых авторов.
...
Рейтинг: 0 / 0
ООП зависимости
    #36394960
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beluginmayton,
partial классы служат для отделения сгенеренного интсрументами кода от кода, который пишется вручную
Это принципиально важно? Какие от этого benefits?
...
Рейтинг: 0 / 0
ООП зависимости
    #36394962
an0nym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonbeluginmayton,
partial классы служат для отделения сгенеренного интсрументами кода от кода, который пишется вручную
Это принципиально важно? Какие от этого benefits?
Генерированный код может быть перегенерирован...
...
Рейтинг: 0 / 0
ООП зависимости
    #36395277
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLo
Я не помню, то-ли у Фаулера в книге по UML, то-ли в GOF это было. ...

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


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