LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Собственно, это классическая реализация ad-hoc полиморфизма и ООП, которая много где используется, независимо от ЯП.

В том же GObject, входящем в состав glib, реализована довольно богатая модель, позволяющая в том числе создавать не только деревья наследования, но и абстрактные интерфейсы, и затем реализовывать данные интерфейсы в произвольном классе.

Код, работающий с интерфейсом некоторого объекта, может вообще ничего не знать о данном объекте, кроме того, что объект реализует заданный интерфейс. (Эту информацию можно получить в рантайме.)

Собственно gtk мог бы быть намного более гибким и универсальным тулкитом, если бы там возможности этого ООП использовались по максимуму в рамках разумного подхода к проектированию программных интерфейсов виджетов.

Но там слишком много было сделано по типу «и так сойдёт». Там, где следовало бы использовать интерфейс, вместо этого делали базовый класс; а там, где базовый класс - хадкодили какой-нибудь код. Потом от этих ошибок уже не избавиться без слома совместимости.

Исходная версия wandrien, :

Собственно, это классическая реализация ad-hoc полиморфизма, которая много где используется, независимо от ЯП.

В том же GObject, входящем в состав glib, реализована довольно богатая модель, позволяющая в том числе создавать не только деревья наследования, но и абстрактные интерфейсы, и затем реализовывать данные интерфейсы в произвольном классе.

Код, работающий с интерфейсом некоторого объекта, может вообще ничего не знать о данном объекте, кроме того, что объект реализует заданный интерфейс. (Эту информацию можно получить в рантайме.)

Собственно gtk мог бы быть намного более гибким и универсальным тулкитом, если бы там возможности этого ООП использовались по максимуму в рамках разумного подхода к проектированию программных интерфейсов виджетов.

Но там слишком много было сделано по типу «и так сойдёт». Там, где следовало бы использовать интерфейс, вместо этого делали базовый класс; а там, где базовый класс - хадкодили какой-нибудь код. Потом от этих ошибок уже не избавиться без слома совместимости.