Общий раздел > Нововведения
Новый термин (почти тоже что и Наследование)
HelpMePls:
Всем привет!
ВНЕС некоторые ИЗМЕНЕНИЯ: (*)
прим. не смотрите на пример с точки зрения ООП - протектед итд
НАСЛЕДОВАНИЕ:
1. пусть есть класс с атррибутами (Atta#) С1{Atta1,Atta2,Atta3}
2. пусть есть класс с атррибутами (Atta#,Attb#) С2{Atta1,Atta2,Atta3,Attb4} который является наследником класса С2.
у меня такой вопрос как назвать такую операцию "НАСЛЕДОВАНИЯ":
1. пусть есть класс с атррибутами (Atta#) С1{Atta1,Atta2,Atta3}
(*)2. пусть есть класс с атррибутами (Atta#) С2{Atta1,Atta2} который является наследником класса С1.
У наследников класса С1 никогда не будет новых аттрибутов только некоторые из его аттрибутов.
получается, что это наследование только несколько специфичное.
Представим, что у нас есть сущность и на основе ее нужно сделать другую, но только не со всеми ее признаками. (предполагается что остальные лишнии). И показать между ними (классами) связь "специфичного Наследования".
Просьба - помогите предложениями как бы эту связь обозвать.
(*) И ТАК нашел такое понятие как - ИЗБИРАТЕЛЬНОЕ (SELECTIVE) НАСЛЕДОВАНИЕ. это когда у класса наследуются только определенные аттрибуты. и уже далее у такого класса наследника не может быть других потомков.
и еще пишут что в COM нет избирательного наследования.
(*)вопрос кто сталкивался с таким понятием?
Galogen:
--- Цитата: HelpMePls от 23 Апреля 2007, 13:58:48 ---Всем привет!
--- Конец цитаты ---
И вам не болеть
--- Цитировать ---НАСЛЕДОВАНИЕ:
1. пусть есть класс с атррибутами (Atta#) С1{Atta1,Atta2,Atta3}
2. пусть есть класс с атррибутами (Atta#,Attb#) С2{Atta1,Atta2,Atta3,Attb4} который является наследником класса С2.
--- Конец цитаты ---
C2 наследник C2 ?
--- Цитировать ---у меня такой вопрос как назвать такую операцию "НАСЛЕДОВАНИЯ":
1. пусть есть класс с атррибутами (Atta#) С1{Atta1,Atta2,Atta3}
2. пусть есть класс с атррибутами (Atta#) С2{Atta1,Atta2} который является наследником класса С2.
--- Конец цитаты ---
Разница конечно есть, но не вижу смысла вопроса
--- Цитировать ---У наследников класса С1 никогда не будет новых аттрибутов только некоторые из его аттрибутов.
получается, что это наследование только несколько специфичное.
Представим, что у нас есть сущность и на основе ее нужно сделать другую, но только не со всеми ее признаками. (предполагается что остальные лишнии). И показать между ними (классами) связь "специфичного Наследования".
--- Конец цитаты ---
Вообще-то наследование есть обощение, зачем же делать обобщение относительно класса, чьи атрибуты наследуются частично? Это уже вовсе не наследование - а какое-то антинаследование.
Подумайте что такое КЛАССИФИКАЦИЯ (она ведь может быть и множественной)
Просьба - помогите предложениями как бы эту связь обозвать.
[/quote]
bas:
Это вообще-то спецефичность ЯП. Вроде бы в Си++ надо сделать Attr3 - protected (или private не помню точно) и все будет так как вам надо, связь тут не причем.
Galogen:
--- Цитата: bas от 23 Апреля 2007, 18:35:09 ---Это вообще-то спецефичность ЯП. Вроде бы в Си++ надо сделать Attr3 - protected (или private не помню точно) и все будет так как вам надо, связь тут не причем.
--- Конец цитаты ---
Насколько я понял, не наследуется только атрибут видимости private, а protected и package наследуется.
Т.е. перефразируя вопрос HelpMePls
Пусть есть класс С1{Atta1,Atta2,Atta3} и класс С2{Atta1,Atta2,Atta3,Attb4}, который наследуется от класс C1. Поскольку он наследует все Atta1,Atta2,Atta3, то можно сказать, что это видимости типа public protected package.
Второй случай
Пусть есть класс С1{Atta1,Atta2,Atta3} и класс С2{Atta1,Atta2} который является наследником класса С1.
Очевидно сигнатура класса С1{+Atta1,+Atta2,-Atta3}.
Думаю от языка зависит область видимости атрибута по умолчанию, т.е. если она явно не задана, то какая область видимости будет по умолчанию у атрибута или операции.
Тогда
--- Цитировать ---получается, что это наследование только несколько специфичное.
--- Конец цитаты ---
вполне нормальное каноническое наследование
--- Цитировать ---аждому члену класса можно установить его область доступа (access control level). Область доступа члена класса определяет участки кода, из которых к этому члену будет возможно обращаться. В большинстве объектно-ориентированных языков программирования поддерживаются следующие области доступа:
private (закрытый, внутренний член класса) — обращения к члену допускаются только из кода методов класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену;
protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из кода методов класса, в котором этот член определён, или из любых его классов-наследников;
public (открытый член класса) — обращения к члену допускаются из любого кода.
--- Конец цитаты ---
HelpMePls:
--- Цитата: Galogen от 23 Апреля 2007, 19:39:55 ---Насколько я понял, не наследуется только атрибут видимости private, а protected и package наследуется.
Т.е. перефразируя вопрос HelpMePls
Пусть есть класс С1{Atta1,Atta2,Atta3} и класс С2{Atta1,Atta2,Atta3,Attb4}, который наследуется от класс C1. Поскольку он наследует все Atta1,Atta2,Atta3, то можно сказать, что это видимости типа public protected package.
Второй случай
Пусть есть класс С1{Atta1,Atta2,Atta3} и класс С2{Atta1,Atta2} который является наследником класса С1.
Очевидно сигнатура класса С1{+Atta1,+Atta2,-Atta3}.
Думаю от языка зависит область видимости атрибута по умолчанию, т.е. если она явно не задана, то какая область видимости будет по умолчанию у атрибута или операции.
Тогдавполне нормальное каноническое наследование
--- Конец цитаты ---
А если от С1 такие будут наследники?
С3{Atta1,Atta2}
С3{Atta1,Atta3}
С4{Atta2,Atta3}
я хотел показать концепцию. Решение не нужно.
в UML есть расширения языка. вот мне и нужно такое расширение ввести. чтобы решить свою задачу.
Навигация
Перейти к полной версии