- •1 Введение в теорию алгоритмизации 6
- •Введение
- •1 Введение в теорию алгоритмизации
- •1.1 Понятие алгоритма
- •1.2 Свойства алгоритмов
- •1.3 Формы представления алгоритма
- •1.4 Основные алгоритмические структуры
- •1.5 Алгоритмический язык
- •2.3 Инструменты программирования Microsoft Visual Studio
- •2.5 Консольные и оконные приложения
- •2.6 Компилирование программы
- •3.2 Простые типы данных
- •3.3 Операции над числовыми данными
- •3.4 Объявление переменных
- •3.7 Директива #define
- •3.9 Библиотека математических функций
- •4 Условный оператор
- •4.1 Условный оператор if
- •4.2 Составной оператор
- •4.3 Вложенный оператор
- •4.4 Оператор выбора switch
- •5 Операторы циклов
- •5.1 Определение цикла
- •5.2 Оператор цикла for
- •5.3 Оператор цикла while
- •5.4 Оператор цикла do while
- •5.5 Табулирование функций
- •5.6 Вычисление конечных сумм и произведений
- •5.7 Управляющие конструкции break, continue, return, goto
- •6 Массивы
- •6.1 Понятие и описание массивов
- •6.2 Одномерные массивы
- •6.3 Двумерные массивы (матрицы)
- •7 Символьные массивы
- •7.1 Описание символьного массива
- •7.2 Стандартные библиотечные функции над строками
- •8 Указатели и операции над указателями
- •8.1 Описание указателей
- •8.2 Операции над указателями
- •8.3 Сравнение указателей
- •8.4 Связь между массивом и указателем
- •9 Функции
- •9.1 Модульное программирование
- •9.2 Объявление функции
- •9.3 Формальные и фактические параметры функции
- •9.4 Локальные и глобальные переменные
- •10 Элементы объектно-ориентированного программирования
- •10.1 Инструментальное программное обеспечение
- •10.2 Технологии программирования
- •10.3 Создание класса
- •11 Полиморфизм
- •12 Этапы разработки программного обеспечения
- •12.1 Идея и цель объектно-ориентированного программирования
- •12.2 Основные понятия объектно-ориентированного программирования
- •12.3 Методы тестирования программных продуктов
- •Список литературы
12 Этапы разработки программного обеспечения
Цель работы: изучить этапы разработки программного обеспечения и познакомиться с методами тестирования программных продуктов.
12.1 Идея и цель объектно-ориентированного программирования
В длинных и сложных программах переменные и функции могут исчисляться сотнями. Это заметно усложняет создание и сопровождение таких программ, поскольку вам приходится помнить обо всем этом. Наличие переменных с одинаковыми именами в различных функциях может привести к нежелательным конфликтам. Объектно-ориентированное программирование как раз и было изобретено для того, чтобы большие программы можно было разделять на отдельные части.
Идея объектно-ориентированного программирования – разработка программы из классов объектов, которыми она манипулирует, а не из функций, которые над ними (объектами) выполняются.
Объектно-ориентированный подход лег в основу создания ОС Windows (1991 г.) фирмой Microsoft. В OC MS Dos преобладал процедурный подход (чтобы произвести какое-либо действие необходимо было вызвать соответствующую процедуру с определенными параметрами). Уже в Windows 3. конкретному документу было поставлено в соответствие приложение его обрабатывающее, появился метод объектного связывания и встраивания (OLE), позволяющий щелчком на изображении объекта запустить приложение, которое его обрабатывает).
На идеях объектно-ориентированного программирования базируется технология визуального программирования. Визуальные среды программирования поддерживают возможность визуального дизайна, но код программы записывается с помощью текстового языка программирования.
Цель объектно-ориентированного программирования – повышение эффективности разработки программ. Преимущество программ сконструированных по технологии объектно-ориентированного программирования – повторное их использование для разработки других программ, расширяемость, надежность, мобильность.
Примеры объектно-ориентированных языков программирования: Delphi, Си++, Java, Visual Basic For Applications (VBA).
12.2 Основные понятия объектно-ориентированного программирования
Как следует из названия «объектно-ориентированный», ключевую роль для понимания технологии играют объекты. Программные объекты, как и объекты реального мира имеют состояние и поведение. Автомобили могут иметь состояние (четыре колеса, количество скоростей и т.д.) и могут иметь поведение (торможение, ускорение, переключение скоростей).
Состояние объектов заложено в переменных, а поведение реализуют с помощью методов.
Объект – программный набор переменных и связанных с ними методов.
Существует много объектов, имеющих сходные характеристики и отличаются только значениями свойств. В этом случае для схожих объектов создается заготовка (шаблон, клише, прототип), которая называется классом.
Класс объектов – это некое множество объектов, имеющих общую структуру и общее поведение. С точки зрения программирования это программные «заготовки» для объектов некоторого вида. Каждый конкретный объект в этом случае называется экземпляром класса. Любой конкретный объект является просто экземпляром некоторого класса.
Объекты предоставляют преимущество модульности и скрытия информации. Классы предоставляют преимущество повторного использования (reusability). Фабрика повторно использует один и тот же проект велосипеда при изготовлении все новых и новых велосипедов. Программисты повторно используют один и тот же класс (значит, один и тот же код) для создания множества объектов.
Объекты доступны через функции, составляющие официальный интерфейс данного класса.
В общем говоря, объекты определяются в терминах классов. Мы знаем много об объекте, если знаем его класс. Например, невидя конкретного автомобиля, Вы знаете, что он имеет руль, четыре колеса и т.д.
Т.о., под классом подразумевается реализованный абстрактный тип данных, а под объектом – конкретные данные, т.е. экземпляр данного класса. Мы знаем много об объекте, если знаем его класс.
Можно определять классы в терминах других классов: суперкласс®субкласс (автомобили®гоночные автомобили и т.д.).
Каждый суб-класс наследует (inherits) состояние или структуру (в форме объявления переменных) из своего суперкласса. Кроме того, каждый суб-класс наследует методы из своего суперкласса.
Программисты могут реализовать суперклассы, называемые абстрактными классами (abstract classes), которые определяют "изначальное" поведение.
Наследование — это процесс, благодаря которому один объект может приобретать свойства другого. Благодаря наследованию поддерживается концепция иерархической классификации. В виде управляемой иерархической (нисходящей) классификации организуется большинство областей знаний. Если не использовать иерархическое представление признаков, для каждого объекта пришлось бы в явной форме определить все присущие ему характеристики. Но благодаря наследованию объекту нужно доопределить только те качества, которые делают его уникальным внутри его класса, поскольку он (объект) наследует общие атрибуты своего родителя. Следовательно, именно механизм наследования позволяет одному объекту представлять конкретный экземпляр более общего класса.
Инкапсуляция — это такой механизм программирования, который связывает воедино код и данные, им обрабатываемые, чтобы обезопасить их как от внешнего вмешательства, так и от неправильного использования. В объектно-ориентированном языке код и данные могут быть связаны способом, при котором создается черный ящик. В этом "ящике" содержатся все необходимые (для обеспечения самостоятельности) данные и код. При таком связывании кода и данных создается объект, т.е. объект — это конструкция, которая поддерживает инкапсуляцию.
Инкапсуляция способствует соблюдению этого принципа, но не является панацеей. Очень важным качеством является полиморфизм, т.е. возможность не определять заранее в программах для данного класса (функциях) используемые типы, а дать им возможность определиться самим во время выполнения и, как следствие, дать возможность определиться функциям, над ними выполняемым (динамическое связывание).
Наконец, слово структурированность отражает наличие важных связей между классами, в частности наследование, которое дает возможность избежать дублирования программ или описаний в одном классе, если они уже реализованы в другом.
Полиморфизм (от греческою слова polymoiphism, означающего "много форм") — это свойство, позволяющее использовать один интерфейс для целого класса действии. В качестве простого примера полиморфизма можно привести руль автомобиля. Для руля (т.е. интерфейса) безразлично, какой тип рулевого механизма используется в автомобиле. Другим словами, руль работает одинаково, независимо от того, оснащен ли автомобиль рулевым управлением прямого действия (без усилителя), рулевым управлением с усилителем или механизмом реечной передачи. Если вы знаете, как обращаться с рулем, вы сможете вести автомобиль любого типа.
Тот же принцип можно применить к программированию.
