Есть определённая жёстко заданная логика — её реализуют публичные классы:
public
function GetOne;
function GetTwo;
Есть абстрактные методы, на место которых будет подставлены методы дочерних классов:
public
procedure Open; abstract;
function TakeOne : type; abstract;
function TakeTwo ; type; abstract;
procedure Close; abstract;
function MyBaseClass.GetOne : type;
begin
Open;
result := TakeOne;
Close
end;
function MyBaseClass.GetTwo;
begin
Open;
result := TakeTwo;
Close;
end;
Каких-либо граблей в таком подходе не видно (кроме Abstract Error).Логика (открыть-взять-закрыть) прописана в базовом классе, хотя детали реализации необходимо реализовать в дочерних. Если нельзя использовать базовый класс для описания логики — то нахрена об вообще нужен?
Почему-то вспомнился диалог, переданный мне моим бывшим непосредственным начальником (нет, начальник наверно никуда не делся — это я поменял работу)
посредственный начальник: — И чтоб через 3 месяца было готово!
непосредственный начальник: — Мы не сможем обрабатывать абсолютно все записи — и будем терять по миллиону в квартал на недовыставленных счетах
посредственный начальник: — Плевать, мы платим 3 миллиона в квартал за аренду софта, который выставляет все счета правильно
Программист знает как работает его код. Если не знает — то он не программист. Как работают всякие подключаемые библиотеки — не знает и знать совершенно не обязан. Заказчик тоже совершенно не обязан понимать тонкости написания программ. Не понимаю в чём пафос статьи.
В 1990 году курс CS50 был КУДА СЛОЖНЕЕ нынешнего, так как не было многих нынешних инструментов программирования и обучения программированию (типа используемой в CS50 разработки Scratch /MIT/). Собственно, не уверен что на курсе CS50 тогда использовался Интернет.
Есть определённая жёстко заданная логика — её реализуют публичные классы:
Есть абстрактные методы, на место которых будет подставлены методы дочерних классов:
Каких-либо граблей в таком подходе не видно (кроме Abstract Error).Логика (открыть-взять-закрыть) прописана в базовом классе, хотя детали реализации необходимо реализовать в дочерних. Если нельзя использовать базовый класс для описания логики — то нахрена об вообще нужен?
посредственный начальник: — И чтоб через 3 месяца было готово!
непосредственный начальник: — Мы не сможем обрабатывать абсолютно все записи — и будем терять по миллиону в квартал на недовыставленных счетах
посредственный начальник: — Плевать, мы платим 3 миллиона в квартал за аренду софта, который выставляет все счета правильно