- •Основные понятия и принципы ооп
- •Абстракция:
- •Инкапсуляция:
- •Аспекты платформы .Net Framework
- •Эволюция и основные возможности c#
- •Структура программы и синтаксис конструкций c#
- •Понятие семантики в математике и программировании
- •Теория вычислений д.Скотта. Семантика c#
- •Понятие класса и объекта. Концептуальная модель
- •Классы, поля, методы в c#
- •Определение типов. Классификация систем типизации
- •Система типов cts. Базисные типы
- •Пространство имен. Преобразование типов
- •Наследование в ооп
- •Базовые и производные классы в c#
- •Понятие инкапсуляции в математике и программировании. Описание и применение инкапсуляции в c#
- •Виды области видимости. Рекомендации
- •Понятие полиморфизма
- •Интерфейсы, их связь с абстрактными классами. Реализация
- •Понятие события в математике и программировании. Моделирование событий
- •Делегаты. События как особый вид делегатов
- •Исключения и их обработка в c#
- •Графический интерфейс Windows Forms. Программные компоненты и модель
- •Основные классы. Иерархия классов. Основные контролы
- •Создание пользовательских компонентов
Эволюция развития лямбда-исчисления и комбинаторной логики
Комбинаторная логика и лямбда-исчисление — это такие формальные системы, в которых центральной разрабатываемой сущностью является представление об объекте.
Эволюция развития формализации с типами и рекурсивных вычислений
Эволюция развития модели абстрактной машины и концепций ООП
Современные подходы к программированию
Основные подходы:
Модульный (имеет чётко опр-ю структуру)
Функциональный (функции вып-т нек-е действия)
Логический
Объектно-ориентированный подход
Смешанный
Компонентно-ориентированный
Объектный подход
Декларативный язык
(программирование представляет собой описание действий которые необходимо осуществить ):
простота верификации и тестирования (+)
строгость мат формализации (+)
высокая степень абстракции (+)
сложность реализации (-)
необходимость мат знаний (-)
Примеры: LISP, SML, Haskell, Prolog
Процедурный язык
(программа представляет собой набор операторов, которые сгруппированы в отдельные блоки операторов - процедуры):
более высокий уровень абстракции (+)
меньшая машинная зависимость (+)
более широкая совместимость (+)
содержательная значимость текстов (+)
унификация программного кода (+)
увелич. производительности труда программистов(+)
большие трудозатраты на обучение (-)
меньшая эффективность программного кода (-)
Примеры: Fortran, ALGOL, PL/1, APL, BPL, Pascal, C, Basic, COBOL
Функциональный язык
(программа – функция, аргументы которой также возможно функции):
автоматическое управление памятью (сборка мусора) (+)
простота повторного использования кода (+)
использование функций с параметрическими аргументами (+)
абстрагирование от машинного представления данных (+)
использование рекурсий (вызов самих себя) (+)
удобство символьной обработки (+)
нелинейная структура программы (-)
низкая эффективность (-)
Примеры: LISP, SML, Haskell, CaML, Miranda, Hope
Объектно-ориентированный язык
(программа представляет описание объектов, совокупность отношений и взаимодействие между ними):
описание любой предметной области (+)
моделирование сложных предметных областей (+)
событийная ориентированность (+)
высокий уровень абстракции (+)
повторное использование объектов (+)
параметризация методов обработки объектов (+)
сложность тестирования и верификации (-)
Примеры: С++, VB, C#, Eiffel, Oberon
Основные понятия и принципы ооп
Объектно-ориентированный язык
(программа представляет описание объектов, совокупность отношений и взаимодействие между ними):
описание любой предметной области (+)
моделирование сложных предметных областей (+)
событийная ориентированность (+)
высокий уровень абстракции (+)
повторное использование объектов (+)
параметризация методов обработки объектов (+)
сложность тестирования и верификации (-)
Примеры: С++, VB, C#, Eiffel, Oberon
Принципы ООП:
Абстракция:
это выражение языка программирования, отличное от идентификаторов.
Переменная является значением абстракции.
Поведение абстракции это приложение функции к аргументу.
Моделируется при помощи лямбда- счисления
Наследование:
означает свойства произвольного объекта сохранять поведение базового объекта.
Моделируется наследование 2 подходами:
Фреймовая нотация Руссополоса
диаграмма Hasse
Инкапсуляция:
доступность объекта исключительно при помощи свойств и методов.
Свойства: совместное хранение данных и методов; скрытие внутренней информации об пользователе; изоляция пользователя от особенности реализации
Полиморфизм:
оперирование объектами не обладая точными значением их типов
Аспекты платформы .Net Framework
Платформа.net означает:
Совокупность технологий, которые позволяют работать с инф. в любое время на любом устройстве
Программы становятся услугами
Платформа поддерживает различные языки
Стандартная инфраструктура по разработке, использованию, хостингу и интеграции XML Web услуг
Маркетинговая стратегия
Составляющие концепции:
Новая идеология проектирования
Модель поддержки жизненного цикла
Современная, интегрированная платформа
Современный инструментарий
Идеология:
Легкость развертывания приложений в среде Интернет
Эконом. разраб. путем испол. готовых компонентов
Интеграция как с программными прод-ми, так и с аппаратными средствами
Использование сервисов, кот предлагаются пользователям или приложениям
Безопасность и удобство использования
Модель:
компонентный подход
универ. сист. типизации (любой тип является объектом)
иерархия (упорядочивание классов)
универсальный интерфейс
вариативность экземпляров прогр-го об-я
Платформа:
многоязыковая поддержка
интерапирабельность (повт-е исп-е кода) и масштабируемость
унификация доступа к библиотекам
соответствие современным стандартам
Инструментарий:
многоязыковая среда
создание компонентов на наиболее подходящем языке
доступность средств данной платформы для широкого использования
одинаковость сервисных возможностей
самостоятельность в разработке трансляторов
Архитектура .NET Framework
Компонентное программирование .NET Framework
Работы:
1924 – Шейнфинкель – простая теория функций
1934 – Черч – Лямбда- счисление, исследование теории множеств
1971 – Скотт - Полные и непрерывные решетки
80е – Скотт – исследование механизма определённых дескрипций
90е – Вольфангаген – схема двухуровневой концентрализации
Компоненты это:
независимые повторно используемые и типизируемые модули
в целом более крупные, чем объект
могут содержать множественные классы
независимы от языка реализации
Сравнение ООП и КОП:
1)Основные понятия Ооп
класс
интерфейс
2)основные понятия КОП
свойства (property)
события (event)
сборка (assembly)
Модели КОП:
Component object model (com) – для конкретизации и использования компонента внутри процесса, между процессами и между компьютерами. Основа для Actuve X, OLE
Java beans- стандарт SunMicrosystem для компонентов (не является независимым от языка)
Corba- громоздкий IDL – интерфейс, сложность отображения одного языка в реализации другого.
Web- сервисы в .NET:
заменяют компонентный подход в среде Internet
программируемые компоненты приложений, доступные посредством стандартных Интернет-протоколов
центральная часть архитектуры .NET
распределяют функциональность по глобальной сети
строятся на существующих развивающихся стандартах
Преимущества КОП:
снижение стоимости ПО
возможность повторного использования
унификация обработки объектов различной природы
менее человекозависимый процесс создания ПО
строгое математическое основание (лямбда-счисление)
концепция универсальна и одинакова