24 выпуск
|
||||||||||||
От ведущего Приветствую! Рад видеть вас в очередном выпуске Клуба программистов! Сегодня мы с вами продолжим читать об KOL & MCK , уже вот вторая часть. А также, куча анекдотов, на этот раз НЕ про программистов, а про жизнь! И еще, некоторые интересные темы с нашего Форума программистов . |
||||||||||||
__________________________________________________________ |
||||||||||||
KOL и MCK - компактные программы на Delphi (часть 2) При разработке библиотеки KOL это обстоятельство было учтено. Автору пришлось отказаться от жесткого следования канонам объектно-ориентированного программирования. В частности, в KOL один и тот же объектный тип может использоваться для инкапсуляции нескольких подобных друг другу объектов. Например, тип TControl не является базовым для описания визуальных объектов подобно тому, как это сделано в VCL. Представители объектного типа TControl в библиотеке KOL уже без какого-либо наследования могут выполнять роль различных визуальных объектов (кнопок, меток, панелек, и т.п.) - в зависимости от того, какая глобальная функция использовалась для конструирования каждого конкретного объекта (например, NewPanel, NewButton и т.д.)
Такое совмещение
нескольких объектов в одном объектном типе, вообще говоря, может приводить
к некоторой путанице, поскольку наряду с методами и свойствами, общими для
всех объектов, инкапсулированных этим объектным типом, могут иметься
методы и свойства сугубо индивидуальные, характерные только для некоторой
конкретной разновидности объектов. Поскольку тип (класс) тот же самый,
существует вероятность ошибочного применения метода, не свойственного для
данной разновидности объекта. Единственная причина, заставившая автора
поступать так, это необходимость избежать большого числи виртуальных
методов.
В противоположность
VCL, библиотека KOL поступает с необязательными действиями и объектами
значительно более аккуратно. Они (действия) выполняются и (объекты)
инициализируются только тогда, когда они впервые потребуются. Очистка
ресурсов и памяти по завершении использования при этом проблем как раз не
представляет. Один и тот же (виртуальный) метод Free прекрасно справляется
с освобождением отработавших подчиненных объектов, независимо от их типа.
Собственно, это и есть главная причина того, почему программы,
изготовленные с использованием библиотеки KOL, настолько кодоэкономичны.
Как известно, исходный текст программы превращается в исполняемый машинный код в результате работы иногда нескольких программ: прекомпилятора, компилятора, сборщика. Отметим, что когда речь идет о среде Delphi, разделять эти шаги особого смысла не имеет, так как все они выполняются одной и той же программой. Поэтому, говоря "компилятор", будем подразумевать все эти этапы вместе. Поскольку именно компилятор Delphi принимает решение, подключать или не подключать код той или иной процедуры к программе, откладывание решения о необходимости ее использования путем первого обращения к ней в коде только тогда, когда ее функциональность оказалась востребована разработчиком проекта, требует пояснения.
На самом деле, все
очень просто разъясняется слеующим небольшим примером. Пусть наш
визуальный объект (кнопка, к примеру) содержит свойство Font (шрифт). В
отличие от VCL, не будем создавать подчиненный объект, соответствующий
этому свойству, в конструкторе нашего объекта (кнопки, хозяина шрифта).
Создадим его в том методе, который выполняет чтение свойства Font (в
методе GetFont), в случае если он еще не создан. В итоге, если в
приложении к свойству Font нигде нет обращений (т.е. разработчику не было
нужды изменять шрифт своих визуальных объектов, и его устраивают
стандартные шрифты, настроенные пользователем), компилятор не обнаружит и
ни одного вызова метода GetFont, и соответственно, не включит в программу
код этого метода. Следовательно, ни одной ссылки не будет обнаружено ни на
конструктор объекта шрифта, ни на другие процедуры, которые иначе бы
оказались задействованы и попали бы в исполнимый модуль.
Продолжение будет в следующем выпуске. А потом и в Клубе ))) |
||||||||||||
__________________________________________________________ |
||||||||||||
Интересненькое с Форума программмистов ! Есть у нас на форуме такой раздел интересный, называется "Свободное общение", так вот там очень много интересных тем! О них я и хочу вам сегодня рассказать! В этой теме хотелось бы поговорить об всем известным онлайн играм, в частности RPG. Вот. Какие самые интересные, популярные,и вообще какова "онлайн-игро-индустрия", много ли таких игр в сети, может кто-то частенько в таковые играет? *** Сейчас вижу все больше и больше людей, которые работают в этой сфере без образования. А есть ли образование у Вас? ***
Я видел очень много методик,
стилей программирования, но по них разве что язык выучить можно. Но какая
при программинге должна быть логика? Как нужно относится к компьютеру и к
создаваемой программе? Как нужно их осознавать?
*** Предлагаем как и где улучшить форум. Может че надо дополнить, может че надо убрать. Приглашаем всех на " Форум программистов " |
||||||||||||
__________________________________________________________ |
||||||||||||
Немного юмора
Сообразили два зайца в лесу на пузырек
водки, а закуски нету.
На следующий день опять с бутылкой к
вороне:
На третий день снова с бутылкой к
вороне:
***
Туристы попадают в руки
людоедов. Вождь говорит:
***
Windows - винчестеру:
***
Star Wind: Бля,
приветик!
***
Сидит программист глубоко в
отладке. Подходит сынишка:
***
Hа уроке литературы в
компьютерном лицее:
***
Диалог между програмистом и его
женой после работы:
Юмор от членов клуба программистов здесь . |
||||||||||||
__________________________________________________________ |
||||||||||||
Программистам на заметку Если у вас есть желание поделиться своим опытом с читателями, вы являетесь обладателем ценных, интересных статей или авторских программ, а может вы просто хотите высказать свое мнение или замечание о рассылке, просто напишите мне . Я постараюсь уделить внимание каждому. А " Клуб программистов " всегда рад приветствовать в своих рядах новых пользователей. |
||||||||||||
© 2006, Кочари Арнольд и "Клуб программистов" |