Классы семейства геометрических фигур

Написано admin в 20 Июнь 2008 – 21:59 -

Классы семейства геометрических фигур

Приведем теперь программные коды классов, являющихся потомками класса Figure.

Класс Ellipse

Вот программный код этого класса:

using System;

using System.Drawing;

namespace Shapes Read more »


Tags: , , , , , , , , , , , , , ,
Находится в Учебник | No Comments »

Абстрактный класс Figure

Написано admin в 20 Июнь 2008 – 21:58 -

Абстрактный класс Figure

Приведем код класса:

using System;

using System.Drawing;

namespace Shapes Read more »


Tags: , , , , , , , , , , , , ,
Находится в Учебник | No Comments »

Класс sender. Как объявляются события?

Написано admin в 20 Июнь 2008 – 21:42 -

Класс sender. Как объявляются события?

При проектировании класса с событиями, возможно, самое трудное – содержательная сторона дела. Какими событиями должен обладать класс, в каких методах и в какой момент зажигать то или иное событие?

Содержательную сторону будем пояснять на содержательных примерах. А сейчас рассмотрим технический вопрос: как объявляются события средствами языка С#? Прежде всего, уточним, что такое событие с программистской точки зрения. Начнем не с самого события, а с его обработчика. Обработчик события – это обычная процедура с аргументами. Понятно, что сообщение, посылаемое при зажигании события, является аналогом вызова процедуры. Поскольку сигнатура посылаемого сообщения должна соответствовать сигнатуре принимаемого сообщения, то объявление события синтаксически должно задавать сигнатуру процедуры. Read more »


Tags: , , , , , , , , ,
Находится в Учебник | No Comments »

Как определяется функциональный тип и как появляются его экземпляры

Написано admin в 20 Июнь 2008 – 21:37 -

Как определяется функциональный тип и как появляются его экземпляры

Слово делегат (delegate) используется в C# для обозначения хорошо известного понятия. Делегат задает определение функционального типа (класса) данных. Экземплярами класса являются функции. Описание делегата в языке C# представляет собой описание еще одного частного случая класса. Каждый делегат описывает множество функций с заданной сигнатурой. Каждая функция (метод), сигнатура которого совпадает с сигнатурой делегата, может рассматриваться как экземпляр класса, заданного делегатом. Синтаксис объявления делегата имеет следующий вид:

[<спецификатор доступа>] delegate <тип результата > <имя класса> (<список аргументов>);

Этим объявлением класса задается функциональный тип – множество функций с заданной сигнатурой, у которых аргументы определяются списком, заданным в объявлении делегата, и тип возвращаемого значения определяется типом результата делегата.

Спецификатор доступа может быть, как обычно, опущен. Где следует размещать объявление делегата? Как и у всякого класса, есть две возможности:

  • непосредственно в пространстве имен, наряду с объявлениями других классов, структур, интерфейсов;
  • внутри другого класса, наряду с объявлениями методов и свойств. Такое объявление рассматривается как объявление вложенного класса. Read more »

Tags: , , , , , , , , , ,
Находится в Учебник | No Comments »

Семантика присваивания

Написано admin в 20 Июнь 2008 – 20:49 -

Семантика присваивания

Рассмотрим присваивание:

x = e.

Чтобы присваивание было допустимым, типы переменной x и выражения e должны быть согласованными. Пусть сущность x согласно объявлению принадлежит классу T. Будем говорить, что тип T основан на классе T и является базовым типом x, так что базовый тип определяется классом объявления. Пусть теперь в рассматриваемом нами присваивании выражение e связано с объектом типа T1.

Определение: тип T1 согласован по присваиванию с базовым типом T переменной x, если класс T1 является потомком класса T.

Присваивание допустимо, если и только если имеет место согласование типов. Так как все классы в языке C# – встроенные и определенные пользователем – по определению являются потомками класса Object, то отсюда и следует наш частный случай – переменным класса Object можно присваивать выражения любого типа. Read more »


Tags: , , , , , , , , , , ,
Находится в Учебник | No Comments »