Cтраница 4
Первый этап заключается в создании пользовательского интерфейса из визуальных компонентов с помощью техники drag-and - drop. Это довольно просто и напоминает рисование картинок в программе Paintbrush, входящей в Windows. Второй этап более сложен, и здесь пригодится книга типа Borland C Builder. Этот этап включает в себя написание кода на Си, который объединяет компоненты формы и определяет работу вашей программы. Пока вам не нужно знать об этом коде. [46]
Одной из интересных особенностей сред типа C Builder является то, что вы редко видите свою программу целиком. C Builder показывает вам те части кода, которые соответствуют отдельным событиям, поэтому обычно вы видите лишь небольшие куски программы. Листинг 7.1 содержит заголовок для программы Scratchpad в ее нынешнем виде. Этот файл целиком сгенерирован C Builder. CPP приведена в листинге 7.2. При написании кода для каждого из оставшихся пунктов меню, ориентируйтесь на только что рассмотренные примеры. Скопируйте код для обработчиков событий OnClick из листинга 7.2. ( Строки комментариев служат для объяснения выполняемых действий. [47]
Как вы узнаете в главе 5, программы, написанные на С, состоят из модулей, или фрагментов, называемых функциями. Пользователь сам может написать необходимые для создания программы функции, однако большинство программистов предпочитают применять уже существующие, которые находятся в стандартной библиотеке С. Таким образом, есть два аспекта изучения языка. Первый - изучение непосредственно С и второй - умение пользоваться стандартной библиотекой. Книга Плогера ( Р192) будет полезна программистам, желающим приобрести глубокие знания и понимание работы стандартных функций, их применения при написании компактных кодов. [48]
![]() |
Результат выполнения программы NewDate с использованием наименования дней и месяцев в соответствии с региональными установками. [49] |
Многие разработчики полагают, что первое решение в любом случае будет наилучшим, поэтому объявление большинства полей защищенными сделает класс более расширяемым и облегчит написание классов-наследников. Однако такой подход нарушает идею инкапсуляции. В большой иерархии классов изменение определения защищенных полей основных классов становится столь же трудным, как изменение глобальных структур данных. Если 10 производных классов обращаются к этим данным, то изменение его определения означает потенциальную необходимость изменения программного кода в каждом из этих 10 классов. Другими словами, удобство, возможность расширения и инкапсуляция часто противоречат друг другу. В таких случаях предпочтение необходимо отдать инкапсуляции. Часто это промежуточное решение может быть получено с помощью виртуального метода. Этот аспект будет рассмотрен в разделе Позднее связывание и полиморфизм. Если вы в ущерб инкапсуляции предпочтете обеспечить быстрое написание про-граммного кода классов-наследников, то может получиться, что ваша разработка не будет отвечать принципам ООП. [50]