Синтаксис конструкций c#
Конструкции:
элементарные
составные
прогр-е конст. упр-я switch и case
усл-е
повт. и циклов
перехода break, continue, return, goto
+ конст. управления исключениями (throw, try-catch, finally)
спец. констр. (lock – блок. объектов, cheked/uncheked, fixed)
Преимущества С#:
Объектная ориентированность
Компонентно-ориентированный
Безопасность
Унифицированная система типизации
Событийное ориентирование
Родной язык для создания приложений
Объединений лучших идей
Недостатки С#:
Сложность синтаксиса
Небольшое количество новых идей
Неполностью объясненный язык
Невысокая производительность
не кросс- платформенный язык
Документирование программ C#
Понятие семантики
Общие сведения:
Семантика-интерпретация абстрактного синтаксиса, выраженного в терминах той или иной математической модели.
Основные подходы:
Ориентированы на компиляцию (множество преобразований)
Ориентированы на интерпретацию (множество описаний)
Виды семантики:
Операционные – смысл конструкций языка в терминах переходов абстр. машины из одного состояния в другое
Препозиционные - смысл конструкций языка в терминах множества формул описывающих состояние объектов программы
Денотационные - … в терминах абстракции функций на состояниях программы
Теория вычислений Д.Скотта. Семантика C#
1969 – Д. Скотт создал для формализации на основе доменов Домен - аналог множества, моделирующий самоприменимые функции и множества.
Последовательность построения теории:
Перечисление стандартных доменов
Определение конечных доменов с явно перечисляемыми элементами
Определение конструкторов
Конструкторы доменов:
функциональное пространство
Декартово произведение
Последовательность
Дизьюктивная сумма
Синтаксис подмножества языка С#:
формализируем синтаксис
Порядок построения семантики вычислений:
Определение синтаксиса доменов (ide, Exp, com)
Определение вычислительной модели
Определение семантических функций
Определение семантических предложений
Понятие класса и объекта
класс - общая сущность, которая определяет как совокупность объектов
объект – представляет сущность мира
свойство – пропозициональная функция определённая на произвольном типе данных
метод – операция определённая над объектами некоторого класса
Основные работы в сфере моделирования ооп:
1924 – теория простых функций
1934 – лямбда – исчисление
80е Скотт и Фурман – аппарат определённых дискрепций
90е – схема двухуровневого моделирования объектов
Концептуализация как модель объекта:
модель основывается на типизированном альфа- счислении, семантика которого моделируется при помощи полных и непрерывных решёток Скотта.
Вводятся аппликативные структуры с приписыванием типов
Для формализации определений используются определённые дескрипции Скотта-Фурмана вида: I x Ф, что означает «тот единственный x для которого Ф истинно»
произвольный объект моделируется тройкой <концепт, индивид, состояние>
Классы и его элементы в C#
Класс в С#, как и в других языках программирования, — это пользовательский тип данных (user defined type, UDT), который состоит из данных (часто называемых атрибутами или свойствами) и функций для выполнения с этими данными
различных действий (эти функции обычно называются методами). Классы позволяют группировать в единое целое данные и функциональность, моделируя объекты реального мира. Именно это свойство классов и обеспечивает одно из наиболее
важных преимуществ объектно-ориентированных языков программирования.
Для классов С# можно определить любое количество конструкторов. Эти специальные методы классов позволяют создавать объекты данного класса, настраивая при этом их исходное состояние нужным вам образом. Любой класс С# автоматически снабжается конструктором по умолчанию (не принимающим никаких параметров). Этот конструктор в С# (в отличие от C++) при создании объекта автоматически присвоит всем переменным-членам класса безопасные значения по умолчанию. Кроме того, вы можете, как переопределить конструктор по умолчанию, так и создать такое количество пользовательских конструкторов (принимающих параметры), сколько вам необходимо.
Изменяемые элементы поля:
изменяемые элементы (поля) содержат данные для сущности класса
могут быть произвольного типа
могут иметь заданную видимость
при объявлении можно задавать значение
Поля- const:
являются элементами класса как и изм. поля
предшествует спец. слово const
при декларации требуется задать значение
нельзя изменять во время исполнения
Поля только на чтение (readonly):
значение задают или при декларировании или в конструкторе и дальше его уже нельзя изменить
предшествует спец слово readonly
на практике runtime константа
Методы – процедура или функция находящаяся в описании класса:
в C# нет глоб. функции
могут описываться как элементы типа (класса или структуры)
описывают операции для типа, в котором описаны
могут принимать параметры и возвращать значение
имеют несколько видов передаваемых параметров
могут иметь заданную видимость
могут быть статичными (не связанными с инстанцией типа)
имеют синтаксис близкий к С++ и Java
Конструкторы:
используются для создания объектов(сущности, классы)
служат для начального установления состояния полей объекта
имеют синтаксис как в С++ и Java
любой класс может иметь 1 или несколько конструкторов
для классов без описанного конструктора C# - компилятор автоматически создаёт публичный конструктор по умолчанию, без параметров
все неинициализированные в конструкторе поля автоматически обнуляются
инициализируемые поля, описанные при объявлении, поставятся вкомпилятором в начало конструктора