- •Вопросы к экзамену по пм02
- •Что такое технология разработки программного обеспечения? На чем базируется и какая цель?
- •Перечислите этапы и элементы процесса разработки.
- •Инструментарий технологии программирования. Группы программных продуктов.
- •Средства для создания приложений. Классификация языков программирования.
- •Жизненный цикл по. Процесс реализации программных средств.
- •Жизненный цикл по. Процесс проектирования архитектуры программных средств.
- •Жизненный цикл по. Процесс конструирования программных средств.
- •Жизненный цикл проекта методологии rup. Процессные области (9 областей).
- •Типы требований к по. Функциональные и нефункциональные требования.
- •Роль тестирования и типы тестов, применяемых для проверки качества программного продукта.
- •Определение объектно-ориентированного программирования. Классы, интерфейсы, наследование, объекты.
- •Перечислите известные Вам среды разработки, их компоненты и поддерживаемые языки.
- •Описание данных. Типы данных и переменные.
- •Обработка данных. Операции и выражения.
- •Регулярные выражения. Метасимволы регулярных выражений.
- •Символы, строки, текст. Средства представления и обработки.
- •Роль указателей и ссылок в языках программирования и в информационных технологиях. Варианты доступа к информационным ресурсам.
- •Чем отличаются статические и динамические переменные. Понятие массива.
- •Применение алгоритмов. Цикл, итерация, рекурсия.
- •Программирование методов и принципы модульности.
- •Иерархия объектов и понятие наследования. Иерархия объектов
- •Полиморфизм и виртуальные функции.
- •Язык uml и его назначение.
- •Разновидности спецификаций язык uml. (ответ не точный)
- •Виды диаграмм uml.
Чем отличаются статические и динамические переменные. Понятие массива.
Все переменные, используемые в программе, размещаются в памяти согласно вполне определенным правилам:
для локальных переменных память отводится при вызове подпрограммы; при выходе из нее эта память освобождается, а сами переменные прекращают существовать;
глобальным переменным память отводится в начале выполнения программы; эти переменные существуют в течение всего периода работы программы.
Таким образом, распределение памяти во всех этих случаях производится полностью автоматически и подчинено стековой дисциплине. Переменные, память, под которые распределяется описанным образом, называются статическими.
Применение алгоритмов. Цикл, итерация, рекурсия.
Составные части таких алгоритмов разнородны, а процесс их выполнения можно отследить «исторически». Однако есть и другие подходы проектированию, кроме образной очевидности. Скажем о них самыми общими словами:
- алгоритмы, последовательно приближающиеся к заданной цели;
- алгоритмы, в которых поиск решения сводится к формулировке одной или нескольких задач меньшей размерности;
- алгоритмы, соблюдающие установленные для них соотношения (свойства, «законы», инварианты);
Цикл, итерация, рекурсия. «Хороший цикл» состоит из независимых частей и его тело не влияет на условия его выполнения. Еще более тесно связаны между собой части итерационного цикла – в нем результат текущего шага зависит от нескольких предыдущих. Здесь мы имеем последовательность взаимосвязанных шагов. Аналогично можно ввести понятие последовательности (а также и разветвляющейся последовательности) алгоритмов (функций), в которой каждый шаг (алгоритм) определяет начальные условия выполнения аналогичных алгоритмов и использует их результаты. Это и есть определение рекурсии.
Рекурсивным называется способ построения объекта (понятия, системы, описание действия), в котором определение объекта включает аналогичные объекты (понятие, систему, действие) в виде составных частей.
Программирование методов и принципы модульности.
Программирование методов – содержательное наполнение класса – позволяет использовать принципы модульного программирования и создавать эффективный программный код. Основной эффект модульности – многократное выполнение одного и того же кода в различных контекстах, обеспечивается различными способами:
· представление алгоритмической компоненты класса в виде множества мелких методов, вызывающих друг друга;
· создание вспомогательных (локальных) объектов при выполнении операций над основными объектами класса (текущим и передаваемым через параметры);
Иерархия объектов и понятие наследования. Иерархия объектов
До сих пор мы рассматривали в качестве содержимого объектов только переменные. При использовании на их месте объектов возникает иерархия вложенности. В ней самой нет ничего необычного, вложенные объекты можно применять как обычные данные, вызывать для них собственные методы и т.д..
Однако технология ООП требует «распространения» по иерархии объектов сверху вниз ряда специфичных для нее действий над объектами, таких как конструирование (в т.ч. конструктор копирования), присваивание, ввод и вывод в стандартные потоки. За это отвечает внешний класс, включающий в себя объекты: при выполнении в нем перечисленных действий он должен инициировать аналогичные действия в объектах, определенных внутри него. Рассмотрим эту проблему с общих позиций.
Класс user в качестве элементов данных включает в себя объекты классов string и date. Если объект не содержит других объектов и динамических данных (класс date), то переопределение присваивания и конструктора копирования не требуется. Для класса string, содержащего внешний динамический массив символов, требуется корректное определение конструкторов (пустого и копирования), деструктора и присваивания.