Скачиваний:
316
Добавлен:
28.03.2021
Размер:
378.53 Кб
Скачать
  1. Основные положения объектной модели и ее преимущества и недостатки

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

Преимущества объектной модели:

  1. Позволяет в полной мере использовать возможности объектных и объектно-ориентированных языков программирования.

  2. Повышает уровень унификации разработки и пригодность для повторного использования не только программ, но и проектов. Использование предыдущих разработок дает выигрыш в стоимости и времени.

  3. Упрощает процесс внесения изменений из-за наличия стабильных промежуточных описаний. Это дает возможность не перерабатывать систему целиком даже в случае существенных изменений исходных требований.

  4. меньшает вероятности допущения разнообразных ошибок.

  5. Ориентирована на человеческое восприятие мира.

Среди основных недостатков ОО модели данных можно выделить:

· громоздкость описания ОО модели существующими языками (например, UML);

· сложность перехода (смены парадигмы) к ОО модели от простой и распространенной реляционной модели данных;

· ряд специфических проблем (например, идентификация объектов, формализация языков запросов, отсутствие математической основы ОО концепции).

  1. Абстрагирование. Модульность. Иерархия. Типизация

Абстрагирование - процесс выделения абстракций в предметной области задачи

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

Существует целый спектр абстракций, перечисляемых далее от наиболее полезных к наименее полезным:

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

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

В языке C++ модулями являются файлы, которые компилируются отдельно один от другого и затем объединяются в один исполняемый файл при помощи редактора связей.

Иерархия - это ранжированная или упорядоченная система абстракций. Принцип иерархичности предполагает использование иерархий при разработке программных систем. В ООП используются два вида иерархии:

  1. Иерархия «целое/часть» – показывает, что некоторые абстракции включены в рассматриваемую абстракцию, как ее части, например, лампа состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования (на логическом уровне – при декомпозиции предметной области на объекты, на физическом уровне - при декомпозиции системы на модули и при выделении отдельных процессов в мультипроцессной системе).

  2. Иерархия «общее/частное» – показывает, что некоторая абстракция является частным случаем другой абстракции, например, «обеденный стол – конкретный вид стола», а «столы – конкретный вид мебели». Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.

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

  1. раннее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами (ошибки обнаруживаются на этапе компиляции программы при проверке допустимости выполнения данной операции над программным объектом);

  2. упрощение документирования;

  3. возможность генерации более эффективного кода.

  1. Организация ввода/вывода в языке С++. Организация ввода/вывода данных в языке С++

Основной задачей программирования является обработка информации, поэтому любой язык программирования имеет средства для ввода и вывода информации. В языке Си нет операторов ввода-вывода. Ввод и вывод информации осуществляется через функции стандартной библиотеки. Прототипы рассматриваемых функций находятся в файле stdio.h. Эта библиотека содержит функции:

printf() — для вывода информации

scanf() — для ввода информации.

Функция printf() предназначена для форматированного вывода. Она переводит данные в символьное представление и выводит полученные изображения символов на экран. При этом у программиста имеется возможность форматировать данные, то есть влиять на их представление на экране.

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

В стандартном C++ существует два основных пути ввода-вывода информации: с помощью потоков, реализованных в STL (Standard Template Library) и посредством традиционной системы ввода-вывода, унаследованной от C. Если копнуть немного глубже, то окажется, что и потоки, и традиционная система ввода-вывода для осуществления необходимых действий используют вызовы операционной системы.

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

#include <iostream>

Библиотека iostream определяет три стандартных потока:

cout//стандартный поток вывода (экран),

cin//стандартный поток ввода (клавиатура),

cerr//стандартный поток диагностики (ошибки) без буферизации,

clog//стандартный поток диагностики (ошибки) с буферизацией.

  1. Использование манипуляторов для ввода-вывода на С++

Система ввода/вывода С++ включает второй способ изменения параметров форматирования по­тока. Для этого используются специальные функции, называемые манипуляторами (manipulators), которые могут включаться в выражения ввода/вывода. Для использования манипуляторов с параметрами в программу необходимо вклю­чить заголовочный файл iomanip.h.Стандартные манипуляторы показаны в таблице.