74246

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

Лекция

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

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

Русский

2014-12-30

372.5 KB

2 чел.

Лекция

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

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

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

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

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

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

Контроль на этапе разработки, Метод пошаговой детализации с использованием 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


 

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

81953. Республика Беларусь в системе мирохозяйственных связей. Внешняя торговля Республики Беларусь 46.47 KB
  Для того чтобы определить, насколько Беларусь интегрирована в систему мирохозяйственных связей, необходимо оценить степень вовлеченности республики в систему международного разделения труда и международного обобществления производства страны путем участия в МРТ, выяснить ее место и роль...
81954. Звезды и их эволюция 47.05 KB
  Поверхностный взгляд найдет сходство между звездами и планетами. Ведь и планеты при наблюдении простым глазом видны как светящиеся точки различной яркости. Планеты изменяют свое положение на небе, перемещаются из одного созвездия в другое и за год успевают пройти значительный путь...
81955. Электроснабжение механического цеха 93.42 KB
  Работа приемников электроэнергии зависит от ее качества. Качество электроэнергии и, в частности, например: отклонение напряжения, вызывает изменение скорости движения электроприводов, что уменьшает или увеличивает производительность механизмов.
81956. Значення й методи аналізу майна підприємства. Основні показники оцінки майнового стану підприємства 40.13 KB
  Неодмінною складовою переходу України до ринкових відносин є створення нових підприємницьких структур та приватизація підприємств. Цей перехід зумовив еволюцію відносин власності і типів субєктів господарювання в напрямку забезпечення їх розмаїття.
81957. Расчет экономической эффективности восстановления детали 1.09 MB
  В процессе работы любой машины происходит износ ее деталей. Это естественное изнашивание носит закономерный характер и происходит в результате трения сопрягаемых поверхностей деталей, тепловых и химических воздействий среды, изменения физико-механических свойств материала деталей вследствие старения и усталости.
81958. Современные средства обучения и технического оснащения классов в современной школе 134.5 KB
  Средства обучения – обязательный элемент оснащения образовательного процесса. Наряду с целями, содержанием, формами и методами обучения средства обучения являются одним из главных компонентов дидактической системы.
81959. ОСОБЕННОСТИ РАЗВИТИЯ ФИЗИЧЕСКОЙ КУЛЬТУРЫ В РАБОВЛАДЕЛЬЧЕСКОМ ОБЩЕСТВЕ 107 KB
  Особенности развития физической культуры в Древнем Риме. Физическая культура в государстве достигшем наивысшей ступени развития в эпоху древнего мира относится к числу наиболее противоречивых проблем истории физической культуры.
81960. Единица величины, основной принцип измерения, результат измерения 90.58 KB
  Таким образом получение информации о значениях физической величины как некоего числа принятых для нее единиц и есть главная задача измерений. А вторые неаддитивные величины прямо не измеряются так как они преобразуются в непосредственное измерение величины или измерение путем косвенных измерений.
81961. Рыцари периода сервантесовской Испании. Пародийность рыцарского романа «Хитроумный идальго Дон Кихот Ламанчский» 45.12 KB
  Роман по своей форме является пародией на рыцарские романы, очень популярные в то время. Роман, состоит из двух частей, при всем единстве фабулы существенно отличающихся друг от друга. Однако основным моментом содержания является описание окружающего общества, социальной несправедливости, и все это в форме рыцарского романа.