Если не брать во внимание какой-либо конкретный язык, а рассуждать в рамках программирования,
то как выглядит
множественное наследование в канонах ООП?
Прошу объяснить на своем наболевшем примере - есть класс Node с методами next, prev и есть класс
Task с его execute. Так же есть класс List c inser,Node removeNode.
И вот теперь я хочу получить класс реализующий поведение и Task и Node. Это нормально?
То есть, по сути я хочу реализовать третий класс коллекцию или в моем случаи List, который
будет оперировать нодами-тасками, но до тех пор, пока сам не станет нодой. То есть он для своих
детей будет главным узлом, но в глобальном масштабе будет обычным листом.
Но так как у меня все листы таски, то и сам узел должен быть ещё и таском. Вот как это выглядит
со стороны ООП и со стороны
множественного наследования?
В моем случаи это даже не множественное наследование, а множественная реализация интерфейсов
INode, ITask и IList ( IList, это очень сильно сказано, потому что есть ещё один интерфейс, который предоставляет один метод set, в реализации которого происходит вставка переданного объекта в текущий this.next = устанавливаемый метод).
Что скажите?
Для наглядности немного кода...
interface INode {
next: INode
prev: INode
}
interface ITask {
execute(): void;
}
interface ISet {
insert(target: INode): void;
};
class SomeClass implements INode, ITask, ISet{
next: INode;
prev: INode;
execute():void {}
insert(target: INode):void
{
// и здесь просиходит установка таргета
this.next = target;
target.prev = this;
}
}
UPD:1
Спасибо всем за развернутые ответы. Сегодня, продолжая делать вчерашнее, первым что пришло в голову, это строение списка отображения. У языков, которые имеют дисплей лист, есть такие понятия, как parent и child. То есть, если я объект списка отображения и в меня вложены другие объекты списки отображения, то они child. Если меня добавят в точно такой же объект списка отображения, то я стану его чилдом, а так же у меня появится парент. Так же у меня, как у объекта дисплей листа, есть методы для добавления в меня детей.
Этот пример прям мой случай! Только как реализовано хранение детей и парентов?
У меня, как у объекта списка отображения есть лист списка отображения, которым у
меня компазиционные отношения? Или же там тоже next - prew и т.д.?