Современные подходы к программированию
Основные подходы:
Модульный (имеет чётко опр-ю структуру)
Функциональный (функции вып-т нек-е действия)
Логический
Объектно-ориентированный подход
Смешанный
Компонентно-ориентированный
Объектный подход
Декларативный язык
(программирование представляет собой описание действий которые необходимо осуществить ):
простота верификации и тестирования (+)
строгость мат формализации (+)
высокая степень абстракции (+)
сложность реализации (-)
необходимость мат знаний (-)
Процедурный язык
(программа представляет собой набор операторов, которые сгруппированы в отдельные блоки операторов - процедуры):
более высокий уровень абстракции (+)
меньшая машинная зависимость (+)
более широкая совместимость (+)
содержательная значимость текстов (+)
унификация программного кода (+)
увелич. производительности труда программистов(+)
большие трудозатраты на обучение (-)
меньшая эффективность программного кода (-)
Функциональный язык
(программа – функция, аргументы которой также возможно функции):
автоматическое управление памятью (сборка мусора) (+)
простота повторного использования кода (+)
использование функций с параметрическими аргументами (+)
абстрагирование от машинного представления данных (+)
использование рекурсий (вызов самих себя) (+)
удобство символьной обработки (+)
нелинейная структура программы (-)
низкая эффективность (-)
Объектно-ориентированный язык
(программа представляет описание объектов, совокупность отношений и взаимодействие между ними):
описание любой предметной области (+)
моделирование сложных предметных областей (+)
событийная ориентированность (+)
высокий уровень абстракции (+)
повторное использование объектов (+)
параметризация методов обработки объектов (+)
сложность тестирования и верификации (-)
Основные понятия и принципы ООП
Объектно-ориентированный язык
(программа представляет описание объектов, совокупность отношений и взаимодействие между ними):
описание любой предметной области (+)
моделирование сложных предметных областей (+)
событийная ориентированность (+)
высокий уровень абстракции (+)
повторное использование объектов (+)
параметризация методов обработки объектов (+)
сложность тестирования и верификации (-)
Принципы ООП:
Абстракция:
это выражение языка программирования, отличное от идентификаторов.
Переменная является значением абстракции.
Поведение абстракции это приложение функции к аргументу.
Моделируется при помощи лямбда- счисления
Наследование:
означает свойства произвольного объекта сохранять поведение базового объекта.
Моделируется наследование 2 подходами:
Фреймовая нотация Руссополоса
диаграмма Hasse
Инкапсуляция:
доступность объекта исключительно при помощи свойств и методов.
Свойства: совместное хранение данных и методов; скрытие внутренней информации об пользователе; изоляция пользователя от особенности реализации
Полиморфизм:
оперирование объектами не обладая точными значением их типов
Аспекты платформы .NET Framework
Платформа.net означает:
Совокупность технологий, которые позволяют работать с инф. в любое время на любом устройстве
Программы становятся услугами
Платформа поддерживает различные языки
Стандартная инфраструктура по разработке, использованию, хостингу и интеграции XML Web услуг
Маркетинговая стратегия
Составляющие концепции:
Новая идеология проектирования
Модель поддержки жизненного цикла
Современная, интегрированная платформа
Современный инструментарий
Идеология:
Легкость развертывания приложений в среде Интернет
Эконом. разраб. путем испол. готовых компонентов
Интеграция как с программными прод-ми, так и с аппаратными средствами
Использование сервисов, кот предлагаются пользователям или приложениям
Безопасность и удобство использования
Модель:
компонентный подход
универ. сист. типизации (любой тип является объектом)
иерархия (упорядочивание классов)
универсальный интерфейс
вариативность экземпляров прогр-го об-я
Платформа:
многоязыковая поддержка
интерапирабельность (повт-е исп-е кода) и масштабируемость
унификация доступа к библиотекам
соответствие современным стандартам
Инструментарий:
многоязыковая среда
создание компонентов на наиболее подходящем языке
доступность средств данной платформы для широкого использования
одинаковость сервисных возможностей
самостоятельность в разработке трансляторов
Библиотеки .NET Framework
Состоит:
1) спецификация CLS:
совокупности правил которые любой .net язык должен выполнять
специфицирует min требования для любых .net языков
совместимость между языками
Система типов CTS (универсальная система типов)
1) значимые типы (численные, вещественные, символьные)
используют стек для размещения
уничтожаются при выходе из блока, в котором были объявлены
передаются по значению (копирование значения)
2)ссылочные типы (классы, интерфейсы, массивы)
не используют указатели
сохраняются в динамической памяти
уничтожаются сборщиком мусора
предаются по ссылке (копируют ссылки)
.NET сборки(assemblies):
программные компоненты – DLL и EXE файлы
наименьшая deployment единица в CLR
имеет уникальный номер версии
нет конфликтов с версиями
несколько различных версий одной сборки могут существовать и использоваться одновременно
состоят из:
MSIL исполнимого кода
Метаданных
Ресурсов
библиотека классов FCL:
стандарт для .net приложений
доступна везде где есть net framework
BCL:
богатая ОО библиотека с основными классами
коллекции ввод/вывод, работа с символами, удалённое управление, многонитевость
ADO.NET
доступ к БД
disconnected модель данных
сильная поддержка XML
ASP.NET и WinForms:
потребительский интерфейс приложения – Web базированный, Windows GUI, Web услуги
Приложения .NET Framework
Свободная реализация .NET Framework
Основные возможности C#
Эволюция:
Начало развития в 1963г. Томпсон-язык B
1972г. Томпсон-язык С.
1984г. Язык С++
2000г. Язык С#.
Что такое С#:
смесь С++, java, Delphi
концепция разделения типов на ссылочные и значимые
поддержка xml документации
Особенности программ на C#:
Совокупность описаний (набор классов и интерфейсов)
Классы содержат как один, так и много точек входа программы
Программы состоят из нескольких файлов
Пространство имен может быть разнесено на несколько файлов
Структура программ C#
Программа на C#:
предст. совокупность описаний классов, структур и других типов
классы содержат метод Main () – точку входа в прогу
приложения могут состоять из нескольких файлов
в одном файле может быть несколько классов, структур и других типов
классы расположены в пространстве имён
одно namespace может располагаться в нескольких файлах
Область описания:
Объекты могут быть описаны:
пространство имён (классы, инт., стр.,…)
в классах
в перечислении (const…)
Контекст. сосл-я:
недопустимо двухкратное описание в пред. обл.
Декларации:
Локальные переменные (название типа и переменной)
Классы
константы
Константы:
const времени компиляции
времени исполнения readonly
Операторы:
type of
size of