Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

SOLID: принцип инверсии зависимости (DIP).




Принцип инверсии зависимостей (англ. Dependency Inversion Principle, DIP) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах. Входит в пятёрку принципов SOLID.

Формулировка

· Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.

· Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

 

NET Framework. Общеязыковая среда исполнения (CLR). Управляемые модули и

Сборки. Общая система типов (CTS) и Общеязыковая спецификация (CLS).

.NET Framework. состоит из:

- CLR(Common Language Runtime) – общеязыковая исполняющая среда.

- FCL (Framework Class Library) – библиотека классов Framework

Преимущества:

- единая упрощенная программная модель

- нет проблем с версиями (“ад DLL”)

- упрощенное развертывание

- работа на нескольких платформах

- интеграция языков программирования

- повторное использование кода

- автоматическая сборка мусора

- проверка безопасности типов

- взаимодействие с существующим кодом

CLR

- поддерживает приложения, разработанные на различных языках

- вместе с Framework распространяются (ассемблер IL, C#, Visual Basic.NET, J#, Jscript)

- Устанавливается в каталог: %WINDOWS%\Microsoft.NET\Framework\vверсия

Компиляция

Управляемый модуль (managed module) – стандартный исполняемый файл Windows, который требует для своего исполнения CLR

 

 

Метаданные (metadata) – «данные о данных» – набор таблиц данных, описывающих:

- какие типы определены в данном модуле

- на какие типы, определенные в других модулях, ссылается данный модуль

Использование метаданных:

- Устраняют необходимость в заголовочных файлах

- IntelliSense

- Верификация

- Сериализация/десериализация

- Сборка мусора

IL (Intermediate Language, промежуточный язык) – не зависящий от процессора псевдо-машинный язык

Особенности:

- создание и инициализация объектов

- вызов виртуальных методов

- манипулирование элементами массивов

- генерация и обработка исключений

- исполняется на любой платформе

Исполнение

JIT-компиляция (Just-in-Time, «точно в срок»): команды IL во время первого обращения к методу преобразуются в команды процессора (“native” код).

При этом осуществляется и верификация – проверка IL-кода на безопасность.

CLR работает не с модулями, а со сборками.

Сборка (assembly):

- логическая группировка одного или нескольких управляемых модулей или файлов ресурсов;

- единица повторного использования, безопасности и контроля версий.

 

Манифест, декларация (manifest) – метаданные, описывающие

- файлы, формирующие сборку

- общедоступные типы, реализованные в файлах сборки

- файлы ресурсов или данных, включенные в сборку

 

 

Framework Class Library

- FCL основана на объектно-ориентированной парадигме

- Содержит несколько тысяч типов

- Типы скомпонованы в пространства имен

Общая система типов (Common Type System, CTS) – формальная спецификация, описывающая определение типов и их поведение

- Типы (класс, структура, перечисление, интерфейс, делегат)

- Определяет элементы типов: поле, метод, свойство, событие

- Определяет правила видимости типов и доступа к их элементам public, protected, private, internal

Типы

- Ссылочные (reference types)

- Переменная содержит ссылку на объект

- При присваивании создается еще одна ссылка на тот же объект

- Объекты размещаются в управляемой куче

- Типы-значения (value-types)

- Переменная содержит сам объект

- При присваивании создается копия объекта

- Объекты размещаются в стеке

- Элементарные (primitive types)

Видимость типа

- public (открытый)

- internal (внутренний) (тип доступен только из сборки, в которой он определен)

Члены типа

Константа – идентификатор, представляющий некую постоянную величину

Поле

Статическое Экземплярное

Конструктор экземпляров

Конструктор типа – метод, инициализирующий статические поля типа

Метод

Перегруженный оператор

Оператор преобразования — метод определяющий порядок приведения объекта из одного типа в другой

Свойство — позволяет применить синтаксис, аналогичный обращению к полю, для получения/изменения состояния объекта

Событие – метод, позволяющий объекту/типу посылать уведомления слушающему типу/объекту

Тип – позволяет определить вложенные типы

Доступ к членам типа

private – тип (и вложенные типы)

protected – тип и производные от него

internal – сборка

protected internal – тип, производные от него и любой код в сборке

public – любой код из любой сборки

Общеязыковая спецификация (Common Language Specification, CLS) – спецификация, описывающая набор правил, позволяющих типам, реализованным на разных языках взаимодействовать друг с другом.

- Учет регистра символов

- Целые числа без знака

- Перегрузка операторов

- Методы с переменным числом параметров

Общеязыковая спецификация

- Учет регистра символов

- Целые числа без знака

- Перегрузка операторов

- Методы с переменным числом параметров

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...