
- •Вопросы к итоговому государственному междисциплинарному экзамену по дисциплине «Объектно-ориентированное программирование»
- •Объектно-ориентированное программирование как методология разработки программ. Структура объектно-ориентированной программы. Привести пример описания объектного типа.
- •Соотношение основных понятий ооп. Привести примеры программного обращения или описания основных понятий ооп.
- •Принципы объектно-ориентированного программирования. Понятие инкапсуляции, наследования и полиморфизма. Привести примеры программного описания.
- •2 Основные характеристические свойства понятий
- •Простое и множественное наследование. Правила наследования. Привести пример простого наследования.
- •Скрытие данных в объектном типе. Назначение директив private и public. Привести пример управления доступом к элементам класса.
- •Понятие виртуального метода. Назначение и отличие виртуальных и динамических методов. Правила вызова виртуальных методов. Привести пример объявления виртуального метода.
- •Выделение памяти под экземпляр объекта. Привести пример объявления и реализации конструктора и деструктора.
- •Исключительные ситуации в терминологии ооп. Глобальная и локальная обработка исключений. Привести пример использования операторов контроля исключительных ситуаций при локальной обработке.
- •Понятие проекта Delphi. Состав проекта Delphi. Основные файлы проекта, их характеристика. Привести примеры программного кода основных файлов проекта.
Скрытие данных в объектном типе. Назначение директив private и public. Привести пример управления доступом к элементам класса.
Объектный тип осуществляет синхронизацию кода и данных путем совместного построения их описания. Чтобы получить значение одного поля объекта необходимо вызвать соответствующий метод, который возвращает значение нужного поля. Чтобы присвоить полю значение, также необходимо вызвать метод, который назначает данному полю новое значение. Необходимо предусмотреть объекты методы, которых доступны, но непосредственный доступ к данным объекта запрещен. Для этого используются скрытые поля и методы.
В соответствии с концепцией объектно-ориентированного программирования (инкапсуляцией) в Delphi существуют четыре директивы видимости, предназначенные для сокрытия полей и методов внутри объекта. Первая из них — private. Это сама строгая из всех директив видимости. Поля и методы, объявленные в этой секции, не будут видны во всех классах-потомках.
Вторая, менее строгая — protected. Она предназначена для объявления тех полей и методов, которые должны быть видны в классах-потомках. Поля, свойства и методы, описанные в разделе protected, называются защищенными. Директива protected определяет принципиально отличные правила области видимости и обеспечивает ограничение доступа наряду с директивой private. Но если private обеспечивает защиту на уровне исходного модуля, где сделаны описания, то protected ограничивает доступ на уровне исходного класса, где были объявлены поля свойства и методы. Protected защищает свои описания от прямого использования объектами в других модулях.
Следующая директива — public, предназначена для объявления элементов, которые будут видны программе или модулю, если они имеют доступ к модулю, в котором объявлен класс. Поля, свойства и методы, описанные в разделе public, называются общедоступными или публичными. Их область видимости подчиняется рассмотренным правилам общего случая. Поля, свойства и методы, расположенные сразу после заголовка класса по умолчанию принимаются общедоступными.
Последняя директива — published. Она предназначена для объявления тех свойств, которые должны быть видны в инспекторе объектов на этапе проектирования (design-time). Поля, свойства и методы, описанные в разделе published, называются опубликованными. Их область видимости эквивалентна области видимости общедоступных описаний. Отличие состоит в том, что для опубликованных полей, свойств и методов генерируется дополнительная информация об их типе, которая доступна во время выполнения.
type
TProgressBar1 = class(TProgressBar)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;
Наиболее часто применяемыми остаются две директивы – private и public. Рассмотрим пример на их использование:
Пример
unit Unit1;
interface
…
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
t:integer;
public
n,m,f:integer;
end;
…
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
t:=2;
n:=2;
m:=2;
form2.show;
end;
end.
unit Unit2;
…
uses Unit1;
…
procedure TForm2.Button1Click(Sender: TObject);
var i:integer;
begin
i:=Form1.n*Form1.m;
Edit1.Text:=IntToStr(i);
end;
end.
На рисунке 13 изображен данный пример при проектировании в среде Delphi.
Рисунок 13 – Вид окна модуля в Delphi