История изменений
Исправление alysnix, (текущая версия) :
все эти трюки с декораторами, датасорсами и ненаследованием можно провернуть и в с++. руст для этого не нужен. это просто будет такой особенный способ разработки классов.
итак вместо понятия window(у вас это widget) - котрое в соотв. с принципом лисков и было базовым классом, понятием tree_view - которое было реализацией контрола с деревом внутри(которое тоже в соотв с принципов лисков есть window)… то есть у меня есть два понятия .. вы предлагаете что? - widget, tree_view_decorator, tree_view_data_source, tree_view_trait, default_tree_view_trait_impl_as_widget?
код на псевдо-с++
import tree_view;
///класс tree_vew с индентацией элементов - 20
class tree_view_20: public tree_view {
///конструктор что создаст окно с индентацией = 20
tree_view_20() {
this->set_indent(20);
}
}
использование:
///в некий book вставляем страницу c таким контролом
some_book_control->add_page(new tree_view_20());
заметим, что в данном коде в синтаксисе псевдо-с++ строго записано следующее формальное высказывание:
«класс tree_view_20 есть tree_view, у которого изаначально установлена индентация 20»
как в общем виде такое написать на руст, если у нас есть гипотетическая рустовая библиотека виджетов? у меня всего 5 значащих строчек(если скобки не считать). давайте псевдокод. и какое высказывание будет в нем выражено (это важно, ибо будет показывать ту логику в которой определяются классы в русте)
Исправление alysnix, :
все эти трюки с декораторами, датасорсами и ненаследованием можно провернуть и в с++. руст для этого не нужен. это просто будет такой особенный способ разработки классов.
итак вместо понятия window(у вас это widget) - котрое в соотв. с принципом лисков и было базовым классом, понятием tree_view - которое было реализацией контрола с деревом внутри(которое тоже в соотв с принципов лисков есть window)… то есть у меня есть два понятия .. вы предлагаете что? - widget, tree_view_decorator, tree_view_data_source, tree_view_trait, default_tree_view_trait_impl_as_widget?
код на псевдо-с++
import tree_view;
///класс tree_vew с индентацией элементов - 20
class tree_view_20: public tree_view {
///конструктор что создаст окно с индентацией = 20
tree_view_20() {
this->set_indent(20);
}
}
использование:
///в некий book вставляем страницу c таким контролом
some_book_control->add_page(new tree_view_20());
как в общем виде такое написать на руст, если у нас есть гипотетическая рустовая библиотека виджетов? у меня всего 5 значащих строчек(если скобки не считать). давайте псевдокод.
Исходная версия alysnix, :
все эти трюки с декораторами, датасорсами и ненаследованием можно провернуть и в с++. руст для этого не нужен. это просто будет такой особенный способ разработки классов.
итак вместо понятия window(у вас это widget) - котрое в соотв. с принципом лисков и было базовым классом, понятием tree_view - которое было реализацией контрола с деревом внутри(которое тоже в соотв с принципов лисков есть window)… то есть у меня есть два понятия .. вы предлагаете что? - widget, tree_view_decorator, tree_view_data_source, tree_view_trait, default_tree_view_trait_impl_as_widget?
код на псевдо-с++
import tree_view;
///класс tree_vew с индентацией элементов - 20
class tree_view_20: public tree_view {
///конструктор что создаст окно с индентацией = 20
tree_view_20() {
this->set_indent(20);
}
}
использование:
///в некий book вставляем страницу c таким контролом
some_book_control->add_page(new tree_control_20());
как в общем виде такое написать на руст, если у нас есть гипотетическая рустовая библиотека виджетов? у меня всего 5 значащих строчек(если скобки не считать). давайте псевдокод.