лекция 8 Объекты 2 (8 лекций в ворде)
Описание файла
Файл "лекция 8 Объекты 2" внутри архива находится в папке "Lection 8". Документ из архива "8 лекций в ворде", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "лекция 8 Объекты 2"
Текст из документа "лекция 8 Объекты 2"
Лекция
Объектно-ориентированное программирование
Теоретические основы ООП
В основе любого языка лежит некоторая идея, оказывающая существенное влияние на стиль программ. Исторически первой была идея процедурного программирования.
Процедурное программирование
Подпрограммы – совокупность операторов, к которым можно обращаться несколько раз. (Пример, одного из первых языков – фортран)
Структурное программирование (стиль программирования) – совокупность рекомендуемых технологических приемов.
Контроль на этапе разработки, Метод пошаговой детализации с использованием 3 базовых структур (следование, альтернатива, повторение)
Следующий этап - повышение роли организации данных (Паскаль).
Логическим следствием развития этого этапа стал модульный подход к разработки программ
Модульное программирование предполагает выделение групп подпрограмм, использующие одни и те же глобальные данные (типы данных).
Например, System
В виде модулей реализованы также библиотеки классов и компонент (VCL – Visual library Component), которая была разработана для Делфи и используется в С++ Builder
Windows , Messages, Dialogs, Forms
SysUtils – содержит библиотеку классов стандартных исключений;
Graphics – содержит библиотеку графических компонент.
::= Unit ;
Interface
Implementation
[ Initialization
]
[ Finalization
]
End.
Объектное программирование
Технология создания сложного ПО, основанная на представлении программы в виде совокупности объектов (классов).
Идея заключается в стремлении связать данные с обрабатываемыми эти данные процедурами и функциями в единое целое – класс.
Фактически его можно рассматривать как модульное программирование нового уровня.
Библиотека классов Делфи и С++ - это фактически набор «кирпичиков» для построения программ.
Класс – это структурный тип данных, который включает описание полей, методов (процедур и функций, работающих с этими полями).
Класс ОКНО:
Поля X1,Y1,X2,Y2,Color
Метод Инициализировать(ax1,ay1,ax2,ay2,acolor)
Метод Изобразить
Конец описания
И в Делфи и в С++ задание класса:
Class
{ private: <внутренние (недоступные) компоненты класса>;
protected: <защищенные компоненты класса >;
public: <общие компоненты класса >;
};
Type TPoint = class {класс точка на плоскости}
X,Y: Integer;
Visible:Boolean;
Color:word;
Procedure Init(InitX, InitY, Col:integer);
Procedure Show; ; {нарисовать}
Procedure MoveTo(StepX, StepY: integer); {переместить}
Function IsVisible:boolean; {сделать видимой}
End;
var X1,X2:Tpoint;
class point
{ int x,y,color; //координаты
public:
int getx(){return} //метод получения координаты
void setpoint(int ncv) //метод задания координаты и цвета
}
Point X1,X2; {объекты}
Переменные типа класс называются объектами.
Операции над объектами:
-
Создание, уничтожение;
-
Модификация (обращение к объекту для изменения его состояния);
-
Селекция ( ответ объекта о его состоянии);
-
Итерация (доступ к содержанию объекта по частям, например, массив).
В практике использования объектов, они используются только для разработки сложного ПО и с использованием динамических объектов.
Переменная называется статической, если место для нее выделяется в момент компиляции программы. Динамической – если в момент выполнения программы.
В Делфи все объекты динамические.
Средства разработки классов:
Механизмы инкапсуляции, наследования и полиморфизма.
Инкапсуляция - это объединение сущностей, из которых состоит класс, в единое целое.
Наследование – любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя родителя.
Структура описания класса-потомка:
Type = class (<имя класса родителя >)
<Новые методы класса потомка>
Type Tcircle = class (Tpoint) {класс окружность}
Radius:integer;
Procedure Show;
End;
Определение производного класса выполняется следующим образом:
Class :
{ }
вид : private (закрытый),
protected (защищенный), public (общедоступный)
Class A
{ private: int nz1a;
protected: int nz2a;
public :
int nza;
void print(void)
{…..}
}
class B: private A <все компоненты А не доступны в В>
{private: int nz1b;
…….
}
class C: protected A <защищенное поле и общедоступное поле А доступны в В, но со свойством protected >
{….}
Порожденный класс автоматически наследует поля, методы родителей и может добавлять их новыми. Это средство позволяет использовать имеющиеся классы и создавать новые.
Все классы Делфи и библиотеки VCL (С++ Builder используется библиотека объектов VCL (Visual Component Library) ) порождены от единственного родителя - класса Tobject. Этот класс не имеет полей, но имеет методы общего назначения, обеспечивающие весь жизненный цикл объектов – от создания до уничтожения. В Делфи запрещено множественное наследование – каждый класс имеет только одного родителя. Наследование обеспечивает создание дерева родственных объектов. В С++ Builder классы конструируются по правилам Делфи, но используя синтаксис С++
Полиморфизм - средство, позволяющие называть разные алгоритмические действия одним именем.
Type Tcircle = class (Tpoint)
Radius:integer;
Procedure Init(InitX, InitY, R:integer);
Procedure Show; {нарисовать}
Procedure MoveTo(StepX, StepY: integer); {переместить}
Function IsVisible:boolean; {сделать видимой}
End;
Для реализации полиморфизма в Делфи используются механизмы виртуальных и динамических методов.
Для описания виртуального метода используется слово virtual
Динамического – dynamic
Procedure Show; virtual; {нарисовать}
Встретив эти объявления, компилятор создает таблицы виртуальных и динамических методов и помещает в них адреса точек входа в эти процедуры. Они используются при обращении к этим методам на этапе прогона программы.
Отличие этих методов в том, что таблица динамических методов содержит адреса динамических методов только этого класса, а таблица виртуальных методов содержит информацию о виртуальных методах этого класса и всех его родителей.
В состав любого класса входят 2 специальных метода – конструктор и деструктор.
Конструктор порождает объект и выполняется первым. Конструктор распределяет объекты в динамической памяти.
Деструктор удаляет объекты из кучи.
Описания их с помощью зарезервированных слов – Constructor , Destructor .
У класса Tobject - эти методы называются Create и Destroy, так они называются и в большинстве потомках.
Type TPoint = class
X,Y: Integer;
Visible:Boolean:
Color:word;
Constructor Create (InitX, InitY, Col:integer);
Destructor Destroy;
Procedure Show; virtual {нарисовать}
Procedure MoveTo(StepX, StepY: integer); {переместить}
Function IsVisible:boolean; {сделать видимой}
End
Class A
{ int a1;
public:
virtual void Show(void)
…
}
Классы определяются в модулях. При объявлении класса в интерфейсной секций определяются области видимости элементов класса.
Например,
Private [praivit]– закрытые – доступны только для методов этого класса;
Protected [protekted]– защищенные -доступны для методов этого класса и его потомкам
Public –доступные - нет ограничений на область видимости
Пример. Код программы при создании Приложения
В Делфи
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var Form1: TForm1;
implementation
{$R *.dfm}
end.
Код проекта
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
End. .
Этапы разработки ПО с использованием ООП.
-
Анализ предметной области. На этом этапе выполняется объектная декомпозиция разрабатываемой системы. По результатам анализа разрабатывается структурная схема программного продукта, на которой показываются основные объекты и сообщения, передаваемые между ними.
-
Проектирование:
-
логическое проектирование, при котором принимаемые решения практически не зависят от условий эксплуатации (операционной системы и используемого оборудования); Результатом является иерархия или диаграмма классов, отражающие взаимосвязь классов, и описание классов.
-
Физическое проектирование включает объединение описаний классов в модули, выбор схемы их подключения (статическая или динамическая компоновка), определение способов взаимодействия с оборудованием, с операционной системой и/или другим программным обеспечением (например, базами данных, сетевыми программами), обеспечение синхронизации процессов для систем параллельной обработки и т.д.
-
Эволюция системы – это процесс поэтапного подключения классов к проекту. Создание основной программы и тестирование.
-
Модификация – процесс добавления новых функциональных возможностей или изменение существующих свойств системы.
Технология разработки Windows приложения
Delphi и Visual C++ - это объединение идеи событийного управления, ООП и визуального программирования.
-
В Delphi и С++ Builder используется библиотека объектов VCL (Visual Component Library) - библиотека визуальных компонент.
Практически эти среды отличаются языком разработки:
Delphi использует Object Pascal, С++ Builder – C++
Любое приложение состоит из минимум 3 объектов: объекта - приложения, объекта - формы (окна) и объекта экрана.
Все окна приложения строятся на базе класса формы TForm.
B VCL форма - это окно.
Объект приложения строится на базе класса TApplication.
-
Delphi и С++ Builder - пример RAD системы ( Rapid Application Development) - Среда быстрой разработки приложений в основе которой лежит технология визуального проектирования и событийного программирования. Проектировщик создает проект окна и переносит на него мышью нужные элементы с панели компонент. Затем определяет свойства компонент и пишет обработчики событий.
-
Основные принципы событийного программирования.
Событийным называется программирование, при котором программа представляет собой набор обработчиков некоторых событий. В качестве событий при этом могут интерпретироваться как нажатие какой-либо “кнопки” в окне программы, так и некоторые ситуации в самой программе (например, вызов формы). Таким образом, основной цикл работы программы представляет собой ожидание какого-либо события, вызов соответствующего обработчика для обработки этого события, после чего вновь следует ожидание события, и цикл повторяется.
Примеры событий:
OnClick – щелчек мыши
OnDblClick двойной щелчек мыши