
- •Лекции по курсу "Технология программирования" (1-й семестр) Оглавление
- •Технология .Net Предыдущее состояние дел.
- •Главные компоненты платформы .Net (clr, cts и cls)
- •Общеязыковая среда выполнения (clr)
- •О бщая система типов и общеязыковые спецификации (cts и cls)
- •Библиотека базовых классов
- •Роль языка с#
- •Компоновочные блоки
- •Роль метаданных типов .Net
- •Роль манифеста компоновочного блока
- •Общая система типов.
- •Объектно-ориентированное программирование
- •Главные элементы объектно-ориентированного подхода
- •Дополнительные элементы ооп
- •Принципы объектно-ориентированного программирования.
- •Классы Инкапсуляция
- •Объект (экземпляр класса).
- •Ключевое слово this
- •Отношения между объектами.
- •Основные отличительные особенности класса
- •Спецификаторы доступа
- •Состав класса
- •Поля класса
- •Доступ к полям
- •Статические и экземплярные переменные
- •Методы (функции-члены класса)
- •Переменное число параметров метода
- •Статические методы
- •Конструкторы
- •Закрытые конструкторы или классы без экземпляров
- •Статические конструкторы.
- •Деструкторы
- •Абстрактные методы и классы.
- •Свойства
- •Индексаторы
- •Статические классы
- •Частичные классы
- •Рекомендации по программированию
- •Наследование Понятие наследования в программировании
- •Типы наследования
- •Наследование реализации
- •Определение наследующих классов
- •Уровень доступа protected и internal
- •Ссылка на объект базового класса
- •Протоклассы
- •Предотвращение наследования с помощью ключевого слова sealed.
- •Отношения между классами
- •Абстрактные классы.
- •Класс object
- •Функциональные замыкания
- •Разработка функциональных замыканий с помощью наследования
- •Разработка функциональных замыканий с помощью экземпляров класса
- •Заключение.
- •Полиморфизм
- •Полиморфизм наследующих классов.
- •Переопределение методов родительского класса. Раннее связывание.
- •Виртуальные методы и их переопределение.
- •Как вызывают виртуальные методы
- •Виртуальные функции и принцип полиморфизма
- •Перегрузка.
- •Перегруженные конструкторы
- •Рекомендации программисту.
О бщая система типов и общеязыковые спецификации (cts и cls)
Другим строительным блоком платформы .NET является CTS (общая система типов). Спецификации CTS полностью описывает все возможные типы данных и программные конструкции, поддерживаемые средой выполнения, указывают, как эти элементы могут взаимодействовать между собой и как они представляются в формате метаданных .NET.
CTS это общая система типов, представляющая собой формальное описание того, как должны определяться типы, предназначенные для использования в общеязыковой среде CLR. Для программиста, использующего технологию .NET, в основном, важно знать, как работать с пятью типами, определяемыми спецификациями CTS для выбранного языка программирования. Такими типами являются классы, структуры, интерфейсы, перечисления и делегаты. Кроме перечисленных типов, CTS определяют четкий набор базовых типов данных для обозначения целых и дробных чисел, строковых и логических переменных.
Следует заметить, что конкретный язык, совместимый с .NET, может и не поддерживать абсолютно все возможности, определенные CTS. В связи с этим используются связанные спецификации CLS (общеязыковые спецификации), которые определяют подмножество общих типов и программных конструкций, понятных всем языкам программирования, совместимым с .NET. Поэтому, если создаваемые вами .NET-типы опираются только на возможности, соответствующие CLS, то можно быть уверенным, что использовать их сможет любой совместимый с .NET язык. Если же использовать типы данных и программные конструкции, выходящие за пределы CLS, то нельзя будет гарантировать, что с вашей библиотекой программного .NET-кода сможет взаимодействовать любой другой язык программирования .NET.
Библиотека базовых классов
В добавление к спецификации CLR и CTS\CLS, платформа .NET предлагает библиотеку базовых классов (FCL), которая доступна всем языкам программирования .NET. Эта библиотека не только инкапсулирует различные примитивы, такие как потоки, файловый вывод, визуализация графики и взаимодействие с различными внешними устройствами, но и обеспечивает поддержку целого ряда сервисов, необходимых для большинства современных приложений.
Например, библиотеки базовых классов определяют типы, упрощающие доступ к базам данных, работу с XML, поддержку программной безопасности и создание Web-приложений. Схема высокоуровневых связей между CLR, CTS, CLS и библиотекой базовых классов показана на рис.1.2.
Таким
образом CLR, CTS
и CLS – это три ключевых и
взаимосвязанных составляющих, которые
обеспечивают преимущества платформы
.NET.
Роль языка с#
Поскольку принципы .NET радикально отличаются от предшествующих технологий, то Microsoft специально разработала новый язык программирования С# для этой платформы. Язык С# является языком программирования, по синтаксису очень похожим на Java. С#, как и Java, основан на синтаксических конструкциях С++.
Многие синтаксические конструкции С# построены с учетом решений, принятых в Visual Basic 6.0 и С++. Например, формальные типы свойств, возможность объявления методов с переменным числом аргументов (через массивы параметров). Подобно С++, в С# позволяется перегрузка операций, создание структур, перечней и функций обратного вызова (посредством делегатов).
Благодаря тому, что C# является гибридом множества языков, то он является продуктом, который синтаксически так же "чист", как Java, почти так же прост, как VB6, и обладает почти такой же мощью и гибкостью, как С++. По сути, язык С# предлагает возможности, многие из которых присущи и всем другим языкам программирования, обеспечивающим поддержку .NET.
Не требует никаких указателей! Программы на С# не требуют прямого обращения к указателям, хотя и имеется возможность получить к ним доступ на более низком уровне).
Автоматическое управление памятью через сборку мусора. Поэтому в С# не поддерживается ключевое слово delete.
Формальные синтаксические конструкции для перечней, структур и свойств классов.
Аналогичная С++ перегрузка операций для пользовательских типов, но без лишней сложности.
Имеется возможность строить общие типы и общие члены с использованием синтаксиса, похожего на шаблоны С++.
Полная поддержка техники программирования, основанной на использовании интерфейсов.
Полная поддержка технологии аспектно-ориентированного программирования (АОП) через атрибуты. Это позволяет назначать характеристики типам и их членам, чтобы уточнить их поведение.
Самым важным для правильного понимания языка С#, поставляемого Microsoft в связке с платформой .NET, является то, что получаемый с помощью C# текст программы может выполняться только в среде выполнения .NET. Официальный термин, который используется для описания программы, предназначенной для среды выполнения .NET – управляемый программный код. Бинарный объект, содержащий такой управляемый программный код, называется компоновочным блоком. С другой стороны, программный код, который не может непосредственно управляться средой выполнения .NET, называется неуправляемым программным кодом.