Привет всем. Что-то затупил я.
Идея в том, чтобы описать абстрактную струтуру данных, одним из членов которой будет член с типом таким же как сам абстрактный класс (наподобии узлов дерева вложенных один в другой)
Почему нельзя писать вот такое?
public interface IMyInterface
{
IMyInterface Parent{ get; set; }
}
public class MyClass : IMyInterface
{
public MyClass Parent { get; set; }
}
вместо MyClass требует в реализации IMyInterface.
то же самое с абстрактным классом.
Чувствую, что вопрос какой-то простой, как обычно выходят из этой ситуации?
А>Чувствую, что вопрос какой-то простой, как обычно выходят из этой ситуации?
INode<T>?
Re[2]: Реализация абстрактного дерева
От:
Аноним
Дата:
22.07.11 08:08
Оценка:
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Чувствую, что вопрос какой-то простой, как обычно выходят из этой ситуации?
S>INode<T>?
Спасибо. Но по-моему не подойдет.
Дело в том, что в одном и то же дереве нужно хранить объекты различных типов.
Допуcтим есть типы: Тип1, Тип2, Тип3.
И интерфейс: ИнтерфейсА(Name,Parent), который реализуют все типы.
Имеется вложенность: Объект1(Тип1) -> Объект2(Тип2) -> Объект3(Тип3)
так вот хотелось бы, чтобы при обращению, например, к Объект2.Parent, это поле было Тип1,
но при этом, со всеми объектами можно было работать через ИнтерфейсА.
Вертится какой-то паттерн в голове...хотя может я усложняю все.
Здравствуйте, Аноним, Вы писали:
А>Привет всем. Что-то затупил я. А>Идея в том, чтобы описать абстрактную струтуру данных, одним из членов которой будет член с типом таким же как сам абстрактный класс (наподобии узлов дерева вложенных один в другой) А>Почему нельзя писать вот такое? А>
А> public interface IMyInterface
А> {
А> IMyInterface Parent{ get; set; }
А> }
А> public class MyClass : IMyInterface
А> {
А> public MyClass Parent { get; set; }
А> }
А>
А>вместо MyClass требует в реализации IMyInterface. А>то же самое с абстрактным классом. А>Чувствую, что вопрос какой-то простой, как обычно выходят из этой ситуации?
Обычно в такую ситуацию не входят. Нет смысла абстрагировать дерево, дерево это структура (и только структура), а не интрфейс. В отличие от списка кстати. Для решения одних задач может понадобится обобщенное дерево (avl-tree или b+-tree), но в узлах дерева будут данные, которые о дереве не знают. Если тебе нужно чтобы данные в дереве знали о самом дереве, то создавай со спокойной душой классы, которые ссылаются друг на друга.
Re[2]: Реализация абстрактного дерева
От:
Аноним
Дата:
22.07.11 10:05
Оценка:
Здравствуйте, gandjustas, Вы писали:
G>Обычно в такую ситуацию не входят. Нет смысла абстрагировать дерево, дерево это структура (и только структура), а не интрфейс.
Да, вы правы. Пересмотрел концепцию. Лучше пусть мухи отдельно, котлеты отдельно.
Я чувствовал, что где-то поймал сам себя за хвост.=)
Спасибо за помощь!