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

Введение

Целью курсовой работы является разработка программного продукта для предметной области «Работники образовательной организации» с применением языка программирования Delphi. Для выполнения данной курсовой работы необходимо разработать алгоритм решения, правильно указав последовательное выполнение соответствующих команд для получения необходимых результатов.

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

Программирование одна из самых сложных наук, и объем информации, усваиваемой программистом очень сложно запомнить. Для помощи программистам создаются и разрабатываться приложения, ориентированные на задачи программистов. Они помогают облегчить жизнь начинающему программисту и сэкономить время более опытному программисту; исключают поиск нужной справочной информации в интернете и библиотеках, обеспечивая нужными данными прямо на рабочем месте. Время - главный фактор в работе программиста, от которого зависит заработная плата. Иногда сроки на написание программы очень сжаты, и это не позволяет тратить много времени на поиск информации в книгах и справочниках. Можно использовать поиск в интернете, но еще более упрощает работу программиста справочное приложение. Так же, как и при помощи интернета, программист может найти информацию, не отходя от рабочего места. Преимущество приложения перед интернетом в том, что оно исключает «копание» по сайтам, попадание спама и вирусов в ПК. А попадания вирусов в компьютер может привести к самым нежелательным последствиям.


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

Объектно-ориентированное программирование (ООП) зародилось в языках программирования Паскаль, Ада, С++. До появления ООП технология создания компьютерных программ базировалась на процедурном программировании, в котором основой программ являлись функции и процедуры, т.е. действия. Созданная т.о. компьютерная программа отличалась четким алгоритмом работы – последовательностью действий по достижению поставленной цели. В ООП основной точкой опоры при проектировании программы является – объект. Программа ООП – это не последовательность операторов, а совокупность объектов и способов их взаимодействия. Обмен информацией между объектами происходит посредством сообщений.

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

2) Основным понятием ООП является понятие класса: классом – называют особую структуру, которая может иметь в своем составе поля, методы и свойства. Класс – это множество объектов, которые обладают внутренними свойствами, присущими любому объекту класса. Причем специфика класс проводится путем определения его внутренних свойств (классообразующие признаки). Класс выступает в качестве объектного типа данных. Классы имеют поля (как тип данных Record), свойства (напоминающие поля, но имеющие дополнительные описания) и методы (подпрограммы, которые обрабатывают поля и свойства класса). Базовым классом для всех объектов в Delphi, является класс TObject. Этот класс инкапсулирует основные функции, свойственные всем объектам Delphi. Все классы в Delphi являются прямыми или косвенными наследниками этого класса.

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

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

4) Наследование. В терминах Паскаль объект наиболее схож с типом Record, который является структурированным типом для объединения нескольких связанных элементов под одним именем. Предположим, что требуется написать программу, которая подсчитывает размер стипендий и заработной платы в институте или университете. Переменная (назовем ее TPerson), содержащая данные об именах студентов и сотрудников, дате и размере выплат, могла бы выглядеть следующим образом:

TPerson = Record

Name: String [30]; {поле – имя}

Date: String [10]; {поле – дата}

RazV: Real; {поле – размер выплаты}

End;

Каждое значение, присвоенное переменной TPerson, является экземпляром типа record, представляет два уровня абстракции, т.е. можно рассматривать поля Имя, Дата, Размер_выплат по отдельности, или в совокупности для описания конкретного человека как TPerson.

Предположим, что программа должна учитывать выплаты денег студентам и сотрудникам. В каждой группе выплаты производятся особым способом. Можно создать другой тип записи для группы студент. Для получения данных о том, сколько денег должен получать студент, необходимо знать его средний балл, можно построить запись TStudent вида:

TStudent = Record

Name: String [30];

Date: String [10];

RazV: Real;

Ball: Real; {средний балл}

End;

Однако можно сохранить тип TPerson путем создания поля Student типа TPerson внутри типа TStudent.

TSudent = Record

Student: TPerson;

Ball: Real;

End;

Такая конструкция удобна и проста, поэтому постоянно используется в программировании. Для студента тип TStudent должен содержать все поля, которые имеются в записи TPerson, при этом тип TStudent является типом потомком для типа TPerson. TStudent наследует все, что принадлежит TPerson, и кроме того, содержит новые поля, которые делают TSudent уникальным.

Процесс, с помощью которого один тип наследует характеристики другого типа, называется наследованием. В Delphi все классы являются потомками класса TObject. В примере два связанных типа объектов могли бы определяться следующим образом:

TPersonal = Object

Name: String [30];

Date: String [10];

RazV: Real;

End;

5) Операции и методы. Функция (или преобразование), которую можно применять к объектам данного класса, называется операцией. Если одна и та же операция применяется к объектам разного класса, то ее называют полиморфной. Обычно при работе с записями возникает проблема инициализации полей записи. Для присвоения полям, в рассмотренном ранее примере, начальных значений можно использовать оператор With, но при необходимости инициализировать более одной записи придется использовать большое число операторов With, которые будут выполнять одни и те же действия. Поэтому естественным является создание инициализирующей процедуры, которая обобщает применение оператора with к любому экземпляру типа TPerson, передаваемого в качестве параметра:

Procedure Init (var Person: TPerson; N, D: String; R: Real);

Begin

With Person do begin

Name: = N;

Date: = D;

RazV: = R;

End;

End;

Процедура Init, включенная в объект специально для обслуживания типа TPerson, называется методом, т.е. метод – это процедура или функция, включенная в объект таким образом, что экземпляр данного типа становится доступным для нее изнутри. Поля и методы являются двумя составными частями новой структуры, называемой объектом. С учет вышесказанного объект TPerson можно описать следующим образом:

Type

Tperson = Object;

Name: String [30];

Date: String [10];

RazV: Real;

Procedure Init (N, D: String; R: Real);

End;

Procedure TPerson. Init (N, D: String; R: Real);

Begin

Name: = N;

Date: = D;

RazV: = R;

End;

Таким образом, каждой операции соответствует метод – реализация этой операции для объектов данного класса. Каждая операция имеет один неявный аргумент – объект, к которому она применяется. Выбор метода связан только с классом и объектом. Теперь для инициализации экземпляра типа TStudent достаточно просто вызвать его метод:

Var Person: TPerson;

Person. Init (» Николай Иванович ‘, ‘25–06–1995 ‘, 40000);

6) Определение методов. Процесс определения методов напоминает создание модулей в Turbo Pascal. Внутри объекта метод определяется заголовком процедуры или функции, действующей как метод:

Type

Tperson = Object;

Name: String [30];

Date: String [10];

RazV: Real;

Procedure Init (N, D: String; R: Real);

Function GetName: String;

Function GetDate: String;

Function GetRazV: Real;

End;

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

Procedure TPerson. Init (N, D: String; R: Real);

Begin

Name: = N;

Date: = D;

RazV: = R;

End;

Function TPerson. GetName: String;

Begin

GetName: = N;

End;

Function TPerson. GetDate: String;

Begin

GetDate: = D;

End;

Function TPerson. GetRazV: Real;

Begin

GetRazV: = R;

End;

7) Свойства объекта. Совокупность данных и методов их чтение и записи называются свойством. Свойства объектов можно устанавливать в процессе проектирования, а также можно изменять программно во время выполнения программы. (В процессе проектирования приложений в среде программирования Delphi можно просматривать значения некоторых из этих данных в окне Инспектора Объектов и изменять эти значения).

8) События и их обработка. Средой взаимодействия объектов являются сообщения, генерируемые в результате наступления различных событий. Событие – это взаимодействие на объект. Событие наступает в результате действий пользователя (перемещение курсора, нажатие кнопки и т.п.). В каждом объекте определено множество событий, на которые он может реагировать. В конкретных объектах могут быть определены обработчики каких-то из этих событий. К написанию этих обработчиков и сводится основное программирование с помощью Delphi.

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