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


 

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

15718. Анализ затрат на качество 247.5 KB
  Анализ затрат на качество В данном разделе мы поставили цель объяснить экономические аспекты Обеспечения Качества. Вы найдете в нем ответы на вопрос как идентифицировать Затраты на Качество и увидите способы с помощью которых можно использовать Затраты на Качество ка...
15719. История возникновения, развития и использования метода развертывания функции качества 95.5 KB
  История возникновения развития и использования метода развертывания функции качества А.М. Кузьмин Современное состояние РФК Первый двухдневный семинар по РФК в Японии был организован в 1983 г. Японским центром производительности Japan Productivity Center...
15720. Кружки качества на Японских предприятиях 32.1 KB
  Кружки качества на Японских предприятиях Важную роль в формировании системы комплексного управления качеством в Японии сыграли кружки качества. Современная организация управления качеством потребовала новой по сравнению с классической схемы действий. Поступление ...
15721. Основы стандартизации, сертификации и метрологии 710.62 KB
  Стандартизация основывается на последних достижениях науки, техники и практического опыта и определяет прогрессивные, а также экономически оптимальные решения многих народнохозяйственных, отраслевых и внутрипроизводственных задач
15722. Сертификация в Японии 132.56 KB
  Общие положения сертификации в Японии. Сертификация импорта в Японии Заключение Список литературы Введение Рыночная система хозяйствования имеет множество преимуществ по сравнению например с командноадмин...
15723. Роль руководства в системе качества и оргструктуре предприятия 34.5 KB
  Роли руководства в системе качества и оргструктуре предприятия Линейно-функциональная схема управления предприятием использующая в основном вертикальные а не горизонтальные связи затрудняет внедрение системы менеджмента качества. Основные проблемы с качест...
15724. Типовые ошибки при создании и внедрении системы качества на предприятиях 33 KB
  Типовые ошибки при создании и внедрении системы качества на предприятиях 1. Ограждение генерального директора от принятия решений по системе качества СК. Создание СК как автономно действующий аналог старой КС УКП без пересмотра всей системы управления предприя
15725. Этапы совершенствования управления качеством в Японии 40 KB
  Этапы совершенствования управления качеством в Японии. Если в довоенный период к числу наиболее знаменательных событий произошедших в Японии и связанных с совершенствованием управления качеством можно отнести лишь установление в 1921 г. технических стандартов то в...
15726. Бетоносмеситель СБ-103 341 KB
  Курсовая работа По дисциплине: Автоматизация проектирования на тему: Бетоносмеситель СБ103 СОДЕРЖАНИЕ КЛАССИФИКАЦИЯ БЕТОНОСМЕСИТЕЛЕЙ ПРИНЦИП РАБОТЫ И НАЗНАЧЕНИЕ МАШИНЫ ТЕХНИЧЕСКАЯ ХАРАКТЕРИСТИКА БЕТОНОСМЕСИТЕЛЯ СБ10...