
- •Лекции по курсу "Технология программирования" (1-й семестр) Оглавление
- •Технология .Net Предыдущее состояние дел.
- •Главные компоненты платформы .Net (clr, cts и cls)
- •Общеязыковая среда выполнения (clr)
- •О бщая система типов и общеязыковые спецификации (cts и cls)
- •Библиотека базовых классов
- •Роль языка с#
- •Компоновочные блоки
- •Роль метаданных типов .Net
- •Роль манифеста компоновочного блока
- •Общая система типов.
- •Объектно-ориентированное программирование
- •Главные элементы объектно-ориентированного подхода
- •Дополнительные элементы ооп
- •Принципы объектно-ориентированного программирования.
- •Классы Инкапсуляция
- •Объект (экземпляр класса).
- •Ключевое слово this
- •Отношения между объектами.
- •Основные отличительные особенности класса
- •Спецификаторы доступа
- •Состав класса
- •Поля класса
- •Доступ к полям
- •Статические и экземплярные переменные
- •Методы (функции-члены класса)
- •Переменное число параметров метода
- •Статические методы
- •Конструкторы
- •Закрытые конструкторы или классы без экземпляров
- •Статические конструкторы.
- •Деструкторы
- •Абстрактные методы и классы.
- •Свойства
- •Индексаторы
- •Статические классы
- •Частичные классы
- •Рекомендации по программированию
- •Наследование Понятие наследования в программировании
- •Типы наследования
- •Наследование реализации
- •Определение наследующих классов
- •Уровень доступа protected и internal
- •Ссылка на объект базового класса
- •Протоклассы
- •Предотвращение наследования с помощью ключевого слова sealed.
- •Отношения между классами
- •Абстрактные классы.
- •Класс object
- •Функциональные замыкания
- •Разработка функциональных замыканий с помощью наследования
- •Разработка функциональных замыканий с помощью экземпляров класса
- •Заключение.
- •Полиморфизм
- •Полиморфизм наследующих классов.
- •Переопределение методов родительского класса. Раннее связывание.
- •Виртуальные методы и их переопределение.
- •Как вызывают виртуальные методы
- •Виртуальные функции и принцип полиморфизма
- •Перегрузка.
- •Перегруженные конструкторы
- •Рекомендации программисту.
Роль метаданных типов .Net
Кроме IL-инструкций, компоновочный блок .NET содержит исчерпывающие и точные метаданные, описывающие все типы переменных, которые используются в бинарном объекте (перечисления, структуры, классы и т.д.) и все члены каждого типа (свойства, методы, события и т.д.). Задача создания метаданных возлагается на компилятор, а не на программиста. Поскольку метаданные .NET так подробны и точны, то компоновочные блоки оказываются объектами, способными полностью описать самих себя. Причем, настолько полно, что для бинарных .NET-объектов не возникает необходимости регистрироваться в реестре системы.
Роль манифеста компоновочного блока
Компоновочный блок содержит метаданные, описывающие сам компоновочный блок. Вот эти данные и называют манифестом. В манифесте документируются все внешние компоновочные блоки, которые требуются текущему компоновочному блоку для его корректного функционирования, указан номер версии компоновочного блока, информация об авторских правах и т.д. Также как и метаданные типов, генерирование манифеста компоновочного блока также возлагается на компилятор.
Общая система типов.
Компоновочный блок может содержать любое количество четко определенных типов. CTS это общая система типов, представляющая собой формальное описание того, как должны определяться типы, предназначенные для использования в общеязыковой среде CLR. Для программиста, использующего технологию .NET, в основном, важно знать, как работать с пятью типами, определяемыми спецификациями CTS для выбранного языка программирования. Такими типами являются классы, структуры, интерфейсы, перечисления и делегаты. Кроме перечисленных типов, CTS определяют четкий набор базовых типов данных для обозначения целых и дробных чисел, строковых и логических переменных.
Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) и порожденное им объектно-ориентированное проектирование – это совершенно новый подход к построению сложных программ и систем. До появления ООП господствовало процедурное программирование. Тогда основой программ были функции и процедуры, т.е. действия. Разработчик определял, какие действия, какие функции нужны ему для решения поставленной задачи, реализовывал эти функции и объединял их в программу. При этом программа обычно имела достаточно четкий алгоритм работы в виде последовательности операций, начинающейся в каком-то месте и заканчивающейся в одном из множества других мест.
В объектно-ориентированном программировании и проектировании главной отправной точкой является не функция не действие, а объект. Такой подход представляется более естественным, поскольку в реальном мире мы имеем дело с объектами (людьми, предметами, техническими устройствами), взаимодействующими друг с другом. Даже взаимодействие пользователя с компьютерной программой – это тоже взаимодействие двух объектов, которые обмениваются друг с другом определенными сообщениями.
Прикладная программа (приложение), построенная по принципам ориентированным на объекты – это уже не последовательность каких-то операторов, работающих по жесткому алгоритму. Объектно-ориентированная программа - это уже совокупность объектов и способов их взаимодействия. В основе ООП используется понятие о классах.
Таким образом, объектно-ориентированное программирование - это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса, а классы образуют иерархию на принципах наследуемости.