Класс является типом, а не объектом данных и каждый объект класса имеет свою собственную копию данных членов класса. Некоторые типы реализуются более элегантно, если все объекты этого типа используют совместно некоторые данные. Например для управления задачами в ОС или для моделирования часто используется список всех задач.
All posts by admin
Перегрузка операций
Программа часто обрабатывает объекты, которые являются конкретными представителями абстрактных концепций. Такие концепции обычно включают набор операций представляющих основные операции над объектами кратким, удобным и стандартным способом.
Функции операций
Можно объявить функции имеющие смысл для следующих операций +, -, /, %, &, |, ~, ! …Невозможно изменить синтаксис выражения и приоритет операций. Невозможно определить унарную операцию % или бинарную !. Невозможно определить новые лексемы операций.
Преобразование типов с использованием конструкторов.
Альтернативу к исп-ию неск-их ф-ий (перегр-ых)сост-ет описание констр-ра, к-ый по зад-му double создает complex.Н-р: class complex { // … complex(double r) { re=r; im=0; } };
Присваивание и инициализация
Рассм-м простой класс строк string: struct string { char* p; int size; // размер вектора, на который // указывает p string(int sz) { p = new char[size=sz]; } ~string() { delete p; } }; Строка-это стр-ра д-ых, сост-ая из вектора символов и длины этого вектора.Вектор созд-ся констр-ром и уничт-ся дестр-ром.
Опер-ры индексирования массива
Чтобы задать смысл индексов для объектов класса, исп-ся ф-ия operator[ ].Второй пар-р(индекс)ф-ии operator[ ] может быть любого типа.Это позволяет опр-ть ассоц-ые массивы и т.п..Опер-ры инд-ия м-ва[ ]можно перегрузить для реал-ии доступа к д-ым членам класса,подобного доступу к элем-там м-ва, даже если эти д-ые имеют вид отд-ых членов или связ-го списка.
Оператор вызова функций
Вызов ф-ии, т.е. запись выр-е (список_выражений) — это бинарная операция, где выр-е – левый операнд, а список выраж-ий -правый.И опер-р вызова()может быть перегружен как и др-ие опер-ры.Список парам-ров ф-ии operator() вычисл-ся и провер-ся в соотв-ие с обычными правилами передачи парам-ров.
Ф-ии — друзья и ф-ии – члены
Сущ-ет интерес к вопросу:”в каких случаях для доступа к закрытой части определяемого польз-ем типа исп-ть члены, а в к-их — друзей?. Нек-ые опер-ии должны быть членами:констр-ры, дестр-ры и вирт-ые ф-кции,но обычно это зав-т от выбора.
Цель и задача курса. Хар-ки и кач-во ПО.
ТП – это совокупность процессов создания, сопровождения и применения программного продукта. Любая ТП бази¬руется на некоторой методологии разработки программ. Методология – это совокупность механизмов применяемых в процессе разработки ПО и объединенных общим философским подходом.
Сложность ПО
Существенной чертой индустриально организованных программных систем является их большая сложность. Фактически невозможно охватить все тонкости системы одним человеком. Сложность таких систем превышает возможности человеческого интеллекта.
Компоненты объектного подхода
Концептуальная основа ОО стиля состоит в объектном подходе. Этому подходу соответствуют четыре главных элемента: 1) абстрагирование; 2) ограничение доступа; 3) модульность; 4) иерархия.
Производные классы. Порождения, видимость, наследование. Порождения.
Рассмотрим программу имеющею дело с людьми, работающими в какой-то организации. Эта программа может иметь следующую структуру данных.
Поля типа и виртуальные функции.
Чтобы использовать производные классы в качестве большем, чем удобное сокращение в объявлении надо решить следующие проблемы: -при наличии указателя типа base* к чему фактически относится объект производного типа, на котором ссылается указатель.
Использование шаблонов.
Одной из важнейших возможностей С++ является шаблон (template). Это связанно с тем, что шаблоны фундаментально изменяют внешнюю сторону программирования. Используя шаблон можно создавать обобщенные спецификации для ф-ий и для классов, которые часто называются параметризованными ф-ями и параметризованными классами.
Обработка исключительных ситуаций (ИС)
throw – послать try – испытать catch – перехватить
Возбуждение нескольких ИС
В ф-ях можно возбуждать объекты ИС различных типов для поддержки различных условий ИС: int AnyFunction () { if (condition A) throw “Big trouble”; // строковой объект if (condition B) throw Overflow(); // объект класса Overflow return 123;
Компоненты STL
STL обеспечивает большое количество классов и функций, которые использовать как в приложениях, написанных с помощью ООП, так и без использования этой технологии. Имеется около 50 алгоритмов, которые носят универсальный характер и не связаны со специфическими типами данных.
Итераторы.
Итер-ры обеспечивают доступ к значениям данных и, кроме того,позволяют опред-ть промежутки для циклич-х операций над множествен-ми элементами данных.
ф-ции и объекты-ф-ции.
Стандартные библиотеки STL ф-ций называют алгоритмами, что подразумевает их более общее назначение в сравнении с другими ф-циями.Стандартн-е ф-ции реализуются как шаблоны или шаблон-е клоссы(назыв. Объектами-ф-циями) с перегруженными операциями вызова ф-ции,котор. Можно использовать для осуществления разнообразных действий над данными контейнера.
Функции и предикаты.
В стандартных библиотеках содержатся алгоритмы для выполнения опе¬раций над данными размещающимися в контейнерах. К таким алгоритмам относятся accumulate и for_each, предназначенные для работы с элементами данных.
Объекты — функции.
В ряде случаев вместо пердачи алгоритмам функции по имени возникает неодходимость передачи объекта-функции (object_function), кот. представляет собой большую универсальность. К примеру, объект-функция может поддержи¬вать ссылки на наборы данных, определять статические переменные, функции-члены и т.д.
Стандартные контейнеры.
Стандартная библиотека включает в себя 10 стуктур данных контейнеров в виде шаблонов классов. Контейнеры автоматически настраиваются на любой нужный нам тип размещаемых в них данных. Для получения доступа к кон¬тейнеру необходимо создать экземпляры одного или нескольких иттераторов типа iterator класса.
Отображение (мультиотображение).
Шаблоны map и multimap – это ассоциативные массивы, запоминающие ключи и ассоциированные с ними значения. Оба шаблона идентичны во всем, за исключением одного: ключи отображения (map) д.б. уникальными, а в мультиотображениях (multimap) они могут дублироваться.
Стандартные алгоритмы.
Стандартный алгоритм выполняет сортировку, слияние копирование и другую обработку контейнеров и данных. В стандартных библиотеках каждый алгоритм представляет в виле обобщенного шаблона функции, определяющего имя алгоритма, тип возвращаемого значения либо void и все его параметры.
Объeктно-ориентированный анализ. (ООА) Концепции информационного моделирования.
ООА-это очень действенный метод для описания различных сущностей , которые существуют в реальном мире . Он позволяет понять принципы взаимодействия этих сущностей . Этот метод состоит из 3 этапов :
Билеты на экзамен (теория)
Приднестровский «Утверждаю» государственный университет зав.кафедрой ВКСС ___________ д.т.н.,проф. Долгов Ю.А. Экзаменационный билет N 1 По дисциплине: Технология программирования Инженерно-технический факультет. Курс 3.
Билеты-ТП-02.
Приднестровский Утверждаю государственный университет зав. кафедрой ВКСС ___________ д.т.н., проф. Долгов Ю.А. Экзаменационный билет № 1 По дисциплине: Технология программирования Инженерно-технический факультет. Курс 3.
Вопросы по дисциплине. «Технология программирования».
1. Технология программирования, метод, методология – определения, их необходимость для процесса разработки. Показатели качества программного обеспечения. 2. Сложность программного обеспечения, компоненты сложности. Пути ограничения сложности.
Цель и задача курса. Хар-ки и кач-во ПО.
ТП – это совокупность процессов создания, сопровождения и применения программного продукта. Любая ТП бази¬руется на некоторой методологии разработки программ. Методология – это совокупность механизмов применяемых в процессе разработки ПО и объединенных общим философским подходом.
Сложность ПО
Существенной чертой индустриально организованных программных систем является их большая сложность. Фактически невозможно охватить все тонкости системы одним человеком. Сложность таких систем превышает возможности человеческого интеллекта.
