10240

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

Лекция

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

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

Русский

2013-03-24

48.5 KB

8 чел.

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

 ООП: Инкапсуляция, Абстракция данных, Наследование, Полиморфизм.

Инкапсуляция - свойство языка программирования, позволяющее объединить и защитить данные и код в объект и скрыть реализацию объекта от пользователя (прикладного программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта.
Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова:
public.

Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов: private, protected.

Одна из наиболее распространенных ошибок - делать сокрытие реализации только ради сокрытия. Целями являются: предельная локализация изменений при необходимости таких изменений, прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

Часто инкапсуляция может быть достигнута простейшими организационными мерами: знание того, что «вот так-то делать нельзя» иногда является самым эффективным средством инкапсуляции!

 Пример

class A 

{

 public:

  int a, b; //данные открытого интерфейса

  int ReturnSomething(); //метод открытого интерфейса

private:

  int Aa, Ab; //скрытые данные

  void DoSomething(); //скрытый метод

};

Класс А инкапсулирует свойства Aa, Ab и метод DoSomething, представляя внешний интерфейс ReturnSomething, a, b.

   Абстракция данных.

Абстракция(от лат. abstractio — «отвлечение») - отвлечение в процессе познания от несущественных сторон, свойств, связей предмета или явления с целью выделения их существенных, закономерных признаков; абстрагирование; теоретическое обобщение как результат такого отвлечения.

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

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

  Полиморфизм - взаимозаменяемость объектов с одинаковым интерфейсом.

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

Смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».

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

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

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

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

Типы наследования.

Различают:

- Простое наследование;

- Множественное наследование.

Простое наследование.

Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).

Множественное наследование

При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости. Множественное наследование реализовано в C++.

Множественное наследование - потенциальный источник ошибок, которые могут возникнуть из-за наличия одинаковых имен методов в предках. Однако, если такая необходимость все-таки возникла, то для разрешения конфликтов использования наследованных методов с одинаковыми именами, возможно применить операцию расширения видимости -  «::» - для вызова конкретного метода конкретного родителя.

class A{    //базовый класс

};

class B : public A{    //public наследование

}

class C : protected A{    //protected наследование

}

class Z : private A{    //private наследование

}

В C++ существует три типа наследования: public, protected, private. Спецификаторы доступа членов базового класса меняются в потомках следующим образом:

- при public-наследовании все спецификаторы остаются без изменения.

- при protected-наследовании все спецификаторы остаются без изменения, кроме спецификатора public, который меняется на спецификатор protected (то есть public-члены базового класса в потомках становятся protected).

- при private-наследовании все спецификаторы меняются на private.

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

- Разделы могут появляться в любом порядке.

- Один и тот же раздел можно определять несколько раз.

- Если не определен ни один раздел, компилятор (по умолчанию) объявляет все элементы закрытыми.

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

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

- Класс может иметь несколько конструкторов.

- Класс может иметь только один деструктор, который должен объявляться в открытом разделе класса.

- Функции-элементы (в том числе конструкторы и деструкторы), состоящие  из нескольких операторов, должны определяться вне объявления класса.

- Определение функции может содержаться в том же файле, в котором определяется класс. Это напоминает порядок работы с обычными функциями: задание прототипа и определение функции.

 

4

PAGE  3


 

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

5088. Расчет одноступенчатого редуктора, содержащего червячную цилиндрическую передачу 1008 KB
  Проведен расчет одноступенчатого редуктора, содержащего червячную цилиндрическую передачу, расчет ценой передачи, спроектирован привод конвейера. Выполнен кинематический, энергетический и проверочный расчеты, расчет валов, подшипников....
5089. Отопительно-производственная котельная ГУП ФАПК Якутия 2.58 MB
  Котельная установка ГУП ФАПК Якутия расположенная в г. Якутске предназначена для отопительно-производственных целей и оборудована тремя паровыми котлами паропроизводительностью 10 т/ч: два кола ДКВР-10-13 и один ДЕ-10-14. Котельная вырабат...
5090. Психология личности и групп 139.5 KB
  В наше время все чаще и чаще в средних школах и высших учебных заведениях используется такая форма проверки знаний, как тест. Данный способ позволяет быстро проверить уровень знаний по определенной теме или нескольким темам и помогает выяви...
5091. Составление технического проекта внутрихозяйственного землеустройства 969 KB
  Для проведения различных землеустроительных мероприятий необходимо иметь информацию о размерах, форме, местоположении земельных участков и различных элементов организации территории. С этой целью составляют план землепользования ТОО (АО), предназнач...
5092. Руководство к решению задач по сопротивлению материалов 2.03 MB
  Пособие ориентировано на студентов, изучающих сопротивление материалов. Весьма ограниченное время, отводимое на аудиторные занятия заочников в период установочных сессий, не позволяет в достаточной мере охватить вопросы, отражающие содержан...
5093. Исследование собственных и дополнительных затуханий в оптических кабелях связи 707 KB
  Цель работы является проведение компьютерного эксперимента по исследованию собственных и дополнительных затуханий в оптических кабелях связи: - собственных затуханий- затуханий в местах соединений оптических волокон- затуханий на микро...
5094. Основы технологии производства и ремонта автомобилей 1.02 MB
  Исходные данные Автомобиль – КамАЗ 5320 Дизель – КамАЗ 740 Количество автомобилей (N) – 400 ед. (крупное АТП) [2] Среднесуточный пробег автомобиля (lcc) – 200 км Число рабочих дней в году (D) – 305 (грузовые автомоби...
5095. Теория автоматического управления. Курс лекций 1.58 MB
  Технологическая система – это совокупность оборудования, приспособлений, инструментов, заготовок, и процессов проходящих в ходе технологического воздействия. (В старой литературе СПИД – станок, приспособление, инструмент, деталь)...
5096. Расчет строительных конструкций в процессе реконструкции здания. Усиление здания 681.5 KB
  Проектирование и расчет усиления кирпичного простенка Установление необходимости усиления кирпичного простенка Для установления необходимости усиления кирпичного простенка собираем нагрузки на кирпичный простенок на уровне окна первого э...