Практикум по объектно-ориентированному программированию на базе языка с++ Учебно-методическое пособие



Pdf көрінісі
бет2/44
Дата21.02.2024
өлшемі0.49 Mb.
#492719
түріПрактикум
1   2   3   4   5   6   7   8   9   ...   44
ООП С

 
 

ВВЕДЕНИЕ 
 
Объектно-ориентированное программирование (ООП) – современ-
ная парадигма программирования. Как известно, все программы состоят 
из двух элементов: кода и данных. Любая программа может быть концеп-
туально организована либо вокруг ее кода («Кодовое воздействие на дан-
ные»), либо вокруг данных («Управляемый данными доступ к коду»). 
При первом (процедурном) подходе программу определяет последова-
тельность операторов ее кода. Второй подход организует программу во-
круг данных (т. е. вокруг объектов) и набора хорошо организованных ин-
терфейсов (взаимодействий) с этими данными. 
Объектно-ориентированная парадигма, при которой программа 
рассматривается как совокупность фрагментов кода, обрабатывающих 
отдельные совокупности данных – объекты. Эти объекты взаимодей-
ствуют друг с другом посредством, так называемых интерфейсов. При 
этом данные управляют доступом к коду. 
Объектно-ориентированное программирование – это методология 
программирования, основанная на представлении программы в виде со-
вокупности объектов, каждый из которых является экземпляром опреде-
ленного класса, а классы образуют иерархию наследования.
В данном определении можно выделить три части: 
1) ООП использует в качестве базовых элементов объекты, а не алго-
ритмы;
2) каждый объект является экземпляром какого-либо определенного 
класса;
3) классы организованы иерархически. 
Объектно-ориентированный язык программирования (ООЯП) – это язык 
программирования, обладающий набором определенных свойств. Глав-
ными свойствами ООЯП являются абстракция, инкапсуляция, наследова-
ние, полиморфизм
Абстракция – это свойство, позволяющее создавать новые типы 
данных, выделяя общие абстрактные свойства этих типов. Смысл
абстракции заключается в том, что сущность произвольной сложности 
можно рассматривать, а также производить определенные действия над 
ней, как над единым целым, не вдаваясь в детали внутреннего построения 
и функционирования. 
При создании программного комплекса необходимо разработать 
определенные абстракции. 



Пример: Задача составления расписания занятий. 
Необходимые абстракции: студент, курс лекций, преподаватель, 
аудитория. Операции: 
 Определить студента в группу 
 Назначить аудиторию для группы 
Инкапсуляция процесс разделения элементов абстракции, которые 
образуют ее структуру и поведение. Служит для отделения внешних обя-
зательств объекта от его реализации. Скрытие информации; механизм, 
который объединяет данные и код, манипулирующий с этими данными,
а также защищает и то, и другое от внешнего вмешательства или непра-
вильного использования. Основой инкапсуляции при ООП является 
класс. Механизм инкапсуляции позволяет оставлять скрытыми от поль-
зователя некоторые детали реализации класса (то есть инкапсулировать 
их в классе), что упрощает работу с объектами этого класса. 
Наследование – механизм, с помощью которого один объект (про-
изводного класса) приобретает свойства другого объекта (родительского, 
базового класса). При использовании наследования новый объект не обя-
зательно описывать, начиная с нуля, что существенно упрощает работу 
программиста. Наследование позволяет какому-либо объекту наследо-
вать от своего родителя общие атрибуты, а для себя определять только те 
характеристики, которые делают его уникальным внутри класса. Напри-
мер, роза или ромашка – это разные разновидности некоторого общего 
(родительского) класса, называемого цветком. В свою очередь, цветок – 
это разновидность еще более общего класса растение, и т. д. В каждом 
случае порожденный класс наследует все связанные с родителем качества 
и добавляет к ним свои собственные определяющие характеристики. 
Полиморфизм – это свойство, которое позволяет одно и то же имя 
использовать для решения двух или более схожих, но технически разных 
задач. Например, в не ОО языках программирования нахождение абсо-
лютной величины числа требует нескольких различных функций – в за-
висимости от типов аргумента и результата (например, в С – это abs() для 
данных типа int, labs() для данных типа long и fabs() для данных типа
double). В ООЯП каждая из этих функций может быть названа abs(). Тип 
данных, который используется при вызове функции, определяет, какая 
конкретно версия функции действительно выполняется. Концепцию
полиморфизма часто выражают фразой «один интерфейс, много мето-
дов». Общая концепция полиморфизма: один интерфейс – много методов.
Выбор конкретного действия (метода) применительно к конкретной
ситуации возлагается на компилятор. Программисту же достаточно
запомнить и применить один интерфейс, вместо нескольких, что также 
упрощает работу. 

Различаются статический (реализуется на этапе компиляции с по-
мощью перегрузки функций и операций), динамический (реализуется во 
время выполнения программы с помощью механизма виртуальных функ-
ций) и параметрический (реализуется на этапе компиляции с использова-
нием механизма шаблонов) полиморфизм. 
Типы данных, создаваемые пользователем (программистом), назы-
ваются пользовательскими типами данных. Пользовательский тип дан-
ных с полностью скрытой (инкапсулированной) внутренней структурой 
называется абстрактным типом данных (АТД). В С++ АТД реализуется
с помощью классов, в которых нет открытых членов-данных, то есть вся 
структура этих классов скрыта от внешнего пользователя. 
О
бъектно-ориентированный подход заключается в следующем 
наборе основных принципов:
1. Все является объектом. 
2. Вычисления осуществляются путем взаимодействия (обмена дан-
ными) между объектами, при котором один объект требует, чтобы 
другой объект выполнил некоторое действие. Объекты взаимодей-
ствуют, посылая и получая сообщения. Сообщение – это запрос на 
выполнение действия, дополненный набором аргументов, которые 
могут понадобиться при выполнении действия. 
3. Каждый объект имеет независимую память, которая состоит из дру-
гих объектов. 
4. Каждый объект является представителем класса, который выражает 
общие свойства объектов (таких, как целые числа или списки). 
5. В классе задается поведение (функциональность) объекта. Тем самым 
все объекты, которые являются экземплярами одного класса, могут 
выполнять одни и те же действия. 
6. Классы организованы в единую древовидную структуру с общим кор-
нем, называемую иерархией наследования. Память и поведение, свя-
занное с экземплярами определенного класса, автоматически доступны 
любому классу, расположенному ниже в иерархическом дереве. 
Таким образом, программа представляет собой набор объектов, 
имеющих состояние и поведение. Объекты взаимодействуют посред-
ством сообщений. Естественным образом выстраивается иерархия объек-
тов: программа в целом – это объект, для выполнения своих функций она 
обращается к входящим в нее объектам, которые, в свою очередь, выпол-
няют запрошенное путем обращения к другим объектам программы. 
Естественно, чтобы избежать бесконечной рекурсии в обращениях, на
каком-то этапе объект трансформирует обращенное к нему сообщение
в сообщения к стандартным системным объектам, предоставляемым язы-
ком и средой программирования. 





Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   44




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет