- •1.Понятие жизненного цикла программного обеспечения (по). Этапы разработки по.
- •Сравнение стратегий конструирования по.
- •4. Спиральная модель жизненного цикла разработки программного обеспечения б. Боэма.
- •5.Основные приемы экстремального программирования (xp).
- •1.Короткий цикл обратной связи:
- •7. Структура оконного приложения в среде Delphi.
- •8.Модули. Структура модуля. Использование модулей в приложении
- •9.Основные типы данных языка Delphi
- •10. Структурированные типы данных. Записи. Обращение к полям записей. Оператор with. Тип "запись" (record)
- •11. Структурированные типы данных. Записи. Вариантная часть записей.
- •Описание и использование подпрограмм в языке Паскаль. Формальные и фактические параметры. Параметры-значения и параметры-переменные.
- •Описание и вызов процедур и функций
- •13. Библиотека визуальных компонентов Delphi. Назначение vcl
- •Структура vcl
- •14. Основные события Delphi. Методы обработки событий.
- •15. Объектно-ориентированный подход при разработке программы. Основные принципы объектно-ориентированного программирования.
- •16. Определение класса и объекта.
- •Примеры Классов: Класс фигур:
- •17. Атрибуты доступа к элементам класса.
- •Пример: пример “атрибуты доступа” (лекция №__)
- •Структура проекта
- •Описание классов
- •Модуль Unit1
- •Модуль Unit2
- •18. Методы как составляющие элементы класса. Конструкторы и деструкторы.
- •Пример: пример № 1. “точка на прямой”
- •19. Методы как составляющие элементы класса. Модификаторы и селекторы пример № 3. Класс “товар”
- •20. Принцип инкапсуляции. (Забавная статья, но вроде понятно)
- •21. Принцип наследования.
- •Типы наследования
- •Простое наследование
- •Множественное наследование
- •Реализация наследования на примере языка Delphi.
- •Create; begin Inherited; // Всегда вызывается в начале конструктора ... End; Иерархия стандартных классов Delphi
- •Совместимость типов для классов в иерархии наследования. Преобразование и приведение типов.
- •Совместимость объектов различных классов
- •Контроль и преобразование типов
- •Обработка исключительных ситуаций. Стандартные классы исключений на примере языка Delphi.
- •Блок try … except
- •Блок try … finally
- •Описание и обработка пользовательских исключений на примере языка Delphi.
13. Библиотека визуальных компонентов Delphi. Назначение vcl
VCL – одна из трех основных составляющих Delphi:
Язык (Object Pascal)
Среда разработки (Delphi)
Набор готовых функций и классов (VCL)
Структура vcl
Дерево наследования классов VCL:
//Подробно про дерево – в распечатке 03VCL. Глупо сюда перепечатывать.
14. Основные события Delphi. Методы обработки событий.
События в программировании, как и события реального мира - это какие-либо операции, происходящие в установленное время. Установленное время - это не конкретное время с точки зрения часов, это просто отклики на какие-то другие действия и изменения. События присущи объектно-ориентированному программированию и являются одной из важных черт операционной системы Windows. Работа программ с визуальным (графическим) интерфейсом немыслима без событий. Delphi предоставляет полный доступ для работы с событиями и немного упрощает программирование обработчиков событий.
Практически все объекты реагируют на определённые события от мыши и клавиатуры.
Приложения Windows используют методы (подпрограммы) обработки событий для управления взаимодействием между программой и пользователем и для реакции на действия ОС. Программный код, который пишет программист в Delphi, будет обеспечивать реакцию на события. Подпрограмма, которая реагирует на событие, называется обработчиком события. Delphi работает с событиями путём вызова определённых процедур – обработчиков событий. Если процедура не связана с данным событием, то оно игнорируется и выполняется стандартная реакция системы или не производится никакого действия.
//Классификацию я не нашла, внезапно. Если кто-то вдруг её обнаружит, будет офигенно.
Основные свойства и события TControl:
Свойства:
Свойства позиционирования: Top, Left, Width, Height, Align, Anchors
Свойства клиентской области : ClientHeight, ClientOrigin, ClientRect, ClientWidth
Свойства внешнего вида: Visible, Enabled, Font, Color
Строковые свойства: Caption, Text, Hint
События:
События левой кнопки мыши: OnClick, OnDblClick,
Общие события мыши : OnMouseDown, OnMouseMove, OnMouseUp
Поддержка перетаскивания: OnDragDrop, OnDragOver, OnEndDrag
//Более подробно все они описаны в файле 03VCL, почитайте обязательно.
15. Объектно-ориентированный подход при разработке программы. Основные принципы объектно-ориентированного программирования.
16. Определение класса и объекта.
Класс как совокупность объектов со схожим состоянием и поведением.
В ООП при написании классов выделяют две стороны:
• интерфейс;
• реализация.
Интерфейс – декларативная часть класса, описывает «внешнему миру» абстракцию класса, его облик, в определенном смысле контракт – «обязуюсь делать то-то и то-то». Выделяют три уровня интерфейса:
• Public (общедоступный, открытый) – элементы класса, доступные всем, кто использует класс и/или его объекты
• Protected (защищенный) – элементы класса, доступные в классах производных (наследующих) от данного.
• Private (закрытый) – элементы класса, доступные только изнутри класса, а так же из некоторых особо выделенных классов и функций (в разных ОО языках существуют разные способы указания таких классов и функций).
Реализация – императивная (процедурная) часть класса, не видна (в идеале или в подавляющем числе случаев и не существенна) для остального мира, «то-то и то-то делаю так-то и так-то»
Описание класса
Перейдем к классу, как элементу конкретного ОО-языка – Delphi. Итак, прежде всего класс – это тип данных. Так же как и другие типы, классы описываются в разделах type модуля, как интерфейсной (interface), так и реализационной (implementation) части модуля. Вообще говоря, описание классов в реализационной части – явление не распространенное, хотя и не запрещенное синтаксисом языка.
Начинается описание (интерфейсная часть класса) со строки:
<имя класса> = class [(<имя класса-предка>)]
а заканчивается ключевым словом end;
где <имя класса> – правильный идентификатор, а <имя класса-предка> – имя класса, описание которого доступно в данной точке программы (т.е. он описан или предварительно описан выше по тексту модуля или находится в интерфейсной части используемого модуля).
Все, что между этими строками – список элементов (членов) класса. Если указан класс-предок и нет ни одного нового элемента в классе, то ключевое слово end можно опустить. Такое описание называется кратким описанием класса.
Интерфейс класса состоит из произвольного количества произвольно чередующихся секций (атрибутов доступа или доступности или видимости):
public, protected, private, published и automated
Значение первых трех областей видимости совпадает с указанным выше. Для секции private способ указания функций и классов, видящих эти элементы — размещение в одном модуле с классом. Последние две по области видимости приравнены к public, но имеют некоторую дополнительную чисто техническую нагрузку. Кроме того, применение ключевого слова automated признано устаревшим и оставлено только для обратной совместимости с предыдущими версиями, оно рассматриваться далее в курсе не будет. Ключевое слово published будет рассмотрено в теме «VCL». Действие атрибута распространяется на элементы класса, описанные по тексту после него до момента появления другого атрибута или конца объявления класса. В начале описания класса может присутствовать секция, не имеющая явно указанного атрибута видимости, она в различных случаях расценивается или как public, или как published (этот нюанс будет рассмотрен в теме «VCL»).
Существует понятие предварительного описания классов (необходимо, когда два класса в одном модуле ссылаются друг на друга). В таком случае один из них (или оба) предварительно (до того как упоминаются) описываются следующим образом:
<имя класса> = class;
Подчеркиваем: даже если у класса есть предок – он не указывается, иначе определение будет воспринято как сокращенная форма настоящего определения класса, а не как предварительное описание.
Различают следующие элементы класса:
• поле;
• метод;
• свойство.
В пределах каждой секции видимости поля предшествуют методам и свойствам.
Поля
Поле – это физически хранимый в экземплярах класса элемент данных. Набор полей и их значений отражает состояние объекта. Поля полностью относятся к декларативной части класса и аналогичны полям типа записи (record). Поля описываются следующим образом:
<имя поля>:<тип поля>;
где <имя поля> – правильный уникальный в пределах класса идентификатор,
а <тип поля> – доступный в данной точке программы тип (т.е. тип, описанный ранее по тексту модуля или описанный в интерфейсной части используемого модуля или встроенный тип Delphi), кроме файловых типов.
Методы
Метод – описанная внутри класса и связанная с экземплярами класса (т.е. имеющая доступ ко всем элементам класса) процедура или функция. Совокупность методов описанных в классе (а так же и унаследованных) отражает поведение экземпляров класса.
Методы классифицируются на:
• Конструкторы (создают в памяти и/или инициализируют состояние объекта);
• Деструкторы (освобождают память и/или состояние объекта);
• Модификаторы (изменяют состояние объекта);
• Селекторы (возвращают некоторую характеристику состояния);
• Итераторы (организуют доступ к частям объекта в строго определенном порядке).
Методы – единственный вид элементов класса, у которых присутствует как декларативная (объявление), так и императивная (определение, реализация) часть. Декларативная часть находится внутри объявления класса.
Свойства… (у него выделено серым.. и помойму мы их не разбирали ;) )
Объявление объекта
Объект или экземпляр класса (в терминах Delphi) – это переменная типа класс. Соответственно, объявление объекта (а если быть точным, ссылки на объект) может располагаться в разделе var (любом – глобальном или локальном) или в пределах объявления другого класса или записи. Очень важно помнить, переменная-объект – это всего лишь адрес памяти. Мало объявить переменную. Прежде чем использовать объект, его нужно создать (т.е. выделить память и инициализировать) при помощи конструктора. Из этого логически вытекает, что операция присваивания не копирует объект, а лишь адрес, т.е. после ее выполнения две переменные указывают на один и тот же объект.
Ex.
var
O1, O2: TSomeObject;
…
O2 := O1; // обе переменные указывают на один и тот же объект в памяти
Доступ к элементам класса извне класса осуществляется через оператор «точка» (.):
<имя объекта>.<имя элемента>
Доступ к элементам класса из методов, описанных в нем (для того же объекта, для которого вызван метод), осуществляется просто по имени элемента.
Ex.
Доступ к элементам класса:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
T1 = class
private
a: Integer;
public
procedure SomeMethod;
end;
{ T1 }
procedure T1.SomeMethod;
begin
Writeln(a); // доступ к элементам класса из его же метода
end;
var
O1: T1;
begin
O1 := T1.Create;
O1.SomeMethod; // доступ к элементам класса извне
end.