- •Часть 2
- •Оглавление
- •1. Структурный подход к программированию
- •1.1. Цели структурного программирования
- •1.2. Основные принципы структурного подхода
- •1.3. Спецификация программ
- •1.4. Метод пошаговой детализации
- •2. Предыстория объектно-ориентированного программирования
- •2.1. Введение в объектно-ориентированное программирование
- •2.2. Тип Объекты
- •2.3. Основные понятия ооп. Инкапсуляция. Наследование
- •X, y : integer; {координаты позиции}
- •XX,yy:array [1..1000] of integer;
- •2.4. Совместимость объектных типов по присваиванию
- •2.5. Описание типа-потомка
- •2.6. Полиморфизм
- •2.7. Виртуальные методы. Конструкторы и деструкторы
- •2.7.1. Правила работы с виртуальными методами
- •3. Типы данных и операторы языка object pascal в delphi
- •3.1. Предопределенные типы данных
- •3.1.1 Вещественные типы
- •3.1.2. Длинные строки
- •3.2. Структурированные типы
- •3.2.1. Множества
- •Var MySet: set of 'a'..'z';
- •3.2.2. Массивы
- •Var FlexArray: array of Real;
- •Var Ints: array of array of Integer;
- •3.2.3. Записи
- •Var Record1,Record2:tDateRec;
- •3.2.4. Указатели
- •I: Integer;
- •V1,v2,v3,v4,v5:Variant;
- •I:Integer;
- •3.3. Типы данных, специфичные для Windows
- •3.3.1. Приведение и преобразование типов
- •3.4. Операторы языка Паскаль
- •I:Integer;
- •I:Integer;
- •3.4.1. Элементы управления редактированием
- •3.5. Процедуры и функции библиотеки vcl
- •4. Реализация ооп на языке pascal
- •V: Real;
- •Наследование
- •Virtual;
- •Конструкторы и деструкторы
- •Перекрытие методов
- •5. Программирование в среде delphi
- •5.1. Основные элементы
- •5.2. Реализация объектно-ориентированного программирования
- •5.3. Разработка интерфейса приложения
- •5.3.1. Создание простейшего Windows-приложения
- •5.3.2. Создание Windows-приложения с метками и кнопками
- •Объект Свойство Значение
- •6.1.3. Меню Edit
- •6.1.4. Меню Search
- •6.1.5. Меню View
- •6.1.6. Меню Run
- •6.1.7. Меню Component
- •6.1.8. Меню Tools
- •6.1.9. Полоска кнопок быстрого доступа SpeedBar
- •6.1.10. Локальные меню. SpeedMenu
- •6.2. Работа с формами
- •6.2.1. Палитра компонентов
- •6.2.2. Object Inspector
- •6.2.3. Написание кода
- •6.2.4. Компиляция проекта
- •6.2.5. Интегрированный отладчик
- •6.2.6. Файлы, создаваемые системой
- •7. Структура delphi-программ
- •7.1. Разработка проекта Dialog
- •7.2. Процедуры вызова диалоговых окон
- •7.3. Преобразования типов
- •Var factW,optW,Rost,Delta:integer;
- •Var factW,optW,Rost,Delta:real;
- •7.4. Простейшие компоненты
- •7.4.1. Группы радиокнопок - компоненты RadioGroup, RadioButton, GroupBox
- •7.4.2. Компоненты выбора из списков - ListBox, ComboBox
- •7.4.3. Многострочные окна редактирования Memo и Richedi
- •7.4.4. Графические объекты
- •If OpenDialog1.Execute
- •Image1.Picture.LoadFromFile
- •7.4.5. Канва и пиксели
- •X, y :real; // координаты функции
- •7.4.6. Воспроизведение немых видео клипов – компонент Animate
- •7.4.7. Установка и настройка приложения: работа с файлами *.Ini
- •IniFile.Free;
- •Упражнения
- •8. Репозиторий объектов и эксперты
- •8.1. Страницы репозитория объектов
- •8.1.1. Страница New
- •8.1.2. Страница Forms
- •8.1.3. Страница Dialogs
- •8.1.4. Страница Data Modules
- •8.1.5. Страница Projects
- •8.2. Эксперты Delphi
- •8.2.1. Application Expert
- •8.2.2. Dialog Box Expert
- •9. Классы и модули
- •9.1. Классы и сокрытие информации
- •9.2. Классы и модули
- •9.3. Модули и область видимости
- •9.4. Модули и программы
- •9.5. Информация о типе на этапе выполнения
- •If MyAnimal is Dog then …
- •If MyAnimal is Dog
- •If MyAnimal is Dog then
- •10. Использование компонентов
- •10.1. Буксировка из одного компонента в другой
- •10.2. Обработка исключений
- •10.3. Восприятие ввода для пользователя
- •Val( Edit1.Text,Number,Code);
- •Val((Sender as tEdit).Text,Number,Code);
- •11.2. Различные роли элементов меню
- •11.3. Редактирование меню с помощью Menu Designer
- •If OpenDialog1.Execute
- •If SaveDialog1.Execute
- •Procedure tForm1.ViewEdit1Click(Sender:tObject); begin
- •If Panel1.Visible
- •If Buttons1.Enabled
- •12. Получение «ввода от мыши» и рисование в форме
- •12.1. События, связанные с мышью
- •12.2. Рисование в форме
- •If ssShift in Shift
- •If Circle then Canvas.Ellipse(Center.X-Radius.X,Center.Y-
- •Else Canvas.Rectangle(Center.X-Radius.X,Center.Y-
- •12.3. Черчение и рисование в системе Windows
- •13. Инструментальная линейка и строка состояния
- •13.1. Построение инструментальной линейки
- •Procedure tForm1.SpeedButton1Click(Sender:tObject); begin
- •If SpeedButton1.Down
- •13.2. Добавление всплывающих подсказок в линейку
- •13.3. Комбинированный список в инструментальной линейке
- •13.4. Построение строки состояния
- •14.1. Добавление второй формы в программу
- •14.2. Создание диалоговой панели
- •Задание № 1
- •Procedure tForn1.BitBtnClick(Sender:tObject); begin PageControl1.SelectNextPage(true);
- •Do ListBox1.Items.Add(PageControl1.Page[I].Caption);
- •14.3.1. Блокнот с набором ярлыков
- •If FontDialog1.Execute
- •15.2. Жизненный цикл программного средства
- •15.3. Понятие качества программного средства
- •15.4. Обеспечение надежности основной мотив разработки программных средств
- •15.4.1. Методы борьбы со сложностью
- •15.4.2. Обеспечение точности перевода
- •15.4.3. Преодоление барьера между пользователем и разработчиком
- •15.4.4. Контроль принимаемых решений
- •Литература
- •Часть 2. Объектно-ориентированное программирование
V1,v2,v3,v4,v5:Variant;
I:Integer;
D:Double;
S:string;
begin
V1:=1; { integer value }
V2:=1234.5678; { real value }
V3:='Hello world!'; { string value }
V4:='1000'; { string value }
V5:=V1+V2+V4; { real value 2235.5678}
I:=V1; { I = 1 (integer value) }
D:=V2; { D = 1234.5678 (real value) }
S:=V3; { S = 'Hello world!' (string value)}
I:=V4; { I = 1000 (integer value) }
S:=V5; { S = '2235.5678' (string value) }
end;
3.3. Типы данных, специфичные для Windows
В Delphi имеются типы данных, которые определены системой Windows, – дескриптор и ссылка на цвет. Их имена соответственно Thandle и TcolorRef. Первый тип – это лишь переопределение типа данных Cardinal, а второй переопределение типа LongInt.
Ссылка на цвет – это просто число, описывающее цвет. Вы можете выбрать любой цвет с помощью функции RGB или напрямую значение для красной, зеленой и синей составляющих величины типа TcolorRef.
В Windows дескриптор – это число, которое является ссылкой на внутреннюю структуру данных системы. Например, когда вы работаете с окном, система выдает вам дескриптор окна (HWND). Тем самым она сообщает, что окно, с которым вы работаете, является окном под номером, например, 142. С этого момента ваше приложение может использовать данный номер, чтобы попросить систему обработать необходимое окно: переместить его, изменить размеры, уменьшить до пиктограммы и т. п.
Другими словами, дескриптор является внутренним кодом, который вы можете применить для обращения к конкретному элементу, обрабатываемому системой, включая окна, растровые изображения, пиктограммы, блоки памяти, курсоры, шрифты, меню и т. п.
3.3.1. Приведение и преобразование типов
Вы не можете присвоить переменной значение другого типа. Если в этом все же возникла необходимость, имеются две возможности. Первая возможность – приведение типов, которое выглядит как простой вызов функции, но вмето имени функции используется имя типа данных адресата:
var
N:Integer;
C:Char;
B:Boolean;
begin
N:= Integer(‘X’);
C:= Char(N) ;
B:= Boolean(0);
Строго говоря, операцию приведения можно осуществлять между теми типами данных, которые имеют одинаковый размер. Обычно безопасным является приведение между перечислимыми или между вещественными типами, но также можно выполнить приведение между типами указателей (а также объектов).
Вторая возможность – использовать подпрограмму преобразования типов. Например, Trunc преобразует значение вещественного типа в значение целочисленного типа, отсекая дробную часть; IntToStr преобразует число в строку; StrToInt преобразует строку в число, вызывая исключение в случае неправильной строки и т. д.
3.4. Операторы языка Паскаль
Здесь будет дано краткое описание использования операторов Object Pascal в Delphi.
Рассмотрим пример, который демонстрирует различие между фиксированным счетчиком и циклом с псевдослучайным счетчиком. Начните новый пустой проект и поместите в его основную форму список и две кнопки. Теперь в событие OnClick кнопок можно добавить некоторый код. Первая кнопка содержит простой цикл for для отображения списка чисел. До выполнения этого цикла, который добавляет несколько строк в свойство Items списка, следует очистить содержимое самого списка.
procedure TForm1.Botton1.Click (Sender:TObject);
var
