|
|
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
Ребят, объясните пожалуйста, в чем прнцмпиальная разница между агрегацией, кооперированием и внутренними классами?? и кооперирование и коопеерация это одно и то же или отличаются друг от друга? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2009, 21:55:15 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
Внутренний класс, это класс объявленный в пространстве имён другого класса. При определённых условиях его можно использовать за пределами класса. На связях объектов это никак не сказывается. Кооперация определяет порядок взаимодействия объектов в рамках реализации какой либо функции. Сами объекты вообще говоря могут быть не связаны между собой (объект может быть аргументом функции). Агрегация определяет связи объектов и управление временем их жизни. Агрегация указывает на то, что один из объектов связи является частью другого, но не ограничен временем его жизни. Например автомобиль состоит из кузова, мотора и колёс, но все эти объекты после разрушения автомобиля могут продолжать свое независимое существование. Более сильной связью является встраивание объекта. Встроеный объект не может существовать без объекта-контейнера. Если оболочка воздушного шара рвётся, газ внутри него уходит в атмосферу прекращая своё существование в форме газового шара. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2009, 22:55:38 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
mcureenab пишет: > Внутренний класс, это класс объявленный в пространстве имён другого класса. > При определённых условиях его можно использовать за пределами класса. На > связях объектов это никак не сказывается. На самом деле я как раз хотел сказать, что понятия "внутренний класс" в общем ООП и нету. Это -- придумки джавистов. (ещё это называют вложенным классом). Ну и в разных языках они по-разному выглядят. Но про связи сказано правильно -- внутренние классы тут ни при чём. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 10:37:43 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
mcureenabВнутренний класс, это класс объявленный в пространстве имён другого класса. При определённых условиях его можно использовать за пределами класса. На связях объектов это никак не сказывается. Кооперация определяет порядок взаимодействия объектов в рамках реализации какой либо функции. Сами объекты вообще говоря могут быть не связаны между собой (объект может быть аргументом функции). Агрегация определяет связи объектов и управление временем их жизни. Агрегация указывает на то, что один из объектов связи является частью другого, но не ограничен временем его жизни. Например автомобиль состоит из кузова, мотора и колёс, но все эти объекты после разрушения автомобиля могут продолжать свое независимое существование. Более сильной связью является встраивание объекта. Встроеный объект не может существовать без объекта-контейнера. Если оболочка воздушного шара рвётся, газ внутри него уходит в атмосферу прекращая своё существование в форме газового шара. Про агрегацию написано так абстрактно, что проще застрелиться. Давайте примеры кода на С++ (можно без кода, а просто "объект такого-то класса является членом другого класса" и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 15:08:34 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
MasterZiv На самом деле я как раз хотел сказать, что понятия "внутренний класс" в общем ООП и нету. Это -- придумки джавистов. (ещё это называют вложенным классом). В UML такое понятие есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 15:10:03 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
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 целиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 15:30:41 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
mcureenabВстроеный объект не может существовать без объекта-контейнера. Если оболочка воздушного шара рвётся, газ внутри него уходит в атмосферу прекращая своё существование в форме газового шара. Красиво сказал. Тебе-бы книжки писать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 17:49:17 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
mcureenabMasterZiv На самом деле я как раз хотел сказать, что понятия "внутренний класс" в общем ООП и нету. Это -- придумки джавистов. (ещё это называют вложенным классом). В UML такое понятие есть. В C# пошли еще дальше. Там ввели такую сущность как partial class. На мой взгляд нововведение довольно бесполезное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 17:52:21 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
maytonКрасиво сказал. Тебе-бы книжки писать... Долго думал. :) Можно ещё такую аналогию композиции. Текст, буквы, картинки на листе бумаге сгорают вместе с бумагой. Без бумаги они существовать не могут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 19:02:58 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
maytonВ C# пошли еще дальше. Там ввели такую сущность как partial class. На мой взгляд нововведение довольно бесполезное. C# не читал. Но в других областях очень хорошо, когда язык или система программирования поддерживает конструкции языка моделирования взаимно-однозначно, без костылей и потери проектной информации. Даже в наиболее продвинутой области - моделирование баз данных - не всё гладко. Так что пусть делают новые языки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 19:11:28 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
Вообще, про агрегацию с композицией пишут, что это одно и тоже, а нюансы в принципе по барабану. Но в некоторых источниках их разделяют по принципу времени существования. То есть в одном случае разрушение происходит одновременно с объектом в котором используется этот объект, в другом нет. Поскольку в разных книгах этот момент описывается по разному, предлагаю считать что это "те же яйца только в профиль", с небольшими нюансами, которые в прочем можно использовать по своему усмотрению. Заморачиваться не имеет смысла, поскольку даже мэтры на это забили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2009, 09:40:38 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
XDiaBLo, видимо так пишут люди, которые не поняли что это такое, или эти термины не входят в круг их понятий, как например в C++ агрегация трудноотличима от простой ассоциации. Однако агрегация и композиция явно отличаются, если не мудрить. Опять же в C++ можно получить указатель как на агрегированный так и на встроенный объект, тогда как в CУБД Оракл на встроеннй объект ссылаться нельзя. Понимание этих тонкостей позволит ещё на этапе проектирования исключить утечки памяти в программах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2009, 19:27:16 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
mayton, partial классы служат для отделения сгенеренного интсрументами кода от кода, который пишется вручную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2009, 06:33:53 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
mcureenabXDiaBLo, видимо так пишут люди, которые не поняли что это такое, или эти термины не входят в круг их понятий , как например в C++ агрегация трудноотличима от простой ассоциации. Однако агрегация и композиция явно отличаются, если не мудрить. Опять же в C++ можно получить указатель как на агрегированный так и на встроенный объект, тогда как в CУБД Оракл на встроеннй объект ссылаться нельзя. Понимание этих тонкостей позволит ещё на этапе проектирования исключить утечки памяти в программах. Я не помню, то-ли у Фаулера в книге по UML, то-ли в GOF это было. Ну в общем не на форумах, а в какой-то знатной книге. Я потом перерыл кучу источников, и понял, что каждый понимает эти агрегации с композициями в меру своей испорченности. Короче читая книгу, главное важно понять, что автор думает про эти термины. Я лично понимаю, в чём их разница, но знаю что всегда следует ожидать подвоха даже от именитых авторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2009, 08:45:40 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
beluginmayton, partial классы служат для отделения сгенеренного интсрументами кода от кода, который пишется вручную Это принципиально важно? Какие от этого benefits? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2009, 10:48:25 |
|
||
|
ООП зависимости
|
|||
|---|---|---|---|
|
#18+
maytonbeluginmayton, partial классы служат для отделения сгенеренного интсрументами кода от кода, который пишется вручную Это принципиально важно? Какие от этого benefits? Генерированный код может быть перегенерирован... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2009, 10:48:57 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36390526&tid=1343980]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
216ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 563ms |

| 0 / 0 |
