Форум Сообщества Аналитиков

×


Новый термин (почти тоже что и Наследование)(Прочитано 23166 раз)
Всем привет!

ВНЕС некоторые ИЗМЕНЕНИЯ: (*)
прим. не смотрите на пример с точки зрения ООП - протектед итд

НАСЛЕДОВАНИЕ:
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 нет избирательного наследования.

(*)вопрос кто сталкивался с таким понятием?
« Последнее редактирование: 24 Апреля 2007, 11:20:06 от HelpMePls »



Всем привет!
И вам не болеть

Цитировать
НАСЛЕДОВАНИЕ:
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]



Это вообще-то спецефичность ЯП. Вроде бы в Си++ надо сделать Attr3 - protected (или private не помню точно) и все будет так как вам надо, связь тут не причем.
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Это вообще-то спецефичность ЯП. Вроде бы в Си++ надо сделать 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 (открытый член класса) — обращения к члену допускаются из любого кода.
« Последнее редактирование: 23 Апреля 2007, 19:41:48 от Galogen »



Насколько я понял, не наследуется только атрибут видимости 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 есть расширения языка. вот мне и нужно такое расширение ввести. чтобы решить свою задачу.



А если от С1 такие будут наследники?

С3{Atta1,Atta2}
С3{Atta1,Atta3}
С4{Atta2,Atta3}

я хотел показать концепцию. Решение не нужно.

в UML есть расширения языка. вот мне и нужно такое расширение ввести. чтобы решить свою задачу.

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

И какие расширения Вы имеете в виду. Не догоняю я вашего вопроса.



Я вот тоже не понимаю. Для чего это все?? Как это в коде будет выглядеть???? Это уже не будет наследованием как таковым, просто определение нового класса с какими-то атрибутами.

Я даже не могу представить как это будет выглядеть на диаграмме или в коде....
Т. е. на диаграмме надо будет указать в связи какие же атрибуты переходят от одного класса другому?! Не легче просто новый класс создать?
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Я даже не могу представить как это будет выглядеть на диаграмме или в коде....
Т. е. на диаграмме надо будет указать в связи какие же атрибуты переходят от одного класса другому?! Не легче просто новый класс создать?
Саша, не парься, пусть вопрошающий парится, а то навел тень на плетень



Саша, не парься, пусть вопрошающий парится, а то навел тень на плетень

мне кажется что если смотреть с т.з реализации то конечно очень трудно представить как это будет в коде. мне нужно ввести новую концепцию расширяющую наследование.

есть класс С1. есть у него методы и атрибуты.
есть наследники которые наследуют от него разные атрибуты и методы.

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

вот этот новый тип наследования.



Я вот тоже не понимаю. Для чего это все?? Как это в коде будет выглядеть???? Это уже не будет наследованием как таковым, просто определение нового класса с какими-то атрибутами.

Я даже не могу представить как это будет выглядеть на диаграмме или в коде....
Т. е. на диаграмме надо будет указать в связи какие же атрибуты переходят от одного класса другому?! Не легче просто новый класс создать?

вообще по селективному наследованию есть патент. но там на уровне компилятора... так что это еще не реализовано и даже не знаю будет ли....



Это просто нарушение принципов правильного ООП - настоятельно рекомендую почитать Мартина - после этого чтива все станет на свои места. Здесь есть небольшое описание http://nvoynov.blogspot.com/2007/02/blog-post.html
С уважением,
Николай



вообще по селективному наследованию есть патент. но там на уровне компилятора... так что это еще не реализовано и даже не знаю будет ли....
О как!!!! Не знал.

Так что Вы от нас хотите??? Как назвать такую связь? Как изобразить? Или что??
Селективное наследование - очень даже подходит.
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Не, братцы, давайте все-таки разбираться.
Мы, конечно, не биологическое наследование тут изобретаем. Нужно все-таки исходить из реалий практики. Связь наследования она, что реализует в ООП: обобщение!!!!! и конкретизацию!!!! Наследование есть часть общей системы классификации. В природе нет такого понятия как классификация, однако есть такое понятие как наследование - генетика это изучает. Однако там все сложнее и круче. Там есть доминирующий ген однако есть и рецессивный ген. Но наше наследование в ООП - это не то наследование. Я вообще не очень улавливаю необходимость селективного наследования. Это значит я делаю офигительный метакласс в котором определяю весь набор хромосом: т.е. весь набор атрибутов и методов, которые могут быть в природе, на которые у меня хватило фантазии, а потом типа наследую от этого супер-пупер-мета-мега-квази-семи-класса свои подклассики с селективным наследованием???? Да мне такой код лучше потом не давайте - это будет какой-то секретный код, санскритская надпись на пасхальных яйцах.

Возьми молодого барашка, а? Возьми молодое вино, да? Разожги костер, вай? Сделай угли, джан? Дай девушке - испортит шашлик, ну е мое что такое, а?

А вообще если серьезно, HelpMePls, если Вам так нужно это селективное наследование, и вы никак не можете обойтись без оного, может Вы скажите что делаете, мы как все общество посмотрим да и выскажем. Я все вот думаю и никак все равно не могу понять идею селективного наследования в программировании. А главное ее большую значимость. Извините тут множественную классификацию еще не разрешили, да и множестенное наследование не во всех языках реализуется, а мы еще пытаемся селективность в наследовании ввести. Необходимсть проистекает из реалности. если это реально приведите пример - ну только не из биологии, пожалуйста. Все-таки мы пока не на том уровне обощения находимся.



<...>у меня такой вопрос как назвать такую операцию "НАСЛЕДОВАНИЯ":
1. пусть есть класс с атррибутами (Atta#) С1{Atta1,Atta2,Atta3}
(*)2. пусть есть класс с атррибутами (Atta#) С2{Atta1,Atta2} который является наследником класса С1. <...>
А это и есть наследование. Только на самом деле C1 является наследником C2, причём C2 - не абстрактный.
Можно, конечно, сказать, что Atta3 переопределён на отсутствующий... Но зачем такие извращения?



Давайте разилчать отсутствие интерфейса от отсутствия реализации всех функций интерфейса.

имхо у С2 всё же будет Atta3 (getAtta3 , setAtta3 ) но возвращать они будут нечто вроде no implemented




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19