ООП - 8v83.tom.ru

advertisement
ООП
Жизненный цикл программного обеспечения:
Причины неудач программных проектов:
-нечеткая формулировка требований к ПО со стороны заказчика
-частая смена требований со стороны заказчика
-недостаток финансовых и (или) временных ресурсов
-недостаток квалифицированного персонала
-использование несовершенных технологий
V Старт проекта
| Обследование системы
| Планирование
| Системный анализ
| Системное проектирование
| Программное проектирование
| Кодирование, тестирование, отладка
| Системное документирование
| Внедрение
| Сопровождение
V Завершение проекта.
Обследование системы – рассматривает поставленная задача, принимается решение «будет
ли данная задача решаться?», если «да», грубо оцениваются сроки и стоимость выполнения
задачи.
Планирование – на этапе планирования осуществляется детальная проработка задачи, на
основе которой, формируется предварительное техническое задание на программный
проект.
Системный анализ - на этапе системного анализа анализируется предпочтения заказчика, или
область в которой будет разрабатываться ПО, а затем описывается задача в терминах данной
предметной области с целью последующего проектирования архитектуры программного
продукта.
Системное проектирование – необходимо для создания структуры, описывающей объекты,
входящие в составе каждой из ????
Системное документирование – сопроводительное документирование к программному
продукту.
Внедрение – установка ПО на аппаратную базу заказчика, обучение персонала
Сопровождение – исправление ошибок в программном продукте не выявленных на этапе
тестирования. Выпуск исправлений. Консультация пользователя системы.
Классы и объекты.
Объект –
осязаемый или (и) видимый предмет;
нечто на что направлена мысль или действие;
нечто воспринимаемое мышлением.
Объект – это некая сущность, которая обладает состоянием, поведением и идентичностью.
Объекты имеющие одинаковое поведение и сущность образует класс. Термины объект и
экземпляр класса взаимозаменяемы.
Существует понятие называемое суперклассом.
Суперкласс – это класс, экземпляры которого суть классы.
Метакласс (абстрактный) – является суперклассом и служит родоначальником иерархии
классов.
Состояние объекта – определяется перечнем (обычно статических свойств с указанием
допустимого диапазона значений этих свойств).
Объект не существует изолированно, а подвергается взаимодействию или сам
воздействует на другие объекты. Таким образом, он реализует своё поведение.
Поведение – это ???? объект действует и реагирует, поведение выражается в
переменах состояния объекта и передачей сообщений.
Типы методов:
Конструктор – это метод позволяющий создать объект и (или) его инициализировать.
Деструктор – это метод позволяющий удалить объект и (или) сбросить его состояние.
Селектор – метод, считывающий состояние объекта без его изменения. (get)
Модификатор – изменяет состояние объекта. (set)
Итератор – позволяет последовательно считать и (или) изменять состояние объекта.
Для того чтобы клиент обращался к серверу.
Способы обеспечения видимости.
Сервер глобален по отношению к клиенту.
Сервер является частью клиента
Сервер передается клиенту в качестве параметра.
Сервер локально порождается клиентом.
Сервер – это объект, который предоставляет услуги.
Клиент – тот объект, который покупает взаимодействие между к. и с. осуществляется
на основе четко описанных правил, называемых протоколами. При этом сервер берёт на себя
обязательства, которые называются контактными и в случае невозможности их выполнения
должен уведомить об этом клиента.
Критерии выбора типов методов в классе;
Аспект расхода памяти и времени
Синхронное выполнение того или иного действия.
Синхронные.
Преимущества синхронных операций: выполнение вычислений при готовности клиента
и сервера гарантирует защиту от повреждения данных
Недостаток: в случае неправильной реализации алгоритма, данный метод может
внести сбой в работу программы системы.
Существует минимальный (Оптимальный по времени), средний, максимальный
(Оптимальный по памяти) вариант.
Критерии проверки правильности
Зацепление: определяет степень глубины связей между классами в системе. Систему с
сильным зацеплением очень сложно воспринимать и модернизировать. Необходимо
стремиться к уменьшению.
Связность: необходимо выстраивать связь между классами, на основании их
взаимодействия с точки зрения логики следует избегать связей по случайному принципу.
Достаточность: в классе должны присутствовать все элементы, для обеспечения его
логичного и эффективного применения.
Полнота: говорит о том, что в классе должны присутствовать элементы,
обеспечивающие максимальное удобство работы с классом.
Примитивность: обеспечивает наличие элементов, которые требуются для их
выполнения доступа к внутренний реализации класса, по возможности следует избегать не
примитивных элементов.
Принципы ООП
Абстрагирование
Стили(подходы) программирования.
Процедурно-ориентированный стиль - является исторически первым и основан на
алгоритмической декомпозиции задачи.
Процедурная абстракция и метод построения программы, сверху вниз.
Данный стиль не может быть использован для создания программных продуктов имеющих
высокий уровень сложности.
__________________________________________________________________
Критичность и масштабность программных проектов.
Уровень критичности: ошибка ПО вызывают
a) Неудобство работы
c) Потерю восполнимых ресурсов.
d) Потерю невосполнимых ресурсов.
l) Угрозу человеческой жизни
Масштабность: Малый: 1-6 человек.
Средний: 7-20 человек
Должность: >20 человек
___________________________________________________________________
Структурно-ориентированный подход - Основан на структурной детализации задачи,
абстракции типа данных и структурном построении программы, как организации
образования входных данных в выходные.
Функционально-ориентированный стиль - Основан на абстракции математической
функции и построению программ подобно математическим преобразованиям. Для систем
искусственного интеллекта.
Логико-ориентированный подход - Основан на логических догадках, является
декларативным, описательным способом решения задач, Основывается на логической
декомпозиции правил вывода решения задач и основывается на организации построения
программы как набора отношений факторов и утверждений, о предметной области.
Объектно-ориентированный подход - Базируется на декомпозиции задачи с точки
зрения классов и объектов, имитируя сущности реального мира. Подходит для решения задач
любого уровня.
Классическая категоризация - Основана на том, что все вещи, предметы и т.п.
обладающие данными свойствами или совокупностью свойств образуют некоторую
категорию. Причем наличие данных свойств является необходимым и достаточным условием
принадлежности к категории.
Концептуальная кластеризация - Является дальнейшим развитием классического
подхода и основывается на теории нечётных множеств. Данная теория говорит о том, что
каждый объект обладает совокупностью свойств, значения которого можно определить,
используя некий коэффициент, и в зависимости от значений коэффициента объект
причисляется к тому или иному кластеру.
Теория прототипов - Основана на том, что выбирается один объект, который будет
выступать в качестве эталона, и в зависимости от схожести с ним причисляется к данному
классу, или нет.
Недостаток: сложность описания прототипа
________________________________________________________________________
Классы анализа.
UML
Entity (Сущность) - классы сущности предназначены для долговременного хранения
информации.
Boundary (Граничный) – отвечает за взаимодействие системы с её внешними
пользователями. Пользователи: люди, программные системы, аппаратные устройства.
Control – отвечает за взаимодействие между граничным и классом сущности.
Методы классификации: классический
1) Классический метод – говорит о том, что источником классов является объекты
предметной области. Классическим данный метод называется потому, что базируется на
классической теории. Кандидатами в объекты могут являться осязаемые предметы, роли.
Взаимодействие
2) Анализ поведения – акцентирует внимание, на динамическом поведении системы,
как источнике классов и объектов. В этом случае, берется отдельный объект поведения
системы, а затем данное поведение анализируется, для того, чтобы выявить его ключевые
данные моменты могут служить источником классов и объектов.
3) Анализ предметной области – осуществляется группой экспертом (будущих
пользователей, специалистов предметной области, системных аналитиков). На основании
своего опыта, они описывают будущую задачу, выявляют информацию, которая должна
храниться, описывают роли пользователей системы, а так же возможные алгоритмы их
действий. Всё это служит основой для классов и объектов системы.
4) Неформальное описание – задача описывается на естественном языке, а затем
подчеркиваются существительные и глаголы.
5)Анализ вариантов: предполагает изучение аспектов поведения системы в
зависимости от внешних условий, в частности внешними условиями могут являться данные,
которые поступают на вход системы. В зависимости от потока данных. Задействуется
определённая ветка сценария поведения системы. Каждая из ветвей анализируется с
использованием метода анализа поведения. Анализ Вариантов можно применять только
вместе с методов Анализ поведения.
6) Структурный анализ – ортогонален ООП и используется в тех случаях, когда для ОО
системы требуется построить структуру данных.
7)CRC – карточки.
Наследование – позволяет организовать механизм получения свойств и методов класса
родителя, классом потомком, при этом класс потомок может расширить или ограничить
поведение класса родителя.
2 типа: Одиночное - когда потомок наследует только один класс родителя.
Множественное – когда потомок наследует два и более классов родителей
Проблемы множественного наследования:
1)конфликт имён – заключается в том, что классы родителей могут иметь методы и
свойства с одинаковыми именами (решение: префикс).
2)Повторное наследование – заключается в том, что классы родителя могут
унаследовать свойства и методы своего предка, а потомки данных классов может не знать
какие свойства и методы наследовать ему от родителей.
Вывод: может быть использовано при построении ООП однако следует ограничить его
применение поскольку оно запутывает логику программы.
Полиморфизм – присваивание действию по иерархии объектов одного класса, причем
каждый из объектов будет выполнять данное действие наиболее подходящим ему способом.
Динамическое и статическое связывание.
Статическое – заключается в том, что при компиляции адреса вызова статических методов,
заранее известны.
Динамическое связывание – при ДС адрес метода неизвестен на этапе компиляции и
определяется только в момент вызова необходимого метода. ДС обеспечивает поддержку
полиморфизма.
Безопасное программирование
Классификация ошибок в программных системах.
1)синтаксические – наиболее простой тип, связанный с неправильным или некорректным
определением языковой конструкции, выявляются на этапе компиляции.
2)опечатки – как правило, вызваны невнимательностью при использовании кода, в
результате получается синтаксически верный, но неправильно работающий код.
3)ошибки реализации алгоритма – под данную категорию показывают ошибки вызванные
неверным программированием, при верном алгоритме.
4)ошибка алгоритма – возникают в том случае, когда неверно составили алгоритм, при этом
данные ???? были неизбежно интерферируют с ошибками реализации алгоритма.
5)ошибки метода – связаны с неверным описанием или оценкой погрешности при решении
той или иной задачи программирования. Ошибки метода достаточно трудно выявляются и
даже при верном алгоритме и реализации результат недостижим.
Принцип безопасного программирования:
Безопасное программирование подразумевает, что программист должен выступать в
активной роли и блокировать возможные места появления ошибок в программе
соответствующий языковыми конструкциями.
Исключение, исключительные ситуации.
Исключительная ситуация, - это ошибка, возникающая в ходе выполнения программы
связанная либо с некорректной реализацией программы, либо со сбоями в работе
оборудования.
Исключения – это процедура, связанная с блокированием или корректной обработкой
исключительной ситуации, в основном обрабатываются исключительные ситуации,
связанные с неверной работой программы, возникающие в ходе её выполнения.
Модель обработки исключительной ситуации:
2 модели:
неВозобновимая – при возникновении исключительной ситуации, среда выполнения
начинает сканировать стек в поисках ближайшего обработчика исключительной ситуации,
при сканирование стек разрушается, работа программы продолжается с места исключения
Возобновимая – при возникновении исключительной ситуации сохраняется копия стека, при
выше описанной ситуации, восстанавливается стек, и работа программы работает с места
последнего взаимодействия.
Основными принципами безопасного программирования являются:
1) Необходимость проверки параметров, получаемых методов, даже если они заведомо
правильные.
2) Необходимость проверки данных возвращаемых методу.
3) Необходимость проверки результатов файловых операций
4) Необходимость проверки результатов для работы с памятью
5) Необходимость предотвращения ошибок, арифметических вычислений
Правила построения интерфейса пользователя.
В ходе хитрых исследований было установлено, что основные проблемы, связанные с
построением интерфейса пользователя.
1)человеку свойственно ошибаться
2)человек осознает информацию достаточно медленно по меркам компьютера
3)глаз быстрей руки
4)правило 7+-2
Человек способен хранить в кратковременно памяти не более 10 элементов
Там где более 10 элементов, интерфейс воспринимается сложнее.
5) Человек быстрее узнает что-то, чем вспоминает, как оно выражается, значительно проще
выбрать что-то из списка, чем набрать его имя или идентификатор.
6) Внимание человека, прежде всего, акцентируется на движении объектов, затем на
объектах выделенных цветом, и только потом на остальных формах выделения.
7) лучший способ отвлечь человека от работы, вставить в интерфейс анимацию.
Правила построения удобного интерфейса пользователя
1)Правило доступности:
Система должна быть постоянно понятной, чтобы пользователь никогда раньше не видавший
её, но владеющий соответствующими навыками в предметной области и в области
информационных технологий мог начать работу в ней без подготовки.
2) Правило эффективности:
Система не должна препятствовать эффективной работе опытных пользователей, плохое
решение ориентация интерфейса только на новичка.
3) правило непрерывного движения вперёд
Система должна способствовать непрерывному росту знаний, умений, навыков пользователя,
приспосабливаясь к его меняющемуся опыту.
Принципы построения интерфейса пользователя
1) Принцип структуризации:
Пользовательский интерфейс должен быть целесообразно структурирован,
родственные части его должны быть похожи и связанные, а независимые - не похожи и
раздельные.
2) Принцип видимости:
Все функции и данные необходимы для выполнения определённой задачи, должны
быть видны, когда пользователь принимается её выполнить
3) Принцип простоты:
Наиболее распространённые операции должны быть быстрыми, при этом должны быть
ссылки на более продвинутые процедуры.
4) Принцип обратной связи:
Пользователь должен получать сообщения о действиях системы и о важных
сообщениях внутри неё, сообщения должны быть краткими понятными, написаны на
языке понятном пользователю.
5) Принцип толерантности
Интерфейс должен быть гибким и терпим к ошибкам пользователя, ущерб от ошибок
должен снижаться за счёт возможности отмены и повтора действий, и за счёт разумной
интерпретации, любых разумных действий и данных, по возможности следует избегать
модального взаимодействия.
Современный компонентный подход
Прикладные компоненты, самостоятельные блоки программного кода, которые
реализуют определённую бизнес - логику, распределены по сети и могут быть
использованы многократно, на сегодняшний день 2 технологии:
COM(Component Object Model)
CORBA (Component Object Request Broker Architecture)
OLE(object linked embading) – пиво(присоединённые и внедрённые объекты)
Основные архитектурные принципы
Основное назначение данных технологий, поддержка, разработка и развёртывание
сложных ОО систем; любого отдельно взятого ОО языка не достаточно для написания
распределённых вычислительных систем. Достаточно часто различные компоненты
программного комплекса требуют реализации на разных языках, на разных аппаратных
и программных платформах.
Функциями COM u CORBA являются функции промежуточного обеспечения объектной
среды.
Для обеспечения данной промежуточной сети необходимо реализовать несколько
базовых принципов:
1) Независимость от физического размещения объекта. Компоненты программного
обеспечения не обязаны находиться в одном исполнительном файле, выполняться в
рамках одного процесса или размещаться на одной аппаратной системе.
2) Независимость от платформ. Компоненты могут выполняться на различных
аппаратных и операционных платформах, взаимодействуя друг с другом в рамках
единой системы.
3) Независимость от языка программирования. Различие в языках, которые
используются при создание компонентов, не препятствуют их взаимодействию друг
с другом.
Технологии CORBA u COM являются классами серверных приложении, в которых
функциональность объекта предоставляется клиенту по средством обращения к
абстрактному интерфейсу.
Интерфейс определяет, набор методов, который реализует функции присущие
данному классу.
Интерфейс, даёт возможность клиенту вызвать тот или иной метод, скрывая от
него детали его реализации.
Клиент получает доступ к объекту, только путём вызова метода, определённого в
интерпретации её объекта.
Это означает, что реальные действия выполняются в адресном пространстве
объекта, возможно удалённом от клиента.
В обеих технологиях в основе общения клиент – сервер лежит механизм
RPC(удалённый вызов процедур)
Механизм RPC реализует схему передачи сообщений, в соответствии с которой в
распределённом клиент-серверном приложении, процедура-клиент передаёт
специальное сообщение с параметрами вызова по сети в удалённую серверную
процедуру, и результат её выполнения возвращается в другом сообщение клиентскому
приложению.
Для того, чтобы реализовать данную процедуру общения, на стороне клиента и
сервера поддерживается специальные компоненты (клиент и серверный суррогаты)
Com: proxy –клиентский суррогат
Stub – серверный суррогат
Corba: skeleton – серверный суррогат
Написание Com приложений
Базовым понятием компонентных технологий является понятие интерфейса,
можно сказать, что интерфейс является контрактом между программистом и
компилятором. Программист обязуется реализовать все методы, описанные в
интерфейсе, и следовать требованиям, предъявленным к реализации каждого из них
.Компилятор обязуется создать в программе внутренние структуры, позволяющие
обращаться к методам этого интерфейса из любого поддерживающего те же
приложения средства программирования. Описание интерфейса включает в себя,
описание методов и их параметров, но не включает их реализацию. Кроме того, в
объявлении может быть указано уникальное 16байтовое число, сгенерированное по
специальным правилам, гарантирующим её статическую уникальность.
GUID (global unic ID)
Интерфейсы могут наследоваться
Интерфейс не является классом.
1) Класс может выступать в реализации интерфейса, но класс содержит код методов на
конкретном языке, а интерфейс нет
2) Интерфейс строго реализован, как клиент, так и реализация интерфейса должны
использовать точно те же методы и параметры, что указаны в описании интерфейса
3) Интерфейс является неизменным контрактом, нельзя определить новую версию
интерфейса с измененным набором методов или их параметров, с тем же самым
идентификатором
Реализация интерфейса – это код, который реализуют методы, при этом за
несколькими исключениями; не накладывается никаких ограничений на то, каким
образом будет выгладить реализация. Физически реализация представляет собой
массив указателей на методы, адрес которого и используется в клиенте для доступа к
СОМ объекту.
IUnknown(базовый интерфейс)
Автоматическое управление памятью и подсчёт ссылок. Автоматическое
управление памятью основано на идеи подсчёта ссылок на объект. Любой клиент
желающий использовать СОМ объект после создания, должен вызвать метод AddRet
который увеличивает внутренний счётчик ссылок на объект на единицу, по завершению
пользования объекта, клиент вызывает метод Release, уменьшающий значение этого
счётчика на единицу, по достижению счётчиком нулевого значения, объект
автоматически удаляется из памяти. Такая модель позволяет клиентам, не вдаваться в
подробности реализации объекта, объекту обслуживать несколько клиентов и очищать
память по завершению работы с ними.
Функция QueryInterface позволяет получить в качестве выходного параматра
идентификатор интерфейса, если объект реализует запрошенный интерфейс то метод:
возвращает ссылку на него в параметр obj, и вызывает метод AddRet полученного
интерфейса и возвращает о, в противном случае возвращается код ошибки.
СОМ - сервера – это специальным образом сформированное и
зарегистрированное приложение, которое позволяет клиентам запрашивать у себя
создание реализованных в нём объектов. Сервер м.б. выполнен либо в виде
динамического подключения библиотеки, либо в виде исключительного файла.
Сервер в виде dll:
Такой сервер всегда выполняется в адресом пространстве активирующего его
приложения, за счёт этого снижается подключенные расходы на вызов метода сервера.
В тоже время данный сервер менее надёжен, поскольку его память незащищена от
ошибок в вызывающем приложении, кроме того он не может выполняться на
удалённой машине без исключительного модуля посредника, способного создать
процесс, в которой может быть загружена dll.
Сервер в виде исполняемого файла:
Данный сервер представляет собой обычный исполнительный файл Windows, в
котором реализована возможность создания СОМ объектов по запросу других
приложений.
Регистрация сервера.
Технология СОМ обеспечивает механизм автоматического поиска сервера по
запросу клиента, каждый СОМ объект имеет длинный идентификатор, CLSID(class
identificator)
Для каждого сервера прописывается информация необходимая для нахождения
и загрузки его модуля. Таким образом, клиентское приложение недолжно
беспокоиться о поиске сервера, достаточно зарегистрировать его на компьютере, и
СОМ автоматически найдёт и загрузит нужный модуль. Кроме того объект может
зарегистрировать своё дружественное имя (PROG ID) оно комбинируется из имени
сервера и объекта и содержит ссылку на CLSID.
Сервера в виде исполнительных файлов, регистрируются автоматически, при
инсталляции, либо при первом запуске. Сервера в виде dll необходимо регистрировать
с помощью (reg srv32)
Com – сервера реализуются с использованием 2 моделей памяти (потоки и
комнаты)
Windows – это многозадачная, многопоточная среда с вытекающей многозадачностью
Виды многозадачности:
1)кооперативная 2)вытесняющая
Кооперативная МЗ обеспечивает выполнение нескольких продуктов одновременно, но
при этом подход управления от одного процесса к другому полностью обеспечивается
программистом
2) вытесняющая МЗ основана на механизме вытеснения, то есть руководством
многозадачности занимается ОС, которая выделяет каждому процессу определённый
квант процессорного времени и устанавливает приоритет процесса. Попадая на ЦП,
процесс выполняется в течении отведённого ему кванта, но по истечению, сохраняется
состояние регистров процессора и процесс вытесняется, т.е. снимается с ЦП.
Применительно к СОМ вытесняющая многозадачность означает, что клиент и
сервер могут оказаться в различных процессах или потоках приложения. К серверу
может обращаться множество клиентов, причем в непредсказуемый момент времени.
Технология СОМ решает эту проблему при помощи концепции
комнат(apartments), в которых выполняются СОМ клиенты и СОМ сервера. Комнаты
могут быть однопоточными (STA) и многопоточные (MTA).
STA (single threaded apartment)
При создание STA, СОМ неявно создаёт окно, и при вызове метода СОМ объекта, в этой
комнате, посылает данному окну сообщение, при помощи функции post message.
Таким образом организуется очередь вызовов методов, каждый из которых
обрабатывается, после того как будут обработаны предшествующие вызовы.
Основные достоинства STA
- программист не заботиться о синхронизации методов (гарантируется, что до начала
выполнения текущего метода, никакой другой метод не будет вызван)
-программист не заботиться о синхронизации доступа к полям классов.
Недостатки STA вытекают из её реализации
- дополнительные, иногда излишние, затраты на синхронизацию при вызове метода
- невозможность отклика на вызов метода, пока не исполниться предыдущий
Тем не менее, STA является наиболее подходящим выбором для реализации СОМ
сервера.
МТА (multi threaded apartment)
Не реализует автоматический сервис по синхронизации и не имеет его ограничений,
внутри неё может быть создано сколько угодно потоков и объектов, причем ни один из
объектов не привязан к конкретному потоку. Это означает, что любой метод объекта
может быть вызван внутри МТА, сам автоматически ведёт пул потоков, и в нём
вызывает метод требуемого объекта. Очевидно, что СОМ сервер работающий в МТА
обладает высоким быстродействием и доступностью для клиентов, однако он
значительно сложен для реализации.
DOT NET
Net Framework (ASP NET, Библиотека классов, Common Language Runtime)
Технология DOT NET является платформой для создания и выполнения различных
приложений, реализованных на различных языках и функционирующих в рамках
единой среды исполнения. Crossплатформенная. Основной компонент: CLR. Данный
компонент располагается над сервисами ОС. Основное назначение: выполнение
приложений, соблюдение всех программных зависимостей, управление памятью,
обеспечение безопасности, интеграция с языками программирования.
Разработчик не взаимодействуют с CLR напрямую, все сервисы предоставляются
унифицированной библиотекой классов, которая располагается над CLR.
Библиотека содержит более 1000классов, для решения различных задач.
Компилируемый для CLR код, называется управляемым кодом. Помимо
непосредственного кода, программа содержит информацию о типах, ссылках
использованных в коде.
Метаданные используются средой исполнения:
1)для обнаружения классов
2) для загрузки классов
3) генерация кода для конкретной платформы
4) для обеспечения безопасности
Среда выполнения так же следит за выполнением жизни объекта. Используется, как и в
СОМ, механизм подсчета ссылок, а удаление их из памяти происходит с помощью
сборщика мусора.
MSIL (Microsoft Inter media date language)
Код компилируемый технологией DOT NET переводиться не в машинный код, для
конкретной платформы, а в код промежуточного языка, который представляет набор
инструкций, независящих от конкретного процессора и конкретной ОС, данный код
включает непосредственно выполняемый код и метаданные.
Метаданные.
Содержат описание типов, информацию о версии, ссылки на разные сборки, и другую
информацию, используемую средой выполнения. В целом метаданные представляют
собой высокоуровневый вариант библиотеки типов, метаданные используются самой
средой выполнения, загрузчиком классов, а также разные утилитами.
VB -> MSIL -> MSIL -> машинный код -> приложение
Программа на промежуточном языке остается неизменной, до тех пор, пока она не
вызывается на выполнение, в момент, когда управление передается среде исполнения,
промежуточный код преобразуется в код для конкретной платформы, эту задачу
выполняет компилятор JIT, теоретически только данный компилятор является
зависимым от конкретной платформы, однако на самом деле от платформы зависят
ряд классов и других компонентов.
Если из NET программы напрямую вызываются функции ОС, программа остается
привязанной к конкурентной платформе.
JIT не выполняет компиляцию всего кода при первом обращении к программе.
Вместо этого каждый метод компилируется, при обращении к нему. И таким образом
неиспользованный код не компилируется.
Помимо этого существует возможность откомпилировать промежуточный кол в
исполнительный файл для конкретной платформы.
Сборка представляет собой коллекцию из одного или более файлов, эти файлы
содержат код на промежуточном языке, и различные ресурсы необходимые для
функционирования данного кода, а также ссылки на другие сборки.
GAC (Global assembler cash)
Сборки, которые содержат GAC: называются статическими, и хранятся на жестком
диске компьютера. Помимо статических сборок, существуют динамические сборки.
Динамическая сборка. Создаются во время выполнения программы и на диске обычно
не сохраняются, сборки являются минимальной единицей внедрения, контроля версий,
повторного использования, и системой безопасности. Каждая сборка содержит
специальные метаданные, называется манифестов. В манифесте содержится
информация о классах, типах, ссылках на другие сборки. Сборка, используемая в более
чем 1 приложении, содержится в глобальной ассамблеи кэш.
CTS (common type system)
Определяет типы, поддерживаемые в CLR. Типы можно разделить на 2 большие группы
1)Данные со значениями 2) ссылочные данные
1) описывают значения, представляемые последовательностью байт.
Любой тип технологии DOT NET, является классом
2)3 категории: объектные, интерфейсные, указательные типы.
Download