О сайте

Гимн м/м

Преподы

Знай и умей

Фотогалерея

Законы Мэрфи

Юмор

Антонимы

mmHeroes

Guestbook

Словарь объектно-ориентированного программирования

// Базовый объект
// v 1.0
// Словарь содержит абстрактный набор терминов, необходимых
// для порождения новых версий словаря.

// Поля:
// 1.  Программистам об ООП.
// 2.  Фэнам о программировании (разъяснение устаревших понятий)
// 3.  Руководство по использованию ООП.
// 4.  Выводы и дестракторы.

ООП
   Глубоко ошибается тот, кто считает, что это - объектно-ориентированное программирование. На самом деле, это ОБЪЕКТНО-ОЗАБОЧЕННЫЙ ПРОГРАММИСТ. В жизни определяется по проскакивающим в речи виртуальным дестракторам, уму, отсутствию сообразительности, а также попыткам породить всё и вся от одного абстрактного объекта.

Ошибка
   В ООП - вещь настолько тривиальная, что она не заслуживает дальнейших разъяснений (нормальное состояние объектного проекта).

ОС
   Программа, до которой ООП ещё толком не добрались.

Объект
    1.  Беспредел развития любого программного продукта.
    2.  Образ мышления ООП.

Абстракция
   В общем-то, неплохая штука, но никто не знает, что это такое. Как правило, это становится ясно на заключительных испытаниях программы.

Кострактор
   Некий метод, разрешающий вызывать виртуальные дестракторы. Не бывает виртуальным.

Дестрактор
   Метод, после которого ничего уже вызывать нельзя.

Виртуальный метод
   Свободно замещаемый метод (никогда не известно, чем он окажется, что он делает и делает ли вообще).

Рекурсия
   То же, что и перегрузка стека.

Сбой, Крах, Разрушение
   Несвоевременный вызов дестрактора (см. ОШИБКА).

Ассемблер
   Таблицы, таблицы, таблицы... От него можно унаследовать компилятор, если получится.

Иерархия
   1.  Дерево, в корне которого сущая абстракция.
    2.  Квадратура круга.

Объект-предок
   Объект, стоящий выше кого-либо по иерархии.

Наследование
   Искажение свойств объекта-предка.

Порождение
   См. НАСЛЕДОВАНИЕ (абстрактный метод)

Три
   Волшебное число. Число операторов во всякой объектно-ориентированной программе стремится именно к нему.

Си++, Паскаль 6.0 и выше
   Примерно то же самое, что молоток и плоскогубцы.

"Головная боль"
   Процесс разработки иерархии.

Концепция
   См. АБСТРАКЦИЯ.

Метод
   Дитя-переросток процедур и функций неандертальской фазы развития программирования.

Поле
   Неотъемлемая ненужная составная часть объекта.

Структурное программирование
   Недоразвитый предок объектно-ориентированного программирования.

Бейсик
   Тоже становится объектно-ориентированным языком.

Фортран
   Никогда им не станет (хотя, кто знает...).

Программа
   См. ОБЪЕКТ.

Сообщение
   1.  Объект, который объекты посылают друг другу.
    2.  Объект, посредством которого объекты обмениваются между собой другими объектами.

Инкапсуляция
   Объединение программ, данных и детской неожиданности.

Событие
   См. СООБЩЕНИЕ.

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

Драйвер
   Невидимая часть программы, генерирующая события.

Память
   Абстрактный машинный ресурс, стремящийся к нулю.

Абстрактный метод
   Заголовок, начало и конец. Настоящие абстрактные методы не опускаются до текста внутри себя.

Настоящий программист
   ООП (см.), создающий только абстрактные объекты.

Абстрактный метод
   1.  Объект, не имеющий полей и методов.
    2.  Основа всякого объектно-ориентированного проекта.
    3.  Вершина любой иерархии.
    4.  В крайнем случае, содержащий только абстрактные методы.
    5.  Продукт деятельности настоящего объектно-ориентированного программиста.

Быстродействие
   Критерий предела абстракции в ООП.

Коллекция
   Абстрактный набор абстракций.

Запись
   Объект без методов.

Процедура, Функция
   Метод без объекта.

Переменная
   См. ОБЪЕКТ.

Блок-схема (графа управления)
   Абсолютно никчёмная вещь.

5000 строк
   Нижний предел объёма кода в объектно-ориентированной программе.

Хакер
   См. ООХ.

ООХ
   Объектно-ориентированный хакер. В отличие от ООП (см.) в его речи не проскакивают виртуальные дестракторы, поскольку он уже распределён в статической памяти.

Пиво
   Абстракция.

VMT
   Таблица виртуальных методов.

Множественное наследование
   Групповое искажение свойств нескольких объектов.

Стиль
   Недостатки, присущие только одному программисту.

Человек ниоткуда
   Автор документации на объектно-ориентированную систему.
    // Кто же ещё может вразумительным языком описать все это..
.
destructor Done;virtual;


Выводы и рекомендации.

   1.  Идеальная объектно-ориентированная программа абстрактна.
   2.  Всякий абстрактный метод ничего не делает.
   3.  Всякая идеальная объектно-ориентированная программа ничего не делает.
   4а. Лучшая объекто-ориентированная программа на ПАСКАЛЕ:
    begin
    end.

   4б. Лучшая объектно-ориентированная программа на СИ++:
    main () { }
   5.  We all live in a yellow submarine.


Руководство по использованию объектно-ориентированного подхода.

   Откажитесь от безнадёжно устаревших взглядов на управляющие структуры и операторы. Объекты обмениваются только сообщениями, состоящими из объектов, обменивающихся сообщениями. (Если, прочитав это, вы исторгли крик - можете радоваться, поскольку инстинкт самосохранения у вас ещё на месте. Не закричали? Ещё лучше! Значит, вы уже получили первое крещение и становитесь ООП (или ООХ)).

   Абстрагируйте, абстрагируйте, абстрагируйте. Когда вы почувствуете, что на следующем шаге получится пустота, знайте, что вы приблизились к вершине иерархии вашего проекта.

   Для получения хорошей абстракции ни в коем случае не влезайте в труды по программированию, лучше пропустите рюмашку, походите на голове, пообщайтесь с соратниками, в крайнем случае - погрузитесь в медитацию. Способствует получению хорошей абстракции также присутствие программисток и отдых в горах. Постарайтесь не думать, мысли - источник труднообнаруживаемых и трудноудалимых ошибок.

   Полученную абстракцию можно кодировать.

   Не думайте об объёме памяти. Память - приходяща, а неглубокая иерархия доставит немало хлопот и ощущение неудовлетворённости. Помните, что до получения первого десятка уровней абстракции вы не сможете написать ничего конкретного.

   Никогда не оглядывайтесь на быстродействие машины. Вы просто не представляете, насколько это здорово, когда для передачи сообщения о нажатии на клавишу драйвер опрашивает все объекты, собирает мусор, выносит его на улицу, верифицирует дисковод, а затем посылает сообщение о начинающейся генерации события клавиатуры. В общем-то, он должен проверить ещё и получение события.

   Не используйте готовые библиотеки объектов, ибо нет ничего прекраснее воплощения в код собственного видения мира (или его отсутствия).

   Не обращайте внимания на объём кода и число промежуточных файлов. Программа, обладающая достаточным чувством собственного достоинства никогда не состоит из одного файла и не начинает работать через пять секунд после запуска. Помните, что настоящая объектно-ориентированная программа содержит, как правило, хотя бы два рабочих модуля (из них один - оверлейный), и не менее полусотни вспомогательных файлов, из которых пятнадцать никогда не используются, двадцать нужны только при аварийном завершении работы, в десяти содержится свопинг другой программы, а одного всегда не хватает. Вся эта радость занимает хотя бы 40 мегабайт, а при инсталляции даёт угрожающее здоровью нормального программиста сообщение:
"Освободите 60 мегабайт на устройстве A:" и презрительно отказывается разворачиваться, если условие не выполнено.

   Сделайте в документации пометку красным цветом: "ООП!". Это отпугнёт неискушённых пользователей и настроит всех остальных на верный лад.

   Запуск должен быть торжественным. Промаринуйте пользователя минут пять (за это время поищите недостающие файлы на диске, не беда, если на одном и том же месте - лишь бы завораживающе свистел винчестер и таинственно чернел экран), а если он случайно нажмёт на кнопку или откроет дисковод, можете спокойно аварийно завершать программу - в следующий раз будет осторожнее, поскольку каждый пользователь должен знать, что нельзя беспокоить объектно-ориентированную систему во время инициализации бестолковыми сообщениями с клавиатуры.



Комментарий для особливо любознательных

   Во время начальной загрузки происходят: ни с чем не сравнимое таинство "инициализации" и "разворачивания объектов" (на практике означающее изменение значения нескольких десятков указателей); перегонка из памяти в память объёма, превышающего доступную память раз в сто (для этого и нужны шины с повышенной пропускной способностью); троекратный свопинг; перезагрузки (нередко).


   И ничего не бойтесь.

Заметив, что...

...счётчик строк компиляции соскальзывает на шестизначные числа, - расслабьтесь и получите удовольствие от красоты дисплея.

...нажатие на клавишу обрабатывается две минуты, - не огорчайтесь, всё-таки оно обрабатывается. Мир полон несовершенств, ваша машина - не исключение.

...программа работает, как вам кажется, неправильно, - почитайте книгу по юриспруденции. В конце концов - это только вам так кажется.

...работа подошла к концу :
а)  прогоните её;
б)  задайте себе вопрос
"а зачем это все нужно?";
в)  не получив ответа, можете сдавать продукт.

Назад

Designed by Shumway