Разместите нашу кнопку!

Новые статьи:

Programming articles

Создание сайтов на шаблонах

Множество вариантов работы с графикой на канве

Шифруем файл с помощью другого файла

Перехват API функций - Основы

Как сделать действительно хороший сайт

Создание почтового клиента в Delphi 7

Применение паскаля для решения геометрических задач

Управление windows с помощью Delphi

Создание wap сайта

Операционная система unix, термины и понятия

SQL враг или друг

Возникновение и первая редакция ОС UNIX

Оптимизация проекта в Delphi

Ресурсы, зачем нужны ресурсы

Термины программистов 20 века

Советы по созданию собственного сайта с нуля

Шифруем файл с помощью пароля

Фракталы - геометрия природы

Crypt - Delphi программа для шифрования

Рассылка, зачем она нужна и как ее организовать?

Учебник по C++ для начинающих программистов

Уроки для изучения ассемблера

Загадочный тип PCHAR

Средства по созданию сайтов

Операторы преобразования классов is и as

Borland Developer studio 2006. Всё в одном

Создание базы данных в Delphi, без сторонних БД


Software engineering articles



Архив рассылки

    В нашей рассылке вы узнаете о новых статьях, программах, и темах на форуме. Рассылка выходит один раз в неделю, каждый четверг.
Подписаться на рассылку можно в этой форме:
Клуб программистов
Последний выпуск

24 выпуск

КЛУБ ПРОГРАММИСТОВ

в рассылке статьи, ссылки, инфо и многое другое о программировании и программистах

Новости

Лабораторные работы

Справочники

Книги

Основы Delphi

Клуб

Чат

Форум

От ведущего

Приветствую! Рад видеть вас в очередном выпуске Клуба программистов! Сегодня мы с вами продолжим читать об KOL & MCK , уже вот вторая часть.

А также, куча анекдотов, на этот раз НЕ про программистов, а про жизнь! И еще, некоторые интересные темы с нашего Форума программистов .

__________________________________________________________

 

KOL и MCK - компактные программы на Delphi (часть 2)

При разработке библиотеки KOL это обстоятельство было учтено. Автору пришлось отказаться от жесткого следования канонам объектно-ориентированного программирования. В частности, в KOL один и тот же объектный тип может использоваться для инкапсуляции нескольких подобных друг другу объектов. Например, тип TControl не является базовым для описания визуальных объектов подобно тому, как это сделано в VCL. Представители объектного типа TControl в библиотеке KOL уже без какого-либо наследования могут выполнять роль различных визуальных объектов (кнопок, меток, панелек, и т.п.) - в зависимости от того, какая глобальная функция использовалась для конструирования каждого конкретного объекта (например, NewPanel, NewButton и т.д.)

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

Разумеется, если бы виртуальные методы благополучно пропускались компилятором в тех случаях, когда они не нужны (а потенциально такая возможность существует), структуру объектов можно было бы сделать более ясной. Тем не менее, даже и в этом случае VCL не позволил бы программам стать намного компактнее. И проблема здесь уже в том, что разработчики VCL спроектировали свою библиотеку так, что многие объекты создаются и многие действия производятся еще до того, как будет известно, понадобятся ли они вообще, или так и останутся лежать в коде программы мертвым грузом. Например, если создается визуальный объект, то для него инициализируется шрифт, полотно для рисования, менеджеры перетаскивания, множество других объектов - на всякий случай: а вдруг понадобятся! Конечно, программе может понадобиться что-нибудь нарисовать, или изменить какой-нибудь шрифт. Программа может быть спроектирована для использования популярного интерфейса расположения плавающих панелей drag-and-dock. Может, но ведь не обязана, так?

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

Как известно, исходный текст программы превращается в исполняемый машинный код в результате работы иногда нескольких программ: прекомпилятора, компилятора, сборщика. Отметим, что когда речь идет о среде Delphi, разделять эти шаги особого смысла не имеет, так как все они выполняются одной и той же программой. Поэтому, говоря "компилятор", будем подразумевать все эти этапы вместе. Поскольку именно компилятор Delphi принимает решение, подключать или не подключать код той или иной процедуры к программе, откладывание решения о необходимости ее использования путем первого обращения к ней в коде только тогда, когда ее функциональность оказалась востребована разработчиком проекта, требует пояснения.

На самом деле, все очень просто разъясняется слеующим небольшим примером. Пусть наш визуальный объект (кнопка, к примеру) содержит свойство Font (шрифт). В отличие от VCL, не будем создавать подчиненный объект, соответствующий этому свойству, в конструкторе нашего объекта (кнопки, хозяина шрифта). Создадим его в том методе, который выполняет чтение свойства Font (в методе GetFont), в случае если он еще не создан. В итоге, если в приложении к свойству Font нигде нет обращений (т.е. разработчику не было нужды изменять шрифт своих визуальных объектов, и его устраивают стандартные шрифты, настроенные пользователем), компилятор не обнаружит и ни одного вызова метода GetFont, и соответственно, не включит в программу код этого метода. Следовательно, ни одной ссылки не будет обнаружено ни на конструктор объекта шрифта, ни на другие процедуры, которые иначе бы оказались задействованы и попали бы в исполнимый модуль.
 

Продолжение будет в следующем выпуске. А потом и в Клубе )))

__________________________________________________________

 

Интересненькое с Форума программмистов !

Есть у нас на форуме такой раздел интересный, называется "Свободное общение", так вот там очень много интересных тем! О них я и хочу вам сегодня рассказать!

On-line Games

В этой теме хотелось бы поговорить об всем известным онлайн играм, в частности RPG. Вот. Какие самые интересные, популярные,и вообще какова "онлайн-игро-индустрия", много ли таких игр в сети, может кто-то частенько в таковые играет?

***

Учились ли Вы на программера?

Сейчас вижу все больше и больше людей, которые работают в этой сфере без образования. А есть ли образование у Вас?

***

Философия программинга

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

***

К ак улучшить форум...

Предлагаем как и где улучшить форум. Может че надо дополнить, может че надо убрать.

Приглашаем всех на " Форум программистов "

__________________________________________________________

 

Немного юмора

Сообразили два зайца в лесу на пузырек водки, а закуски нету.
Решили пойти к вороне.
Нашли ворону на ветке, а в клюве у нее сыр.
- Привет, ворона! Она молчит…
- Выпить хошь?
- ДА!
Сыр падает и зайцы убегают.

На следующий день опять с бутылкой к вороне:
- Ворона, выпить хошь?
Молчание…
Заяц, наливая в стакан, спрашивает:
- Столько хватит?
- ДА!
Сыр падает, зайцы убегают.

На третий день снова с бутылкой к вороне:
- Ворона, выпить хошь?
Молчание…
Заяц, наливая в стакан:
- Столько хватит? Молчание…
- Ворона, ты что думаешь, мы тебя обмануть хотим?
- ДА!!!!

***

Туристы попадают в руки людоедов. Вождь говорит:
Кто расскажет новый анекдот - того отпустим…
Предупреждаю - интернет есть!

***

Windows - винчестеру:
- Ты слишком много знал…

***

Star Wind: Бля, приветик!
Yulia_On_Work: Ничего себе приветствие ((
Star Wind: Ой палец соскользнул. Я хотел “Юля” написать, а получилось “Бля”.
Star Wind: ЮЛЯ… имя у тебя красивое.. тока писать его неудобно… бля…

***

Сидит программист глубоко в отладке. Подходит сынишка:
- Папа, почему солнышко каждый день встает на востоке, а садится на западе?
- Ты это проверял?
- Проверял.
- Хорошо проверял?
- Хорошо.
- Работает?
- Работает.
- Каждый день работает?
- Да, каждый день.
- Тогда ради бога, сынок, ничего не трогай, ничего не меняй.

***

Hа уроке литературы в компьютерном лицее:
- Герасим был это… этим…
- Hу, звуковой карты у него не было.

***

Диалог между програмистом и его женой после работы:
Муж пришел домой: Good evening dear, I`m now logged in.
Жена: Ты купил хлеба?
Муж: Bad command or filename.
Жена: Но я тебя попросила еще утром.
Муж: Erroneous syntax. Abort?
Жена: Как насчет нового телевизора?
Муж: Variable not found…
Жена: По крайней мере, дай мне свою кредитку, я хочу сходить в магазин.
Муж: Sharing Violation. Access denied…
Жена: Ты меня любишь или любишь только компьютеры или ты просто издеваешься надо мной?
Муж: Too many parameters…
Жена: Зря я вышла за тебя замуж.
Муж: Data type mismatch.
Жена: Ты вообще бестолковый…
Муж: It`s by Default.
Жена: Как насчет твоей зарплаты?
Муж: File in use… Try after some time.
Жена: Какое у меня положение в нашей семье?
Муж: Unknown Virus

Юмор от членов клуба программистов здесь .

__________________________________________________________

 

Программистам на заметку

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

 

© 2006, Кочари Арнольд и "Клуб программистов"