Главная страница
Навигация по странице:

  • Часть 1. Программирование на языке Delphi Предисловие

  • Краткий экскурс в историю Языки программирования

  • Объектно-ориентированное программирование

  • Визуальное программирование

  • Среда программирования Delphi

  • Среда программирования Kylix

  • ... и опять среда Delphi

  • Что вы найдете в этой книге

  • Возможные трудности освоения

  • Учебное пособие для студентов Авторы А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько Содержание Содержание 1


    Скачать 2.61 Mb.
    НазваниеУчебное пособие для студентов Авторы А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько Содержание Содержание 1
    Дата15.01.2023
    Размер2.61 Mb.
    Формат файлаdoc
    Имя файлаlab_OOTP.doc
    ТипУчебное пособие
    #886736
    страница1 из 33
      1   2   3   4   5   6   7   8   9   ...   33

    Объектно-ориентированное программирование на языках Delphi и C++

    Учебное пособие для студентов


    Авторы: А.Н. Вальвачев, К.А. Сурков,
    Д.А. Сурков, Ю.М. Четырько

    Содержание

    Содержание 1

    Часть 1. Программирование на языке Delphi 8

    Предисловие 8

    Краткий экскурс в историю 8

    Языки программирования 8

    Объектно-ориентированное программирование 9

    Визуальное программирование 9

    Среда программирования Delphi 9

    Технология Java 9

    Среда программирования Kylix 10

    Технология .NET 11

    ... и опять среда Delphi 11

    Что вы найдете в этой книге 11

    Возможные трудности освоения 12

    Глава 1. Основы визуального программирования 12

    1.1. Краеугольные камни визуального программирования 12

    1.2. Подготовка к работе 14

    1.3. Первый запуск среды Delphi 16

    1.4. Исследуем среду разработки программ 18

    1.5. Первая программа 25

    1.6. Итоги 32

    Глава 2. Основы языка Delphi 32

    2.1. Алфавит 32

    2.1.1. Буквы 32

    2.1.2. Числа 33

    2.1.3. Слова-идентификаторы 34

    2.1.4. Комментарии 36

    2.2. Данные 37

    2.2.1. Понятие типа данных 37

    2.2.2. Константы 37

    2.2.3. Переменные 38

    2.3. Простые типы данных 39

    2.3.1. Целочисленные типы данных 39

    2.3.2. Вещественные типы данных 40

    2.3.3. Символьные типы данных 40

    2.3.4. Булевские типы данных 41

    2.3.5. Определение новых типов данных 42

    2.3.6. Перечисляемые типы данных 42

    2.3.7. Интервальные типы данных 42

    2.3.8. Временной тип данных 43

    2.3.9. Типы данных со словом type 43

    2.4. Операции 44

    2.4.1. Выражения 44

    2.4.2. Арифметические операции 44

    2.4.3. Операции отношения 45

    2.4.4. Булевские операции 46

    2.4.5. Операции с битами 47

    2.4.6. Очередность выполнения операций 48

    2.5. Консольный ввод-вывод 48

    2.5.1. Консольное приложение 48

    2.5.2. Консольный вывод 50

    2.5.3. Консольный ввод 50

    2.6. Структура программы 51

    2.6.1. Заголовок программы 51

    2.6.2. Подключение модулей 51

    2.6.3. Программный блок 52

    2.7. Операторы 52

    ­2.7.1. Общие положения 52

    2.7.2. Оператор присваивания 53

    2.7.3. Оператор вызова процедуры 53

    2.7.4. Составной оператор 53

    2.7.5. Оператор ветвления if 54

    2.7.6. Оператор ветвления case 56

    2.7.7. Операторы повтора — циклы 57

    2.7.8. Оператор повтора for 57

    2.7.9. Оператор повтора repeat 59

    2.7.10. Оператор повтора while 60

    2.7.11. Прямая передача управления в операторах повтора 60

    2.7.12. Оператор безусловного перехода 61

    2.8. Подпрограммы 62

    2.8.1. Общие положения 62

    2.8.2. Стандартные подпрограммы 63

    2.8.3. Процедуры программиста 67

    2.8.4. Функции программиста 68

    2.8.5. Параметры процедур и функций 69

    2.8.6. Опущенные параметры процедур и функций 71

    2.8.7. Перегрузка процедур и функций 72

    2.8.8. Соглашения о вызове подпрограмм 73

    2.8.9. Рекурсивные подпрограммы 74

    2.8.10. Упреждающее объявление процедур и функций 75

    2.8.11. Процедурные типы данных 75

    2.9. Программные модули 76

    2.9.1. Структура модуля 76

    2.9.2. Стандартные модули языка Delphi 80

    2.9.3. Область действия идентификаторов 81

    2.10. Строки 81

    2.10.1. Строковые значения 81

    2.10.2. Строковые переменные 82

    2.10.3. Строки в формате Unicode 82

    2.10.4. Короткие строки 83

    2.10.5. Операции над строками 83

    2.10.6. Строковые ресурсы 84

    2.10.7. Форматы кодирования символов 85

    2.10.8. Стандартные процедуры и функции для работы со строками 85

    2.11. Массивы 91

    2.11.1. Объявление массива 91

    2.11.2. Работа с массивами 91

    2.11.3. Массивы в параметрах процедур и функций 92

    2.11.4. Уплотнение структурных данных в памяти 94

    2.12. Множества 94

    2.12.1. Объявление множества 94

    2.12.2. Операции над множествами 94

    2.13. Записи 96

    2.13.1. Объявление записи 96

    2.13.2. Записи с вариантами 97

    2.14. Файлы 98

    2.14.1. Понятие файла 98

    2.14.2. Работа с файлами 98

    2.14.3. Стандартные подпрограммы управления файлами 100

    2.15. Указатели 102

    2.15.1. Понятие указателя 102

    2.15.2. Динамическое распределение памяти 104

    2.15.3. Операции над указателями 106

    2.15.4. Процедуры GetMem и FreeMem 106

    2.16. Представление строк в памяти 107

    2.17. Динамические массивы 110

    2.18. Нуль-терминированные строки 112

    2.19. Переменные с непостоянным типом значений 113

    2.19.1. Тип данных Variant 113

    2.19.2. Значения переменных с типом Variant 114

    2.20. Delphi + ассемблер 116

    2.20.1. Встроенный ассемблер 116

    2.20.2. Подключение внешних подпрограмм 117

    2.21. Итоги 117

    Глава 3. Объектно-ориентированное программирование (ООП) 117

    3.1. Краеугольные камни ООП 118

    3.1.1. Формула объекта 118

    3.1.2. Природа объекта 118

    3.1.3. Объекты и компоненты 118

    3.1.4. Классы объектов 119

    3.1.5. Три кита ООП 119

    3.2. Классы 120

    3.3. Объекты 121

    3.4. Конструкторы и деструкторы 123

    3.5. Методы 124

    3.6. Свойства 125

    3.6.1. Понятие свойства 125

    3.6.2. Методы получения и установки значений свойств 126

    3.6.3. Свойства-массивы 127

    3.6.4. Свойство-массив как основное свойство объекта 128

    3.6.5. Методы, обслуживающие несколько свойств 128

    3.7. Наследование 131

    3.7.1. Понятие наследования 131

    3.7.2. Прародитель всех классов 135

    3.7.3. Перекрытие атрибутов в наследниках 137

    3.7.4. Совместимость объектов различных классов 139

    3.7.5. Контроль и преобразование типов 139

    3.8. Виртуальные методы 140

    3.8.1. Понятие виртуального метода 140

    3.8.2. Механизм вызова виртуальных методов 141

    3.8.3. Абстрактные виртуальные методы 142

    3.8.4. Динамические методы 143

    3.8.5. Методы обработки сообщений 143

    3.9. Классы в программных модулях 144

    3.10. Разграничение доступа к атрибутам объектов 147

    3.11. Указатели на методы объектов 148

    3.12. Метаклассы 149

    3.12.1. Ссылки на классы 149

    3.12.2. Методы классов 150

    3.12.3. Виртуальные конструкторы 151

    3.13. Классы общего назначения 151

    3.13.1. Классы для представления списка строк 152

    3.13.2. Классы для представления потока данных 154

    3.14. Итоги 156

    Глава 4. Исключительные ситуации и надежное программирование 156

    4.1. Ошибки и исключительные ситуации 156

    4.2. Классы исключительных ситуаций 157

    4.3. Обработка исключительных ситуаций 160

    4.3.1. Создание исключительной ситуации 160

    4.3.2. Распознавание класса исключительной ситуации 161

    4.3.3. Пример обработки исключительной ситуации 162

    4.3.4. Возобновление исключительной ситуации 163

    4.3.5. Доступ к объекту, описывающему исключительную ситуацию 163

    4.4. Защита выделенных ресурсов от пропадания 164

    4.4.1. Утечка ресурсов и защита от нее 164

    4.5. Итоги 165

    Глава 5. Динамически загружаемые библиотеки 166

    5.1. Динамически загружаемые библиотеки 166

    5.2. Разработка библиотеки 166

    5.2.1. Структура библиотеки 166

    5.2.2. Экспорт подпрограмм 167

    5.2.3. Соглашения о вызове подпрограмм 168

    5.2.4. Пример библиотеки 169

    5.3. Использование библиотеки в программе 172

    5.3.1. Статический импорт 173

    5.3.2. Модуль импорта 174

    5.3.3. Динамический импорт 175

    5.4. Использование библиотеки из программы на языке C++ 177

    5.5. Глобальные переменные и константы 178

    5.6. Инициализация и завершение работы библиотеки 178

    5.7. Исключительные ситуации и ошибки выполнения подпрограмм 179

    5.8. Общий менеджер памяти 179

    5.9. Стандартные системные переменные 180

    5.10. Итоги 180

    Глава 6. Интерфейсы 180

    6.1. Понятие интерфейса 181

    6.2. Описание интерфейса 181

    6.3. Расширение интерфейса 182

    6.4. Глобально-уникальный идентификатор интерфейса 183

    6.5. Реализация интерфейса 184

    6.6. Использование интерфейса 186

    6.7. Реализация нескольких интерфейсов 186

    6.8. Реализация интерфейса несколькими классами 187

    6.9. Связывание методов интерфейса с методами класса 188

    6.10. Реализация интерфейса вложенным объектом 189

    6.11. Совместимость интерфейсов 189

    6.12. Совместимость класса и интерфейса 190

    6.13. Получение интерфейса через другой интерфейс 191

    6.14. Механизм подсчета ссылок 192

    6.15. Представление интерфейса в памяти 194

    6.16. Применение интерфейса для доступа к объекту DLL-библиотеки 195

    6.17. Итоги 197

    Глава 7. Проект приложения 197

    7.1. Проект 197

    7.1.1. Понятие проекта 197

    7.1.2. Файлы описания форм 198

    7.1.3. Файлы программных модулей 201

    7.1.4. Главный файл проекта 204

    7.1.5. Другие файлы проекта 205

    7.2. Управление проектом 206

    7.2.1. Создание, сохранение и открытие проекта 206

    7.2.2. Окно управления проектом 207

    7.2.3. Группы проектов 211

    7.2.4. Настройка параметров проекта 212

    7.2.5. Компиляция и сборка проекта 217

    7.2.6. Запуск готового приложения 217

    7.3. Форма 218

    7.3.1. Понятие формы 218

    7.3.2. Имя и заголовок формы 219

    7.3.3. Стиль формы 221

    7.3.4. Размеры и местоположение формы на экране 222

    7.3.5. Цвет рабочей области формы 224

    7.3.6. Рамка формы 224

    7.3.7. Значок формы 225

    7.3.8. Невидимая форма 226

    7.3.9. Прозрачная форма 227

    7.3.10. Полупрозрачная форма 227

    7.3.11. Недоступная форма 228

    7.3.12. События формы 228

    7.4. Несколько форм в приложении 230

    7.4.1. Добавление новой формы в проект 230

    7.4.2. Добавление новой формы из Хранилища Объектов 230

    7.4.3. Переключение между формами во время проектирования 232

    7.4.4. Выбор главной формы приложения 232

    7.4.5. Вызов формы из программы 233

    7.5. Компоненты 237

    7.5.1. Понятие компонента 237

    7.5.2. Визуальные и невизуальные компоненты 238

    7.5.3. «Оконные» и «графические» компоненты 239

    7.5.4. Общие свойства визуальных компонентов 240

    7.5.5. Общие события визуальных компонентов 242

    7.6. Управление компонентами при проектировании 243

    7.6.1. Помещение компонентов на форму и их удаление 243

    7.6.2. Выделение компонентов на форме 243

    7.6.3. Перемещение и изменение размеров компонента 244

    7.6.4. Выравнивание компонентов на форме 246

    7.6.5. Использование Буфера обмена 247

    7.7. Закулисные объекты приложения 248

    7.7.1. Application — главный объект, управляющий приложением 248

    7.7.2. Screen — объект, управляющий экраном 251

    7.7.3. Mouse — объект, представляющий мышь 252

    7.7.4. Printer — объект, управляющий принтером 252

    7.7.5. Clipboard — объект, управляющий Буфером обмена 252

    7.8. Итоги 253

    Глава 8. Меню, строка состояния и панель инструментов 253

    8.1. Меню 253

    8.1.1. Идея меню 253

    8.1.2. Главное меню 254

    8.1.3. Дизайнер меню 255

    8.1.4. Пункты меню 259

    8.1.5. Разделительные линии 262

    8.1.6. Комбинации клавиш 263

    8.1.7. Обработка команд меню 264

    8.1.8. Пункты-переключатели 266

    8.1.9. Взаимоисключающие переключатели 267

    8.1.10. Недоступные пункты меню 268

    8.1.11. Контекстное меню 270

    8.1.12. Значки в пунктах меню 275

    8.2. Полноценное приложение для просмотра графических файлов 281

    8.2.1. Диалоговые окна открытия и сохранения файла 281

    8.2.2. Отображение рисунков 287

    8.3. Строка состояния 291

    8.3.1. Создание строки состояния 291

    8.3.2. Подсказки в строке состояния 296

    8.4. Прокрутка 299

    8.4.1. Прокрутка рабочей области формы 299

    8.4.2. Отдельная область прокрутки 300

    8.4.3. Полосы прокрутки 302

    8.5. Панель инструментов 304

    8.5.1. Панель 304

    8.5.2. Кнопки 309

    8.5.3. Значки на кнопках 311

    8.5.4. Надписи на кнопках 312

    8.5.5. Разделительные линии 315

    8.5.6. Кнопки-переключатели 317

    8.5.7. Обработка нажатий кнопок 319

    8.5.8. Подсказки к кнопкам 321

    8.5.9. Управление видимостью панели кнопок 323

    8.6. Список команд 323

    8.6.1. Создание списка команд 323

    8.6.2. Команды 326

    8.6.3. Привязка команд 329

    8.6.4. Реакция на команды 331

    8.6.5. Управление состоянием команд 338

    8.7. Итоги 340

    Глава 9. Окна диалога 340

    9.1. Понятие окна диалога 340

    9.2. Окно "About" 340

    9.2.1. Подготовка формы 340

    9.2.2. Кнопка 342

    9.2.3. Кнопка с рисунком 343

    9.2.4. Украшение окна диалога рисунком 345

    9.2.5. Текстовая надпись 346

    9.2.6. Рельефная канавка 348

    9.2.7. Рельефная панель 349

    9.2.8. Выполнение диалога 352

    9.3. Компоненты для ввода данных 354

    9.3.1. Фокус ввода 357

    9.3.2. Переключатели 358

    9.3.3. Взаимоисключающие переключатели 360

    9.3.4. Группа взаимоисключающих переключателей 361

    9.3.5. Панель группы компонентов 362

    9.3.6. Поле ввода и редактор текста 362

    9.3.7. Редактор с шаблоном 366

    9.3.8. Раскрывающийся список 367

    9.3.9. Установка и получение данных 373

    9.3.10. Список 376

    9.4. Законченное приложение для выдачи сигналов в заданные моменты времени 382

    9.4.1. Таймер 382

    9.4.2. Файлы настроек 384

    9.5. Многостраничные окна диалога 387

    9.5.1. Страницы с закладками 387

    9.5.2. Закладки без страниц 397

    9.6. Итоги 403

    Часть 2. Программирование на языке C++ 403

    Глава 1 403

    1.1. Принципы модульного программирования на языке С++ 403

    1.2. Пространства имен 404

    1.3. Перегрузка идентификаторов 405

    1.4. Переопределенные элементы подпрограмм 406

    Глава 2 406

    2.1. Классы в С++ 406

    2.2. Наследование 407

    2.3. Конструкторы и деструкторы 407

    2.4. Стандартные конструкторы 408

    2.5. Реализация методов класса 409

    2.6. Порядок конструирования и разрушения объектов 409

    2.7. Агрегированные объекты 410

    2.8. Вложенные определения класса 411

    2.9. Друзья класса 412

    2.10. Статические члены класса 412

    2.11. Множественное наследование 413

    2.12. Проблема повторяющихся базовых классов 414

    Глава 3 416

    3.1. Виртуальные методы 416

    3.2. Абстрактные классы 416

    3.3. Подстановочные функции 416

    3.4. Операторы преобразования типа 417

    3.5. Размещающий оператор new 419

    3.6. Ссылки 419

    3.7. Обработка исключительных ситуаций 420

    3.8. Защита ресурсов от утечки 422

    3.9. Перегрузка операторов 423

    Бинарные операторы 423

    Унарные операторы 424

    Операторы преобразования 424

    Глава 4 426

    4.1. Шаблоны 426

    4.2. Шаблоны функций 426

    4.3. Перегрузка шаблонов функций 427

    4.4. Специализации шаблонов 428

    4.5. Использование шаблонов при создании новых типов данных 428

    4.6. Стандартная библиотека шаблонов 429

    Часть 1. Программирование на языке Delphi

    Предисловие

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

    Краткий экскурс в историю

    Языки программирования

    Пожалуй, наиболее важной вехой в истории программирования, сравнимой по значимости разве что с изобретением письменности, можно считать переход от машинных кодов (тарабарщины типа 0110110101111...) к понятным простому смертному языкам программирования (типа ALGOL, FORTRAN, PL/1, Pascal), а также к широкому использованию методов структурного программирования. Программы стали модульными, состоящими из подпрограмм. Появились библиотеки готовых подпрограмм, облегчающие многие задачи, но все равно программистам хватало трудностей, особенно при разработке пользовательского интерфейса.

    Объектно-ориентированное программирование

    Качественным шагом в развитии методов структурного программирования стало изобретение объектно-ориентированного программирования (языков SmallTalk, C++, Turbo Pascal и др.). Программы стали строиться не из чудовищных по размеру процедур и функций, перерабатывающих громоздкие структуры данных, а из сравнительно простых кирпичиков-объектов, в которых были упрятаны данные и подпрограммы их обработки. Гибкость объектов позволила очень просто приспосабливать их для собственных целей, прилагая для этого минимум усилий. Программисты обзавелись готовыми библиотеками объектов, но, как и раньше, создание пользовательского интерфейса требовало уйму времени и сил, особенно когда программа должна была работать под управлением популярной операционной системы Windows и иметь графический пользовательский интерфейс.

    Визуальное программирование

    С изобретением визуального программирования, первой ласточкой которого была среда разработки Visual Basic, создание графического пользовательского интерфейса стало под силу даже новичку. В среде Visual Basic можно было быстро создать приложение для операционной системы Windows, в котором были все присущие графическому пользовательскому интерфейсу элементы: окна, меню, кнопки, поля ввода и т.д. Все эти элементы превратились в строительные блоки программы — компоненты — объекты, имеющие визуальное представление на стадии проектирования и во время работы.

    Проектирование пользовательского интерфейса упростилось на порядок, однако, для профессиональных программистов язык Basic оказался явно слабоват. Отсутствие в нем контроля типов данных и механизма их расширения оказалось камнем преткновения на пути создания серьезных программ. Создание нестандартных компонентов в среде Visual Basic было крайне затруднено (для этого приходилось прибегать к другим средствам разработки, в частности, к языку C++). В общем, среда Visual Basic отлично подходила для создания прототипов приложений, но не для разработки коммерческих программных продуктов.

    Среда программирования Delphi

    Мечта программистов о среде программирования, в которой бы простота и удобство сочетались с мощью и гибкостью, стала реальностью с появлением среды Delphi. Она обеспечивала визуальное проектирование пользовательского интерфейса, имела развитый объектно-ориентированный язык Object Pascal (позже переименованный в Delphi) и уникальные по своей простоте и мощи средства доступа к базам данных. Язык Delphi по возможностям значительно превзошел язык Basic и даже в чем-то язык C++, но при этом он оказался весьма надежным и легким в изучении (особенно в сравнении с языком C++). В результате, среда Delphi позволила программистам легко создавать собственные компоненты и строить из них профессиональные программы. Среда оказалась настолько удачной, что по запросам любителей C++ была позже создана среда C++Builder — клон среды Delphi на основе языка C++ (с расширенным синтаксисом).

    Среда Delphi стала, по сути, лучшим средством программирования для операционной системы Windows, но программистов ждало разочарование, если возникало желание перенести программу в другую операционную систему, в частности, в операционную систему Unix.

    Технология Java

    Практически одновременно со средой программирования Delphi на свет появилась технология Java, включавшая три составляющих: одноименный язык программирования, очень похожий на язык C++, но более простой и безопасный; универсальный байт-код, в который компилировались программы на языке Java; интерпретатор (виртуальную машину) для выполнения байт-кода в любой операционной системе. Благодаря автоматическому управлению памятью — так называемой «сборке мусора» — резко повысилась надежность программ и скорость их разработки.

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

    Безграничная переносимость Java-программ родила идею сетевого компьютера и сетевых вычислений, суть которой в том, что все программы хранятся в байт-коде на серверах сети Интернет. Когда подключенный к сети пользователь запускает программу, то она сначала загружается к нему на компьютер, а затем интерпретируется. Охваченные этой идеей крупные фирмы ринулись осваивать новый рынок Java-приложений. Для языка Java появились средства визуального программирования, такие как JBuilder и Visual Age for Java. Казалось бы, бери и используй их для разработки пользовательского интерфейса и серверных программ. Но практически пропускная способность сети Интернет в лучшем случае обеспечивала оперативную загрузку на клиентские компьютеры лишь небольших по размеру программ. Кроме того, созданный на языке Java пользовательский интерфейс хронически отставал от возможностей операционной системы Windows и раздражал своей медлительностью. Поэтому технологию Java стали применять главным образом для разработки серверных приложений. Однако и здесь цена переносимости программ оказалась очень высокой — представленные в байт-коде программы работали на порядок медленнее аналогичных программ, компилированных напрямую в команды процессора. Применение динамической компиляции, при которой программа перед выполнением преобразуется из байт-кода в команды процессора и попутно оптимизируется, улучшило положение дел, но скорость работы Java-приложений так и не смогла приблизиться к скорости работы традиционных приложений. Иными словами, переносимость программ шла в ущерб их производительности и удобству. Многие начали задумываться над целесообразностью такой переносимости программ вообще.

    Тем временем назревала революция в области серверных платформ — небывалыми темпами росла популярность операционной системы Linux.

    Среда программирования Kylix

    В связи со стремительным распространением операционной системы Linux возникла необходимость в эффективных средствах создания для нее программ. Таким средством стала среда Kylix (произносится «киликс») — первая среда визуального программирования для операционной системы Linux. Среда Kylix явилась полным аналогом среды Delphi и была совместима с ней по языку программирования и библиотекам компонентов. Программу, созданную в среде Delphi, можно было без изменений компилировать в среде Kylix, и наоборот. Эта возможность достигалась за счет новой библиотеки компонентов, которая взаимодействовала с операционной системой не напрямую, а через промежуточный программный слой, скрывающий разницу в работе компонентов в той или иной операционной системе. Программисты получили возможность создавать программы сразу для двух самых популярных операционных систем: Windows и Linux. Фактически вместо принципа абсолютной переносимости программ была предложена идея разумной переносимости.

    Постепенно пришло понимание того, что в эпоху Интернет способность программ к взаимодействию в сети не менее (а порой более!) важна, чем возможность их переноса на различные платформы. Такая способность была обеспечена за счет стандартизации протоколов обмена данными в сети Интернет и форматов этих данных. Развитие протоколов и стандартов Интернет привело к рождению технологии Web-сервисов, которая ставила своей задачей максимально упростить создание программ, взаимодействующих по принципу клиент-сервер в глобальной сети. Поддержка технологии Web-сервисов была изящно встроена в системы Delphi и Kylix, в результате разработчики программ получили в руки еще один очень важный инструмент.

    Технология .NET

    Несмотря на трудности и уроки Java-технологии, программисты не желали отказываться от идеи создания полностью переносимых программ. Вместе с тем их совершенно не устраивала необходимость платить производительностью и удобством программ за переносимость. Работы по разрешению этого противоречия привели к появлению на свет технологии под названием .NET (произносится «дот-нет»).

    Технология .NET по сути явилась новой платформой, надстроенной над другими операционными системами, и этим походила на технологию Java. Однако у технологии .NET имелся ряд существенных концептуальных отличий. В частности, платформа .NET хотя и имела свой собственный новый язык программирования C# (произносится «си-шарп»), но не была привязана только к нему, позволяя писать программы на других языках. Кроме того, программы для платформы .NET компилировались не в байт-код, а в универсальный промежуточный язык, который сохранял семантику программы и был близок к ее исходному тексту (байт-код, напротив, близок к командам процессора). Программы на промежуточном языке вообще не интерпретировались, а всегда компилировались в команды процессора при запуске программы или при ее первоначальной установке на компьютер пользователя. Выполняемый код получался очень эффективным и оказывался сравнимым по быстродействию с выполняемым кодом, полученным прямой компиляцией с языка высокого уровня в команды процессора. Немаловажно и то, что на платформе .NET стало возможным использование любых (а не только стандартных) библиотек подпрограмм и компонентов, а также всех функций операционной системы. Все это обеспечило создание быстрых и удобных программ.

    Поначалу технология .NET была доступна только для семейства операционных систем Windows, но со временем этот недостаток был устранен, и на свет появилась платформа Mono — клон технологии .NET для операционных систем Linux и Unix.

    ... и опять среда Delphi

    Платформы .NET и Mono имеют большое будущее, поэтому фирма Borland адаптировала для них язык и среду программирования Delphi. В итоге, разработчики получили уникальную возможность — применять один и тот же язык Delphi для создания профессиональных программ для любых операционных систем и платформ: Windows, Linux, .NET, Mono. Этим, кстати, язык Delphi выгодно отличается от модного ныне языка C#, который применяется лишь для программирования на платформах .NET и Mono.

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

    Что вы найдете в этой книге

    Уважаемый читатель, мы смеем утверждать, что в этой книге есть именно то, что нужно человеку, чтобы научиться писать программы на языке Delphi и стать профессионалом в этой области. Почерпнутые из книги знания понадобятся вам независимо от того, для какой платформы (Windows, Linux, .NET или Mono) вы будете программировать.

    В этой книге вы найдете:

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

    • не имеющее аналогов по полноте и простоте описание языка Delphi и объектно-ориентированного программирования. Это фундамент среды Delphi, без знания которого заниматься программированием не имеет смысла;

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

    При написании этой книги авторы использовали материалы своих предыдущих книг по системам программирования Delphi и C++Builder. По сравнению с предыдущими книгами существенной переработке подверглась терминология. Описание языка Delphi расширено и теперь охватывает такие аспекты, как динамические массивы и их физическое представление в памяти, перегрузку процедур и функций, новые форматы кодирования символов строк и многое другое. Новый набор стандартных подпрограмм рассмотрен самым подробным образом. Объектно-ориентированное программирование объясняется на более понятном сквозном примере. Отдельная глава посвящена расширению возможностей объектно-ориентированного программирования с использованием технологии интерфейсов. Глава, посвященная созданию динамически подключаемых библиотек, охватывает дополнительно вопросы создания динамически подключаемых пакетов компонентов. Если вы посмотрите оглавление, то получите более полное представление об обширной тематике этой книги.

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

    Возможные трудности освоения

    Основная проблема в освоении среды Delphi — это ее гигантский объем. Новичок просто теряется в этом море поистине безграничных возможностей. Еще одна сложность — это понимание объектно-ориентированного программирования. Практика показывает, что многие осваивают эту тему только после второго-третьего прочтения и глубокого анализа примеров. Но паниковать не стоит. Читайте книгу не спеша, выполняйте на компьютере все примеры, и успех обязательно придет.

      1   2   3   4   5   6   7   8   9   ...   33


    написать администратору сайта