- •1. Кризис программирования
- •2. Понятие жизненного цикла по
- •3. Требования к технологии проектирования
- •4. Понятия профессионального программирования
- •5. Проект и команда
- •6. Задача профессионального программирования
- •7. Алгоритмы
- •8. Модели и моделирование
- •9. Структурный подход
- •9.1. Проблема сложности
- •9.2. Сущность структурного подхода
- •9.3. Метод функционального моделирования (sadt)
- •9.3.1. Состав функциональных моделей
- •9.3.2. Методика построения модели
- •9.4. Метод моделирования процессов - потоков данных (dfd)
- •9.4.1. Общая концепция
- •9.4.2. Состав диаграмм потоков данных
- •13. Венгерская нотация
- •14. Методология и парадигма программирования
- •15. Современные методологии программирования
- •16. Методология императивного программирования
- •17. Методология объектно-ориентированного программирования
- •18. Методология функционального программирования
- •19. Методология логического программирования
- •20. Методология программирования в ограничениях
- •21. Методология структурного императивного программирования
- •22. Методология параллельного императивного программирования
- •23. Методология нейросетевого программирования
- •23.1. Модель нейрона с линейной функцией активации
- •23.2. Модель нейрона с радиальной функцией активации
- •23.3. Разработка нейросетевой модели
- •24. Основные типы ошибок в программах
- •25. Отладка и тестирование
- •26. Режимы работы компилятора Delphi для поиска ошибок
- •27. Задание режимов работы отладчика с помощью переключающих директив
- •28. Пользователи и их поддержка
- •29. Поддержка программиста: общие требования
- •29.1. Пролог модуля
- •29.2. Проектная документация
- •29.3. Оформление текста программы
- •30. Поддержка конечного пользователя
- •31. Технология программирования графики
- •31.1. Графическая подсистема оболочек Win32/64
- •31.2. Графические средства Delphi
- •31.3. Проектирование интерфейса с пользователем: компоненты стандартных диалогов
- •32.Технология компонентного программирования
- •32.1. Технология com
- •32.1.1. Общая концепция
- •32.1.2. Интерфейс com
- •32.1.3. Сервер com
- •32.2. Технология ole
- •32.2.1 Суть и содержание ole
- •32.2.2.Терминология ole
- •32.2.3. Автоматизация ole
- •32.2.4. Структурированная память
- •32.3. Технология corba
- •32.4. Технология Java
- •32.5.Технология .Net
- •33. Технология описания аппаратуры
- •Input clock, reset, en;
- •If(!reset)
- •34. Технология коллективной разработки
- •34.1. Авторская разработка
- •34.2. Коллективная разработка
- •34.2.1. Технические командные роли
- •34.2.2. Психологические командные роли
- •34.2.3. Типы совместной деятельности
- •34.3. Общинная модель разработки
- •35. Технология оценки качества по
- •35.1. Подходы к оценке качества по
- •35.2. Характеристики качества по
- •35.3. Оценка качества процесса разработки
- •35.3.1. Модель зрелости процесса разработки по
- •35.3.2. Определение возможностей и улучшение процесса создания по
- •35.4. «Достаточно хорошее» по
- •33.5. Стандартизация информационных технологий
- •Международные организации, входящие в структуру оон.
- •Промышленные профессиональные или административные организации.
- •Промышленные консорциумы.
- •36. Инструментальные средства поддержки некоторых технологических подходов
- •36.1. Инструментальные системы
- •36.1.1. Инструментальные среды программирования
- •36.1.2. Средства автоматизации разработки программ (case-средства)
- •36.1.3. Интегрированные среды
- •36.1.4. Репозитории проекта
- •36.2. Поддержка коллективной разработки: системы управления версиями
- •37. Организация диалогов
- •38. Защита программного кода
17. Методология объектно-ориентированного программирования
Методология объектно-ориентированного программирования – подход, использующий объектную декомпозицию.
Методы и концепции:
Выделение объектов и связей между ними. Поддерживается концепциями инкапсуляции, наследования и полиморфизма.
Применение абстрактных типов данных (основа - инкапсуляция).
Описание поведения системы в терминах обмена сообщениями между объектами.
В данном случае вычислительная модель в явном виде поддерживает только одну операцию - посылку сообщения объекту. При этом для модели справедливы следующие свойства:
Объектом является процесс, который может иметь различные внутренние состояния.
При получении сообщения объект становиться активным.
Извне внутреннее состояние объекта может быть изменено только посредством передачи ему сообщения, специфицирующего выполняемую объектом операцию.
Во время работы объект может обмениваться сообщениями с другими объектами.
Синтаксис и семантика. Для ООП определены три основных свойства:
Инкапсуляция – это сокрытие информации и комбинирование данных и функций.
Наследование – сохранение способов первичного доступа к коду и данным у всех порождаемых объектов.
Полиморфизм – присваивание действию одного имени, для различных объектов (одно название функции – разные действия объектов).
Выделяют следующие элементы синтаксиса:
Класс – тип данных для описания объектов.
Объект – переменная-процесс с собственным внутренним состоянием, представляющая собой экземпляр класса.
Сообщение – экземпляр класса, предназначенного для обмена данными между объектами.
Поля – внутренние данные объекта.
Свойства – переменные, для доступа к внутренним полям объекта.
Методы (обработчики событий) – свойства процедурного типа. Если обработчик для сообщения выбирается динамически, то метод, реализующий данный обработчик, принято называть виртуальным.
Языки объектно-ориентированного программирования условно подразделяют на три группы:
Чистые языки. Содержат небольшую языковую часть и существенную библиотеку классов - Simula (1962), Smalltalk (1972), Beta (1975), Self (1986), Cecil (1992).
Гибридные языки. Появились в результате внедрения объектно-ориентированных конструкций в популярные императивные языки - Ada (1974), C++ (1983), Object Pascal (1984), Eiffiel (1992).
Урезанные языки. Появились в результате удаления из гибридных языков наиболее опасных и ненужных с объектно-ориентированной точки зрения конструкций – Java (1995), C# (2000).
Класс задач. Данная методология является мощным средство для моделирования отношений между объектами практически в любой предметной области. Особенно удачно применяется при описании взаимодействия между элементами графического интерфейса.
18. Методология функционального программирования
Методология функционального программирования – способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части – введение имени для функции и задание для этого имени выражения, вычисляющего значения функции, а единственным правилом композиции – оператор суперпозиции функции.
Методы и концепции:
Метод аппликативности - заключается в том, что программа есть выражение, составленное из применения функций к аргументам. Программа состоит из совокупности определений функций, представляющих собой вызовы других функций и предложений, управляющих последовательностью вызовов.
Метод рекурсивного поведения – заключается в самоповторяющемся поведении, возвращающемся к самому себе.
Метод настраиваемости - заключается в том, что можно легко порождать новые программные объекты по образцу, как значения соответствующих выражений (применение порождающих функций к параметрам образца). Этому способствует то, что не только программа, но и любой программный объект (в идеале) является выражением.
Вычислительная модель. Программы являются выражениями, а исполнение программ заключается в вычислении этих выражений. Для программ отсутствует понятие времени.
Основная специфика функциональных языков программирования заключается в том, что функции обмениваются между собой данными непосредственно, т.е. без использования промежуточных переменных и присваиваний.
Популярные языки функционального программирования:
Lisp (1958)
РЕФАЛ (1968)
Scheme (1975)
FP (1977), ML (1978)
Miranda (1985)
Standart ML (1985)
Haskell (1990, 1998)
Класс задач. Функциональное программирование обычно применяется для решения тех задач, которые трудно сформулировать в терминах последовательных операций. В эту категорию попадают практически все задачи, связанные с искусственным интеллектом. Это такие задачи, как обработка естественного языка, экспертные консультирующие системы, проблемы зрительного восприятия, и многие другие.