Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антонюк и др.doc
Скачиваний:
49
Добавлен:
07.11.2018
Размер:
32.99 Mб
Скачать

Дополнительные средства (typedef и enum).

При помощи оператора typedef можно связать новые типы данных с существующими:

typedef double real;

После такого описания можно использовать real вместо double.

Использовать typedef необходимо с осторожностью. Слишком много новых типов могут ухудшить читаемость программы.

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

enum поле_тега {имя1=знач1, имя2=знач2, имя3=знач3, …}переменная;

Здесь имя1, имя2,… – это имена констант. Им можно присваивать целочисленные значения. Если значения не присвоены, то предполагается, что они упорядочены по возрастанию и начинаются с нуля. Под эти константы во время выполнения память не выделяется. Удобно использовать этот оператор для создания констант, если не указывать поле_тега и переменную:

enum (с28=28, с29,с30,c31);

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

enum months

{Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}

current_month;

current_month=Dec;

int diff=(int)current_month-2;

Поскольку имена эквивалентны последовательным целым значениям, то с ними можно выполнять арифметические операции. Фактически в данном примере переменной current_month присваивается целочисленное значение 12.

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

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

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

Преимущества ООП:

  • Программы легче читать и понимать, т.к. программист видит только необходимые детали.

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

  • Объекты можно использовать многократно.

Недостатком ООП можно считать то, что практически невозможно процедурно ориентированную программу превратить в объектно ориентированную.

Терминология объектно-ориентированного программирования.

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

Классы С++ являются расширением типа С и С++ struct и образуют необходимый абстрактный тип данных для ООП. Объект представляет собой экземпляр класса.

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

Инкапсуляция – это способ объединения данных объекта и функций-членов в единую структуру.

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

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

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