Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (принципы объектно–ориентированного программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.07.2023

Просмотров: 254

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

В настоящее время использование объектов в программировании очевидно для всех. Вначале многие программисты не воспринимали идеи объектно–ориентированного подхода. Прошло более 20 лет, пока объектно–ориентированное программирование получило уровень современного развития. Первым языком, в котором стали применятся объектно–ориентированные методы, был Simula 67. Затем объектно–ориентированные подходы стали использоваться и в более мощных языках программирования, таких как Delphi, C++ и другие. Одной из первых сред для создания пользовательского интерфейса в среде MS–DOS была библиотека Turbo Vision.

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

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

Объект имеет свойства, аналогичные, как у обычных предметов. Свойства объекта могут быть установлены, а затем – прочитаны. Со стороны программы доступ к свойствам осуществляется через поля и методы.

Особую актуальность объекты приобрели с появлением многофункционального пользовательского графического интерфейса. Поэтому в современных языках программирования применение объектов необходимо.

В период консольно–ориентированных прикладных программ объекты использовались только для разбиения некоторой сложной задачи на более простые подзадачи.

Но после появления графических систем, значительно усложнилось разработка интерфейса. Программисту стало необходимо также выполнять и дизайнерские функции, выполняя компоновку элементов пользовательского интерфейса, такие как метки, поля ввода и так далее. Далее появилась идея применять визуальные объекты, объединяя программное и видимое составляющее объекта. Полученный результат был назван компонентом.

Объектом исследования в настоящей работе выступает объектно–ориентированное программирование.


Предметом исследования в работы являются возможности современных языков программирования, поддерживающих объектно–ориентированный подход.

Цель настоящей работы состоит в рассмотрении возможностей применения объектно–ориентированного подхода при проектировании информационных систем.

Вопросы объектно–ориентированного программирования рассматриваются такими авторами, как Г.С.Иванова, А.С.Лесневский, М.Е.Фленов, П.Б.Хорев. Данная литература была отобрана в связи с тем, что содержит фундаментальные основы использования объектно–ориентированного программирования.

1. Принципы объектно–ориентированного программирования

1.1. Понятие класса

Основными понятиями объектно–ориентированного программирования является класс и объект. Объект является физической реализацией класса.

Под классом понимается сложная структура, которая аналогична типу. В класс входит ни только описание данных, процедур и функций, выполняемых над объектом, но и характеристики используемых данных, а также подпрограмм[1].

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

Принято классы задавать в разделе объявления некоторого модулями. Для возможности их использования другими модулями, они должны быть объявлены в интерфейсной части модуля[2].

К объявлению класса в Object Pascal применяются те же правила, что и для объявления каждого типа. Описание каждого класса начинается словом class, затем идет указание родительского класса, которое заключается в круглые скобки. Если конкретное указание класса опускается, под родительским классом подразумевается TObject. Класс TObject в объектно–ориентированной модели Object Pascal считается предком для всех остальных классов. Затем следует описание данных, методов и свойств, каждое из которых располагается в отдельной строке. Для завершения описания класса используется ключевое слово End[3].

Порядок записи полей, методов и свойств класса не имеет значения, но общепринят следующий порядок: поля, методы, свойства.


Рассмотрим пример описания некоторого простого класса[4]:

TTAddress=class

Private

country:string[20];

town:string[20];

street:strring[30];

flat:integer;

public

procedure pokaz;

end;

В данном примере TTAddress является именем класса, country, town, street, flat – именами полей, а pokaz – именем метода.

При объявлении метода в классе указываются только их заголовки. Непосредственное же тело метода описывается в исполнительной части модуля, по аналогии с описанием подпрограмм, используемых в модулях.

Может возникнуть ситуация, когда двумя классами используются характеристики друг друга. При такой ситуации необходимо использовать для одного из классов объявление, до объявления другого класса, это выполняется аналогично, как для подпрограмм, используя директиву Forward. В случае использования опережающего объявления, вначале указывается только имя самого класса, а далее, после знака равенства, слово class[5], как показано ниже:

TObject = class;

Затем в тексте программы, класс, который был предварительно объявлен, должен быть описан в соответствующем месте программы. Данное описание производится аналогично, как было описано для случая, без использования предварительного объявления[6].

Некоторые составляющие класса могут различным образом использоваться за пределами своего класса. Данное свойство именуется областью видимости. В языке объектно–ориентированного программирования Borland Delphi, область видимости может задаваться несколькими способами, с помощью размещения в одном из разделов private, public, protected, published, automated. Перечисленные средства задания видимости могут идти в программе в любой последовательности[7].

Структура описания класса в общем виде можно представит следующим образом:

Type

Имя_нового_класса = class(Имя_класса_родителя)

Описание опубликованных полей, методов и свойств

Private

Описание скрытых полей, методов и свойств

Public

Описание общедоступных полей, методов и свойств

Protected

Описание защищенных полей, методов и свойств

Published

Описание опубликованных полей, методов, свойств;

Automated

Описание полей, методов и свойств OLE-объектов;

end;

1.2. Понятие объекта

Объекты каждого класса должны быть объявлены в разделе var, например, следующим образом[8]:


var

address1: TTAddress;

address2: TTAddress;

Необходимо учитывать тот факт, что под объектом в Object Pascal понимается некоторая динамическая структура. Переменная содержит не сам объект, а ссылку на него. В связи с этим, программисту необходимо ни только выделить память под эти объекты, но также присвоить им некоторые начальные значения[9].

Чтобы выделить память, а также выполнить инициализацию объекта применяется специальный метод, называемый конструктором. Обычно конструктору дается имя create, что означает «создать». Для отличия конструктора от процедуры, он обозначается ключевым словом constructor.

Далее приведем пример класса TTAddress с использованием конструктора[10]:

TTAddress=class

Private

country:string[20];

town:string[20];

street:strring[30];

flat:integer;

constructor create; // инициализация конструктора

public

procedure pokaz; // объявление метода

end;

При выполнении присваивания результата метода–конструктора к классу объекта происходит выделение памяти. Рассмотрим пример[11]:

kvartira:=TTAddress.create;

при этом будет выделена необходимая память для объекта kvartira.

Кроме выделения памяти, конструктор выполняет задачу задания всем полям объекта некоторых начальных значений. Рассмотрим пример использования конструктора для объекта TTAddress[12].

Constructor TTAddress.create;

begin

country:=’’;

town:=’’;

street:=’’;

flat:=0;

end;

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

После того, как объект объявлен и проинициализирован, он становится доступен для использования. К примеру, становится возможным установление значения для некоторого поле данного объекта. Для осуществления доступа к некоторому полю объекта, указывается имя объекта и имя поля, разделенные точкой. Независимо от того, что объект представляет собой ссылку, для объектов не используется знак ^[13].

Так, чтобы получить доступ к полю street объекта Address, следует использовать запись Address.street, а не Address^.street.

В случае, если далее в программе использование объекта не требуется, имеется возможность освободить память, которую занимает объект. Освобождение памяти происходит с помощью использования метода–деструктора free[14].


К примеру, для освобождения памяти, которую занимают поля объекта kvartira, следует использовать команду

Kvartira.free;

1.3. Методы и их использование

Под методами понимаются процедуры и функции, которые объявлены при описании класса и выполняют некоторые действия над его объектами. Объявление и описание методов аналогично описанию подпрограмм в модуле. Это означает, что в интерфейсной части модуля внутри класса дается только заголовок подпрограммы, а само описание метода дается уже в исполнительной части. Для вызова метода на выполнение, следует через точку указать имя объекта и метода[15]. К примеру, следующий оператор

Address.pokaz

осуществляет вызов метода pokaz применительно к объекту Address.

Методы в тексте программы описываются аналогично обычным процедурам и функциям. Отличие состоит в том, что процедура и функция, если является методом, имеет имя, включающее имя класса и имя самого метода, разделенные точкой[16].

Рассмотрим объявление метода pokaz для класса TTAddress, который был описан выше.

// описание метода pokaz для класса TTAddress;

Procedure TTAddress.pokaz;

Begin

ShowMessage(‘Страна: ’+country+#13+’ Город: ’+town+#13+’ Улица: ’+street+’ Квартира ’+flat);

End;

Нужно учитывать, что при доступе к полям объекта в операторах можно не указывать имя объекта[17].

Чаще всего методы применяются к объектам программы, которые были созданы ранее. Указанные методы считаются методами объекта. Delphi поддерживает создание и использование методов, которые могут использоваться до создания объектов класса. Примером таких методов являются конструкторы, вызываемые, чтобы создать объект. Такие методы являются методами класса с соответствующим оформлением.

Такие методы объявляются, начиная со слова class, за которым следует стандартное описание метода. Рассмотрим пример[18]:

TPersonalForm=class(TForm)

Class procedure SozdanieSoobsheniy;

End;

Class procedure TPersonalForm. SozdanieSoobsheniya;

begin

end;

1.4. Понятие инкапсуляции и ее влияние на свойства объекта

Инкапсуляция – это скрытие полей некоторого объекта, так чтобы к ним можно было обращаться только через методы данного класса. Для разграничения прав доступа к полям некоторого объекта реализуется через его свойства[19]. Свойство некоторого объекта характеризуется полем, в котором хранится свойство, а также двумя методами, которые обеспечивают доступ к свойствам поля[20].