-------------------------OOPS2.RUL-------------------------------- public: constructor Init; Объектно-ориентированные программисты всех стран - инкапсулируйтесь! virtual void run(); Фэнам объектно-ориентированного программирования, посвящается. Словарь объектно-ориентированного программирования. {// Базовый объект. //} // v 1.0 // Словарь содержит абстрактный набор терминов, необходимых // для порождения новых версий словаря. // Поля: // 1. Программистам об ООП. // 2. Фэнам о программировании. ( разъяснение устаревших понятий. ) // 3. Руководство по использованию ООП. // 4. Выводы и дестракторы. ООП - глубоко ошибается тот, кто считает, что это - объектно-ориентированное программирование. а самом деле, это ОБЪЕКТО-ОЗАБОЧЕЫЙ ПРОГРАММИСТ. В жизни определяется по проскакивающим в речи виртуальным дестракторам, уму, отсутствию сообразительности, а также попыткам породить все и вся от одного абстрактного объекта. ОШИБКА - в ООП - вещь настолько тривиальная, что она не заслуживает дальнейших разъяснений. ( ормальное состояние объектного проекта. ) ОС - программа, до которой ООП еще толком не добрались. ОБЪЕКТ - 1. Беспредел развития любого программного продукта. 2. Образ мышления ООП. АБСТРАКЦИЯ - в общем-то, неплохая штука, но никто не знает, что это такое. Как правило, это становится ясно на заключительных испытаниях программы. КОСТРАКТОР - некий метод, разрешающий вызывать виртуальные дестракторы. е бывает виртуальным. ДЕСТРАКТОР - метод, после которого ничего уже вызывать нельзя. ВИРТУАЛЬЫЙ МЕТОД - свободно замещаемый метод ( никогда неизвестно, чем он окажется, что он делает и делает ли вообще ). РЕКУРСИЯ - то же, что и перегрузка стека. СБОЙ, КРАХ, РАЗРУШЕИЕ - несвоевременный вызов дестрактора. ( см. ОШИБКА. ) АССЕМБЛЕР - таблицы, таблицы, таблицы... От него можно унаследовать компилятор, если получится. ИЕРАРХИЯ - 1. Дерево, в корне которого сущая абстракция. 2. Квадратура круга. ОБЪЕКТ-ПРЕДОК - объект, стоящий выше кого-либо по иерархии. АСЛЕДОВАИЕ - искажение свойств объекта-предка. ПОРОЖДЕИЕ - см. АСЛЕДОВАИЕ ( Абстрактный метод. ) ТРИ - волшебное число. Число операторов во всякой объектно-ориентированной программе стремится именно к нему. СИ++, ПАСКАЛЬ 6.0 и выше - примерно тоже самое, что молоток и плоскогубцы. "ГОЛОВАЯ БОЛЬ" - процесс разработки иерархии. КОЦЕПЦПИЯ - см. АБСТРАКЦИЯ. МЕТОД - дитя-переросток процедур и функций неандертальской фазы развития программирования. ПОЛЕ - неотъемлемая ненужная составная часть объекта. СТРУКТУРОЕ ПРОГРАММИРОВАИЕ - недоразвитый предок объектно-ориентированного программирования. БЕЙСИК - тоже становится объектно-ориентированным языком. ФОРТРА - никогда им не станет. ( Хотя, кто знает... ) ПРОГРАММА - см. ОБЪЕКТ. СООБЩЕИЕ - 1.Объект, который объекты посылают друг другу. 2. Объект, посредством которого объекты обмениваются между собой другими объектами. ИКАПСУЛЯЦИЯ - объединение программ, данных и детской неожиданности. СОБЫТИЕ - см. СООБЩЕИЕ. ПОЛИМОРФИЗМ - концепция, руководствуясь которой вы никогда не сможете точно сказать, что делает отдельно взятый объект. ДРАЙВЕР - невидимая часть программы, генерирующая события. ПАМЯТЬ - абстрактный машинный ресурс, стремящийся к нулю. АБСТРАКТЫЙ МЕТОД - заголовок, начало и конец. астоящие абстрактные методы не опускаются до текста внутри себя. АСТОЯЩИЙ ПРОГРАММИСТ - ООП (см.), создающий только абстрактные объекты. АБСТРАКТЫЙ ОБЪЕКТ - 1. Объект, не имеющий полей и методов. 2. Основа всякого объектно-ориентированного проекта. 3. Вершина любой иерархии. 4. В крайнем случае, содержащий только абстрактные методы. 5. Продукт деятельности настоящего объектно-ориентированного программиста. БЫСТРОДЕЙСТВИЕ - критерий предела абстракции в ООП. КОЛЛЕКЦИЯ - абстрактный набор абстракций. СОБЫТИЕ - объект, возникающий в результате чего-либо. ЗАПИСЬ - объект без методов. ПРОЦЕДУРА, ФУКЦИЯ - метод без объекта. ПЕРЕМЕАЯ - см. ОБЪЕКТ. БЛОК-СХЕМА (ГРАФ УПРАВЛЕИЯ) - абсолютно никчемная вещь. 5000 СТРОК - нижний предел объема кода в объектно-ориентированной программе. ХАКЕР - см. ООХ. ООХ - объектно-ориентированный хакер. В отличие от ООП (см.) в его речи не проскакивают виртуальные дестракторы поскольку он уже распределен в статической памяти. ПИВО - абстракция. VMT - таблица виртуальных методов. МОЖЕСТВЕОЕ АСЛЕДОВАИЕ - групповое искажение свойств нескольких объектов. СТИЛЬ - недостатки, присущие только одному программисту. ЧЕЛОВЕК ИОТКУДА - автор документации на объектно-ориентированную систему. // Кто же еще может вразумительным языком описать все это... // I don't Know how Cpp Programmers programming tHeir Programms // to pascal 7.0 ,6.0 or another $$$$g programs object(borland) productions // fat's rem destructor Done;virtual; Выводы и рекомендации. 1. Идеальная объектно-ориентированная программа абстрактна. 2. Всякий абстрактный метод ничего не делает. 3. Всякая идеальная объектно-ориентированная программа ничего не делает. 4а.Лучшая объекто-ориентированная программа на ПАСКАЛЕ : begin end. 4б.Лучшая объектно-ориентированная программа на СИ++ : main(){} 5. We all live in a yellow submarine. Руководство по использованию объектно-ориентированного подхода. Откажитесь от безнадежно устаревших взглядов на управляющие структуры и операторы. Объекты обмениваются только сообщениями, состоящими из объектов, обменивающихся сообщениями. ( Если, прочитав это, вы исторгли крик - можете радоваться, поскольку инстинкт самосохранения у вас еще на месте. е закричали? Еще лучше! Значит, вы уже получили первое крещение и становитесь ООП.( или ООХ ) ) Абстрагируйте, абстрагируйте, абстрагируйте. Когда вы почувствуете, что на следующем шаге у получится пустота, знайте, что вы приблизились к вершине иерархии вашего проекта. Для получения хорошей абстракции ни в коем случае не влезайте в труды по программированию, лучше пропустите рюмашку, походите на голове, пообщайтесь с соратниками, в крайнем случае - погрузитесь в медитацию. Способствует получению хорошей абстракции также присутствие программисток и отдых в горах. Постарайтесь не думать, мысли - источник труднообнаруживаемых и трудноудалимых ошибок. Полученную абстракцию можно кодировать. е думайте об объеме памяти. Память - приходяща, а неглубокая иерархия доставит немало хлопот и ощущение неудовлетворенности. Помните, что до получения первого десятка уровней абстракции вы не сможете написать ничего конкретного. икогда не оглядывайтесь на быстродействие машины. Вы просто не представляете, насколько это здорово, когда для передачи сообщения о нажатии на клавишу драйвер опрашивает все объекты, собирает мусор, выносит его на улицу, верифицирует дисковод, а затем посылает сообщение о начинающейся генерации события клавиатуры. В общем-то, он должен проверить еще и получение события. е используйте готовые библиотеки объектов, ибо нет ничего прекраснее воплощения в код собственного видения мира ( или его отсутствия ). е обращайте внимания на объем кода и число промежуточных файлов. Программа, обладающая достаточным чувством собственного достоинства никогда не состоит из одного файла и не начинает работать через пять секунд после запуска. Помните, что настоящая объектно-ориентированная программа содержит, как правило, хотя бы два рабочих модуля ( из них один - оверлейный ), и не менее полусотни вспомогательных файлов, из которых пятнадцать никогда не используются, двадцать нужны только при аварийном завершении работы, в десяти содержится свопинг другой программы, а одного всегда не хватает. Вся эта радость занимает хотя бы 40 мегабайт, а при инсталляции дает угрожающее здоровью нормального программиста сообщение :"Освободите 60 мегабайт на устройстве A:" и презрительно отказывается разворачиваться, если условие не выполнено. Сделайте в документации пометку красным цветом :"ООП!". Это отпугнет неискушенных пользователей и настроит всех остальных на верный лад. Запуск должен быть торжественным. Промаринуйте пользователя минут пять ( за это время поищите недостающие файлы на диске, не беда, если на одном и том же месте - лишь бы завораживающе свистел винчестер и таинственно чернел экран ), а если он случайно нажмет на кнопку или откроет дисковод, можете спокойно аварийно завершать программу - в следующий раз будет осторожнее, поскольку каждый пользователь должен знать, что нельзя беспокоить объектно-ориентированную систему во время инициализации бестолковыми сообщениями с клавиатуры. {*** Комментарий для особливо дюбознательных **** Во время начальной загрузки происходит ни с чем не сравнимое таинство "инициализации" и "разворачивания объектов", на практике означающее изменение значения нескольких десятков указателей; перегонки из памяти в память объема, превышающего доступную память раз в сто ( для этого и нужны шины с повышенной пропускной способностью ); троекратного свопинга; перезагрузки ( нередко ). ***} И ничего не бойтесь. Заметив, что... ...счетчик строк компиляции соскальзывает на шестизначные числа, - расслабтесь и получите удовольствие от красоты дисплея. ...нажатие на клавишу обрабатывается две минуты, - не огорчайтесь, все-таки оно обрабатывается. Мир полон несовершенств, ваша машина - не исключение. ...программа работает, как вам кажется, неправильно, - почитайте книгу по юриспруденции. В конце концов - это только вам так кажется. ...работа подошла к концу : а) прогоните ее; б) задайте себе вопрос, а зачем это все нужно ?; в) не получив ответа, можете сдавать продукт. * * * * * ТРАКТАТЪ О ПУСТОТЕ. begin end. -------------------------------------------------------------------