74246

Объектно-ориентированное программирование. Теоретические основы ООП

Лекция

Информатика, кибернетика и программирование

В основе любого языка лежит некоторая идея, оказывающая существенное влияние на стиль программ. Исторически первой была идея процедурного программирования.

Русский

2014-12-30

372.5 KB

3 чел.

Лекция

Объектно-ориентированное программирование

Теоретические основы ООП

В основе любого языка лежит некоторая идея, оказывающая существенное влияние на стиль программ. Исторически первой была идея процедурного программирования.

Процедурное программирование

Подпрограммы – совокупность операторов, к которым можно обращаться несколько раз. (Пример, одного из первых языков – фортран)

         Структурное программирование (стиль программирования) – совокупность рекомендуемых  технологических приемов.

Контроль на этапе разработки, Метод пошаговой детализации с использованием 3 базовых структур (следование,  альтернатива, повторение)

          Следующий этап  - повышение роли организации данных (Паскаль).

Логическим следствием развития этого этапа стал модульный подход к разработки программ

Модульное программирование предполагает выделение групп подпрограмм, использующие одни и те же глобальные данные  (типы данных).

Например, System

В виде модулей  реализованы также библиотеки классов и компонент (VCLVisual 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. .

Этапы разработки ПО с использованием ООП.

  1.  Анализ предметной области. На этом этапе выполняется объектная декомпозиция разрабатываемой системы. По результатам анализа разрабатывается структурная схема программного продукта, на которой показываются основные объекты и сообщения, передаваемые между ними.
  2.  Проектирование:
  •  логическое проектирование, при котором принимаемые решения практически не зависят от условий эксплуатации (операционной системы и используемого оборудования); Результатом является иерархия или диаграмма классов, отражающие взаимосвязь классов, и описание классов.
  •  Физическое проектирование включает объединение описаний классов в модули, выбор схемы их подключения (статическая или динамическая компоновка), определение способов взаимодействия с оборудованием, с операционной системой и/или другим программным обеспечением (например, базами данных, сетевыми программами), обеспечение синхронизации процессов для систем параллельной обработки и т.д.
  1.  Эволюция системы – это процесс поэтапного подключения классов к проекту. Создание основной программы и тестирование.
  2.  Модификация – процесс добавления новых функциональных возможностей или изменение существующих свойств системы.

Технология разработки  Windows приложения

Delphi и Visual C++ - это объединение идеи событийного управления, ООП и визуального программирования.

  1.  В Delphi и С++ Builder используется библиотека объектов VCL (Visual Component Library) - библиотека визуальных компонент.  

Практически эти среды отличаются языком разработки:

Delphi использует Object Pascal, С++ Builder – C++

Любое приложение состоит из минимум 3 объектов: объекта - приложения, объекта - формы (окна) и объекта экрана.

Все окна приложения строятся на базе класса формы TForm.   

       B VCL форма - это окно.

Объект приложения строится на базе класса TApplication.

  1.  Delphi и С++ Builder - пример RAD системы ( Rapid Application Development) -   Среда быстрой разработки приложений в основе которой лежит технология визуального проектирования и событийного  программирования. Проектировщик создает проект окна и переносит на него мышью нужные элементы с панели компонент. Затем определяет свойства компонент и пишет обработчики событий.

  1.  Основные принципы событийного программирования.

Событийным называется программирование, при котором программа представляет собой набор обработчиков некоторых событий. В качестве событий при этом могут интерпретироваться как нажатие какой-либо “кнопки” в окне программы, так и некоторые ситуации в самой программе (например, вызов формы). Таким образом, основной цикл работы программы представляет собой ожидание какого-либо события, вызов соответствующего обработчика для обработки этого события, после чего вновь следует ожидание события, и цикл повторяется.

Примеры событий:

OnClick – щелчек мыши

OnDblClick  двойной щелчек мыши

OnMouseDown   нажатие кнопки мыши

OnMouseUp       отпускание кнопки мыши

OnMouseMove  перемещение  мыши

OnKeyPressed  нажатие клавиши клавиатуры

OnKeyUp    отпускание клавиши клавиатуры


Среда программирования Delphi.

При вызове интегрированной среды Delphi на экране появляется окно:

главное меню;

панель быстрого доступа;

палитра компонент; (Tool Palette)

инспектор объектов (Object Inspector);

чистое окно формы (Form1) и под ним чистое окно программы (Unit1).

RAD Studio XE7

Embarcadero® RAD Studio XE7 — это комплексное решение для разработки программного обеспечения, ускоряющее создание нативных приложений для Windows, OS X, iOS и Android на базе единого исходного кода.

Для пользователя нативными являются приложения, которые требуют установки. В целом, это верно, как и то, что такие приложения разрабатываются специально под мобильные платформы (iOS, Android, Windows Phone). Поэтому от разработчика требуются навыки программирования в конкретной среде разработки (xCode для iOS, eclipse для Android).

На выходе это дает приятный внешний вид и беспроблемное взаимодействие приложения с мобильной ОС. Нативные приложения также намного опережают и гибридные и веб-приложения в вопросах безопасности. Такие приложения с наименьшим поглощением ресурсов используют камеру, микрофон, акселерометр, плеер и прочие функции. Условно нативные приложения можно поделить на две группы: приложения, которым необходимо интернет-соединение, и оффлайн приложения.

На смену библиотеки классов VCL пришла кроссплатформенная библиотека FireMonkey (один из ее разработчиков Евгений Крюков из Улан-Удэ) сейчас работает в Embarcadero.

 

Embarcadero Technologies — американская компания, занимающаяся разработкой программного обеспечения для создания средств управления базами данных и самих баз данных. Компания была основана в октябре 1993 года 

Компания имеет офисы в Торонто, Мельбурне, Мюнхене, Мейденхед (Великобритания), Яссах (Румыния), Санкт-Петербурге (Россия).

7-го мая 2008 года корпорация Borland объявила о продаже своей дочерней компании CodeGear. CodeGear занималась созданием популярных средств разработки программного обеспечения: Delphi, C++Builder и другими. В итоге, Embarcadero приобрела CodeGear за $23 млн и с обязательством погашения $7 млн долгов Borland.

Visual Studio 2015

12 ноября 2014г в Нью Йорке состоялась конференция Microsoft Connect(), на которой анонсированы новые продукты и технологии. Выпущена предварительная версия Visual Studio 2015, специальная бесплатная редакция Visual Studio Community 2013, , обновлены инструменты кросс-платформенной разработки, в Visual Studio появился эмулятор ОС Android.

Литература

  1.  Г.С. Иванова, и др.  Объектно–ориентированное программирование.-М. Изд-во МГТУ им. Н.Э. Баумана, 2001.-320с.
  2.  Д. Осипов. Delphi Программирование для Windows, OS X, iOS и Android. -  СПб: БХВ-Петербург, 2014

PAGE  12


 

А также другие работы, которые могут Вас заинтересовать

36166. Защита от ошибок в формате CD 52 KB
  Из теории помехоустойчивого кодирования известно что для коррекции t ошибок код должен иметь не менее 2t проверочных символов граница Синглтона. Значит каждый из них может исправить не более двух ошибок. Известно также что максимальное число гарантированно обнаруживаемых ошибок равно числу проверочных символов кода.
36167. SSD (Solid State Drive). Преимущества и недостатки 20.06 KB
  SSD логически эмулирует обычный жёсткий диск HDD и теоретически везде может применяться вместо него. SSD использующие динамическую память DRAM а не флэшпамять часто называются RAMdrive и имеют ограниченное применение например в качестве выделенного диска для файла подкачки ОС. Сердцем SSD является микросхема контроллера которая в первую очередь определяет такие ключевые характеристики SSD как внешний интерфейс быстродействие и энергопотребление. Преимущества и недостатки Преимущества SSD над HDD.
36168. Магнитные головки для записи информации на жесткий диск 112 KB
  Вначале это были монолитные головки. Композитные головки выполнены из феррита на подложке из стекла или твердой керамики и имеют меньшие размеры в сравнении с монолитными. Дальнейшим развитием технологии композитных головок стали так называемые головки MIGтипа MIG Metal In Gap.
36169. Технологии записи на магнитные диски 206 KB
  Домены магнитных материалов используемых в продольной записи располагаются параллельно поверхности носителя. Этот эффект и используется при записи цифровых данных магнитным полем головки изменяющимся в соответствии с сигналом информации. Попытки увеличить поверхностную плотность записи путем уменьшения размеров частиц будут увеличивать отношение размера зоны неопределенности к размеру полезной зоны не в пользу последней и в конце концов неизбежно приведут к так называемому суперпарамагнитному эффекту когда частицы перейдут в однодоменное...
36170. ОПТИЧЕСКИЕ ГОЛОВКИ 260 KB
  Задача эта непростая поскольку большинство оптических элементов адаптировано как правило для работы с излучением только одной длины волны. Вопервых необходимо было обеспечить приемлемое рабочее расстояние объектива при любой длине волны излучения. Вовторых обеспечить компенсацию сферических аберраций также при любой длине волны излучения. Втретьих обеспечить изменение числовой апертуры объектива в зависимости от длины волны проходящего через него света.
36171. SuperAudioCD 87 KB
  Следует заметить что технология одноразрядного квантования используется сейчас и для преобразования звука в других форматах однако там полученный одноразрядный поток в конце концов всетаки приводится к последовательности многоразрядных отсчетов 16 20 24разрядных и в дальнейшем все операции по формированию потока данных перед записью на носитель производятся уже с ними. Этот слой является носителем данных DSD и считывается оптической головкой с числовой апертурой 06 лучом лазера с длиной волны излучения 650 нм. В процессе...
36172. Варианты формата CD 133 KB
  Такая версия компактдиска появилась в 1985 году и получила название CDROM Read Only Memory память только для чтения. Поскольку диск CDROM предстояло использовать в составе вычислительных комплексов различной сложности то для него был разработан специальный дисковод легко вписывающийся в архитектуру компьютера. Дополнительное кодирование в CDROM производится до того как данные поступают на кодер CIRC точно такой же как в системе защиты от ошибок формата CDAudio. В формате CDROM эти 24 символа являются обезличенными и могут нести...
36173. ИЗГОТОВЛЕНИЕ BD-ДИСКОВ 401 KB
  Мастеринг BDдисков Существует три основные технологии мастеринга BDдисков: метод PTM иммерсионный метод и метод записи пучком электронов. Системы EBR Electron Beam Recorder использующие для записи пучок электронов наиболее дороги но позволяют получить очень высокое разрешение.1 иллюстрирует процесс формирования дорожки записи. Такая длина волны близка к длине волны излучения газовых лазеров которые применяются для записи оптических дисков в форматах CD и DVD.
36174. Структура минидиска 56.5 KB
  Частота сигнала вобуляции равна 2205 кГц. Эту частоту легко получить путем деления пополам частоты дискретизации звукового сигнала fд = 441 кГц. Кодирование данных DIP производится перед изготовлением диска путем частотной модуляции несущей fн = 2205 кГц бифазным кодом. Модуляция осуществляется с помощью тактовой частоты fт = 6300 Гц которая получается путем деления частоты дискретизации 441 кГц на 7 см.