- •Введение
- •Основные концепции объектно-ориентированного программирования
- •Принципы ооп
- •Архитектура программы при ооп
- •Объектно-ориентированные языки програм-мирования
- •Описание класса в Object Pascal
- •События и реакция на них
- •Интегрированная среда разработки
- •Интегрированная среда разработки Delphi 7: 1 – главное окно; 2 - окно Дерева объектов; 3 – окно Инспектора объектов; 4 – окно Проводника кода; 5 – окно Конструктора форм; 6 – окно Редактора кода
- •Характеристика проекта Delphi
- •Компиляция и выполнение проекта
- •Знакомство со средой программирования
- •Компонент Lable
- •Компонент Label
- •Инспектор объектов
- •Компонент Edit
- •Компонент Edit
- •Компоненты Button, BitBtn, SpeedButton
- •Примеры кнопок Button, BitBtn и SpeedButton
- •Пример приложения
- •Форма с размещенными на ней компонентами
- •Компоненты для работы с текстом
- •Строковый редактор
- •Пример работы с компонентом Memo
- •Компонент RichEdit
- •Примеры форматирования текста в компоненте RichEdit
- •Списки строк
- •Компонент ListBox
- •Пример работы со списками строк
- •Компонент ComboBox
- •Переключатели
- •Компонент CheckBox
- •Пример работы с независимыми переключателями
- •Компоненты RadioButton и RadioGroup
- •Пример работы с группой зависимых переключателей
- •Объединение элементов управления. Компонент Panel
- •Примеры различного оформления рамки панелей
- •Компоненты OpenDialog и SaveDialog
- •Диалоговое окно открытия файла
- •Редактор фильтра
- •Работа с меню
- •Компонент MainMenu
- •Конструктор меню
- •Компонент PopupMenu
- •Пример контекстного меню
- •Работа с базами данных
- •Средства для работы с базами данных
- •Создание баз данных с помощью Database Desktop
- •Окно выбора формата таблицы
- •Окно определения структуры таблицы
- •Пример структуры таблицы
- •Пример заполненной таблицы
- •Создание псевдонимов бд в bde Administrator
- •Диалоговое окно создания псевдонима бд
- •Главное окно Администратора bde
- •Компоненты для работы с бд
- •Пример приложения
- •Форма с компонентами Table, DataSource и dbGrid
- •Редактор полей таблицы
- •Пример таблицы с измененными свойствами
- •Работа с графикой
- •Пример работы с графикой
- •Лабораторное задание
- •Указания по оформлению отчета
- •Контрольные вопросы
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Описание класса в Object Pascal
В языке Object Pascal классы – это специальные типы данных, используемые для описания объектов. Соответственно объект, имеющий тип какого-либо класса, является экземпляром этого класса или переменной этого типа.
Класс представляет собой особый тип записи (record), имеющий в своем составе такие элементы, как поля, свойства и методы. Поля класса аналогичны полям записи и служат для хранения информации об объекте. Методами называются процедуры и функции, предназначенные для обработки полей. Свойства во многом аналогичны полям класса, но, если поле является только ячейкой памяти, чье содержимое можно считать и изменить, свойство связывает чтение или изменение данных с каким-либо действием.
Описание класса имеет следующую структуру:
type
<имя класса> = class (<имя класса-родителя>)
private <внутренние (недоступные) описания>;
protected <защищенные описания>;
public <общедоступные описания>;
end;
Имя родительского класса указывается, если новый класс должен наследовать все его характеристики.
Для различных элементов класса можно устанавливать разные права доступа (видимости), для чего в описании класса используются отдельные разделы, обозначенные специальными спецификаторами видимости.
Разделы private и protected содержат защищенные описания, которые доступны внутри модуля, в котором они находятся. Описания из раздела protected, кроме того, доступны для порожденных классов за пределами данного модуля.
Раздел public содержит общедоступные описания, которые видимы в любом месте программы, где доступен сам класс.
В Object Pascal разрешается сколько угодно раз объявлять любую секцию, причем порядок следования секций не имеет значения. Любая секция может быть пустой.
После описания класса необходимо описать в разделе var переменную типа класса (объект).
Обращение к полям и методам класса осуществляется с указанием имени переменной, по аналогии с обращением к полям записи с использованием:
составных имен:
<имя объекта>.<имя поля>
<имя объекта>.<имя метода>(<список фактических параметров>);
оператора присоединения with:
with <имя объекта> do
begin
… <имя поля>…
… <имя метода>…
end;
Пример описания класса и объекта:
type
TNewForm = class(TForm)
public:
procedure SetGeometry(x, y, w, h: integer);
private
x, y, w, h: integer;
end;
var
new_form: TNewForm;
Здесь класс TNewForm создается на основе родительского класса TForm. Кроме унаследованных свойств и методов класс-потомок дополнительно содержит общедоступную процедуру SetGeometry и внутренние переменные x, y, w, h. Обратиться к полям или методу объекта можно следующим образом:
new_form.x := 5;
new_form.y := 10;
new_form.SetGeometry(5, 10, 50, 100);
или
with new_form do
begin
x := 5;
y := 10;
setGeometry(5, 10,50, 100 );
end;
Описание класса в C++
В С++, так же как и в других языках программирования, класс – это структурный тип, используемый для описания некоторого множества объектов предметной области, имеющих общие свойства и поведение. Он описывается следующим образом:
class <имя класса>
{
private: <внутренние (недоступные) описания>;
protected: <защищенные описания>;
public: <общедоступные описания>;
};
Разделы private, protected, public имеют тот же смысл, что и в Object Pascal.
Для доступа к элементам класса используются составные имена:
<имя объекта>.<имя поля>
<имя объекта>.<имя метода>(<список фактических параметров>)
Для того чтобы получить доступ к элементам класса через указатель на объект, используется не «.», а «->»:
<указатель на объект>-><имя_поля>
<указатель на объект>-><имя метода>(<список фактических параметров>).
Пример описания класса и обращения к элементам объекта:
class TNewForm : public TForm
{
public:
void SetGeometry(int x, int y, int w, int h);
private:
int x, y, w, h;
};
var
TNewForm new_form;
TNewForm * pnew_form;
...
new_form.x = 5;
new_form.y = 10;
...
pnew_form->w = 50;
pnew_form->h = 100;
...
pnew_form->SetGeometry(5, 10, 50, 100);