
- •Содержание
- •Глава 1 Теоретические основы алгоритмизации и программирования___ 5
- •Глава 2 Создание программного продукта__________________________17
- •Глава 1.Теоретические основы алгоритмизации и программирования
- •1.2. Языки программирования
- •Глава 2. Создание программного продукта
- •2.1 Системы программирования
- •2.2 Методы программирования
- •11) Системы программирования
2.2 Методы программирования
Проектирование алгоритмов и программ – наиболее ответственный этап жизненного цикла программных продуктов, определяющий, насколько создаваемая программа соответствует спецификациям и требованиям со стороны конечных пользователей.
Методы проектирования алгоритмов и программ очень разнообразны. Проектирование алгоритмов и программ, основанное на различных подходах:
- Структурное проектирование программных продуктов;
- Информационное моделирование предметной области и связанных с ней приложений;
- Объектно-ориентированное проектирование программных продуктов.
Типичными методами структурного проектирования являются:
+ нисходящее проектирование, кодирование и тестирование программ;
+ модульное программирование;
+ структурное программирование.
Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы («сверху вниз»). Модульное программирование основано на понятии модуля – логически взаимосвязанной совокупности функциональных элементов, оформленных в виде отдельных программных модулей. Принципы модульного программирования программных продуктов во многом сходны с принципами нисходящего проектирования. Структурное программирование основано на модульной структуре программного продукта и типовых управляющих структурах алгоритмов обработки данных различных программных модулей.
С активным распространением системы Windows и появлением визуальных RAD-сред широкую популярность приобрел событийный подход к созданию программ – событийно-ориентированное программирование.
Структура программы, созданной с помощью событийного программирования следующая. Главная часть представляет собой один бесконечный цикл, который опрашивает Windows, следя за тем, не появилось ли новое сообщение. При его обнаружении вызывается подпрограмма, ответственная за обработку соответствующего события, и подобный цикл опроса продолжается, пока не будет получено сообщение «Завершить работу».
Объектно-ориентированное программирование основано на понятии объекта. Реальные объекты окружающего мира обладают тремя базовыми характеристиками: они имеют набор свойств, способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта. Именно в таком виде в языках программирования и реализовано понятие объекта как совокупности свойств (структур данных, характерных для этого объекта), методов их обработки (программ изменения свойств) и событий, на которые данный объект может реагировать, и которые приводят, как правило, к изменению свойств объекта/ 2 стр.606/.
Таким образом, под объектом объектно-ориентированного программирования понимают совокупность свойств (параметров), методов (набора операций) и событий, определяющих состояние моделируемого процесса / 3 стр.9/.
Одной из важнейших особенностей, которые объектно-ориентированное программирование добавляет традиционным языкам, является механизм, с помощью которого объекты могут наследовать характеристики более простых, более общих объектов. Этим механизмом является наследование, которое приводит к образованию класса объектов. С точки зрения языка программирования класс объектов можно рассматривать как тип данного, а отдельный объект – как данное этого типа. Определение программистом собственных классов объектов для конкретного набора задач должно позволить описывать отдельные задачи в терминах самого класса задач (при соответствующем выборе имен типов и имен объектов, их параметров и выполняемых действий).
Классы объектов часто удобно строить так, чтобы они образовывали иерархическую структуру. В таких иерархических структурах один класс может рассматриваться как базовый для других, производных от него классов. Объект производного класса обладает всеми свойствами базового класса и некоторыми собственными свойствами, он может реагировать на те же типы сообщений от других объектов, что и объект базового класса и на сообщения, имеющие смысл только для производного класса. Объект производного класса наследует все свойства своего базового или родительского класса.
Механизм наследования позволяет сократить объем программирования и максимально использовать опыт предыдущей работы.
Некоторые параметры объекта могут быть локализованы внутри объекта и не доступны для прямого воздействия извне объекта. Такая характеристика получила название инкапсуляция / 3 стр.11/.
Механизм инкапсуляции предполагает невозможность существования свойств и методов в отрыве от объекта, поэтому при удалении удаляются все его свойства, события и методы, при копировании объект копируется как одно целое, при обращении к объекту организуется вызов конкретного свойства, события или метода.
При традиционном процедурном программировании имя вызываемой подпрограммы или функции однозначно определяет выполняемый код. В объектно-ориентированном программировании допускается использование одних и тех же имен методов для выполнения совершенно разных действий. Такая характеристика получила название полиморфизма / 3 стр. 11/.
Механизм полиморфизма значительно упрощает программирование, позволяя использовать одинаковые смысловые наименования для выполнения разнообразных действий.
Таким образом, объектно-ориентированный подход предполагает, что при разработке программы должны быть определены классы используемых в программе объектов и построены их описания, затем созданы экземпляры необходимых объектов и определено взаимодействие между ними. Процесс создания классов объектов использует механизм наследования и полиморфизма, при этом экземпляр соответствующего класса обладает свойством инкапсуляции.
Существуют различные объектно-ориентированные технологии и методики проектирования программных продуктов, для которых характерны следующие черты:
- объект описывается как модель некоторой сущности реального мира;
- объекты, для которых определены места хранения, рассматриваются во взаимосвязи, и применительно к ним создаются программные модули системы / 1 стр.664/.
Подводя итог сказанному выше, сформулирую преимущества объектно-ориентированного программирования:
- использование при программировании понятий, более близких к предметной области;
- сравнительно простая возможность модификации программы;
- возможность повторного использования кода за счет наследования;
- более простая структура программы в результате инкапсуляции, то есть объединения свойств и поведения объекта и скрытия деталей его реализации;
- возможность создания библиотек объектов.
Эти преимущества проявляются при создании программ большого объема и классов программ. Однако создание объектно-ориентированной программы представляет собой весьма непростую задачу, поскольку в процессе добавляется этап разработки иерархии объектов, а плохо спроектированная иерархия приводит к появлению сложных и запутанных программ. Кроме того идеи объектно-ориентированного программирования не просты для понимания и в особенности для практического применения / 4 стр.166 /.
Главная цель, к которой нужно стремиться, - получить легко читаемую программу более простой структуры. В конечном счете все технологии программирования направлены на достижение именно этой цели, поскольку только так можно добиться надежности программы и легкости ее модификации.
Заключение
Создание программных продуктов – трудоемкий процесс, основанный на определенной технологии и инструментарии его разработки. В ходе написания работы у меня сформировалось представление о методологии создания программного продукта, используемых технологиях алгоритмизации и программирования. При изучении материала были рассмотрены следующие понятия:
Понятие алгоритма и алгоритмизации
Каким требованиям должен отвечать алгоритм
Какими свойствами он обладает
Каковы базовые структуры алгоритма
Понятие языка программирования и его уровни
Виды языков высокого уровня
Языка баз данных и их особенности
Языки для Интернета и их особенности
Компоненты для создания программ
10) Программная архитектура и группы