- •Общеязыковая исполняющая среда clr (Common Language Runtime)
- •Сборки Что такое сборка?
- •Что такое приватные сборки и совместно используемые сборки?
- •Если я хочу создать совместно используемую сборку, требует ли это работы с подписями и парами ключей?
- •В чем отличие между пространством имен и именем сборки?
- •9. Типы даты/времени. Основные свойства и методы типов System.DateTime
- •Зубчатый (изрезанный) массив
- •Класс Array
- •Свойство Lenght
- •Свойство Rank
- •Метод Sort
- •Процедуры и функции - методы класса
Процедуры и функции - методы класса
Функция отличается от процедуры двумя особенностями:
всегда вычисляет некоторое значение, возвращаемое в качестве результата функции;
вызывается в выражениях.
Процедура C# имеет свои особенности:
возвращает формальный результат void, который указывает на отсутствие результата, возвращаемого при вызове процедуры;
вызов процедуры является оператором языка;
имеет входные и выходные аргументы, причем выходных аргументов - ее результатов - может быть достаточно много.
Процедурный подход подразумевает написание программного кода без использования объектов. Процедурное программирование заключается в написании кода с или без подпрограмм.
Метод представляет собой блок кода, содержащий набор инструкций. Программа инициирует выполнение операторов, вызывая метод и задавая необходимые аргументы метода. В C# все инструкции выполняются в контексте метода. Метод Main является точкой входа для каждого приложения C#, и вызывается он средой CLR при запуске программы
Методы объявляются в классе или в структуре путем указания уровня доступа, например public или private, необязательных модификаторов, например abstract илиsealed, возвращаемого значения, имени метода и списка параметров этого метода. Все вместе эти элементы образуют сигнатуру метода.
Формальный параметр - это то что передается в подпрограмму, а фактический - это то, что определено в подпрограмме.
static int a (int x)
{
int y = 0;
if (x % 2 == 0)
{
y = x / 2;
}
else
{
y = 0;
}
return y;
}
х – формальный параметр. у - фактический.
методы не возвращают значения, если указан модификатор void.
Вызов метода
объекта очень похож на обращение к
полю. После
имени объекта ставится точка, затем имя
метода и скобки. В
скобках перечисляются аргументы,
разделенные запятыми. Таким
образом, методы класса Motorcycle можно
вызывать так, как показано в следующем
примере.
class TestMotorcycle : Motorcycle
{
public override double GetTopSpeed()
{
// кстати именно ключевое слово return возвращает значение
// в метод. А если у метода модификатор void, то не имеет
// смысла писать return. Но т.к. здесь его нет, то метод вернет
// «108,4»
return 108.4;
}
static void Main()
{
// создаем объект класса
TestMotorcycle moto = new TestMotorcycle();
moto.StartEngine();
moto.AddGas(15);
moto.Drive(5, 20);
double speed = moto.GetTopSpeed();
Console.WriteLine("My top speed is {0}", speed);
}
}
16.
1) Класс — это абстрактный тип данных, описывающий характеристики и поведение объекта.
Состоит из полей, методов, свойств и иных объектов.
Описание класса:
Ключевое слово class;
Тело класса описывается в фигурных скобках;
В теле – методы, свойства, поля, вложенные классы, структуры и перечисления.
2) Уровни видимости:
public – член класса полностью виден как внутри класса так и снаружи. Доступ к такому классу не ограничен.
protected – член класса видим внутри самого класса, а также внутри классов наследников. Снаружи доступа нет
internal – член класса видим внутри класса, а также везде, в пределах сборки класса.
private – член видим только внутри самого класса. Максимальное сокрытие.
3) Интерфейс
- В отличии от классов не реализуют, а описывают контракт;
- Содержат только методы и свойства;
- Не могут порождать экземпляры;
- Создаются с помощью ключевого слова interface
Пример:
public interface IPerson
{
string GetName ( );
}
4) Конкретный класс — это класс, не имеющий суперкласса, и поэтому находится в основании дерева подклассов. Большинство объектно-ориентированных систем программирования обеспечивает библиотеку классов, на основании которых разработчик создает свои собственные. Эти библиотеки зачастую предлагают один или довольно ограниченный набор базовых классов, которые составляют основу библиотеки.
Абстрактный класс
- Базовый класс, имеющий один или более абстрактных методов;
- Не имеет реализации;
- Метод помечается ключевым словом abstract;
- Нельзя создавать экземпляров;
- Необходимо переопределить абстрактные члены в классе-наследнике.
17.
1) System.Object:
- Базовый класс для всех объектов C#;
- К нему неявно преобразовывается любой тип
- Используется, когда тип заранее не известен
Sysгtem.Object oпъpeдьeляeт два статических члена:
Object.Eqals ( )
Object.ReferenceEquals ( )
обеспечивающих проверку неравенства значений и ссылок соответственно.
2) Конструктор – метод класса, отвечающий за инициализацию объекта, совпадает с именем класса.
Деструктор – метод, класса отвечающий за освобождение использования объекта, совпадает с именем класса с точностью до тильды в начале, код выполняется в сборщике мусора.
После вызова destructora конкретного класса, не явно вызываются все деструкторы базовых классов, а также метод Finalize определяемый в System.Object.
Класс может иметь несколько конструкторов и деструкторов.
3) Если не предоставить конструктор для объекта, C# создаст конструктор по умолчанию, который создаст экземпляр объекта и задаст переменным-членам значения по умолчанию.
4) В первую очередь при создании экземпляра класса будет вызван конструктор класса предка, а поскольку базовым классом для всех объектов является класс System.Object, то гарантируется что конструктор System.Object.Object будет вызван первым.
Для создания экземпляра класса используется new.
Для изменения порядка по умолчанию вызова конструктора определены инициализаторы конструкторов – base(вызов конструктора базового класса, отличного от конструктора по умолчанию), this.
18.
Определение метода задает имена и типы любых необходимых параметров. Когда код вызова вызывает метод, он предоставляет конкретные значения, называемые аргументами, для каждого параметра. Аргументы должны быть совместимыми с типом параметра, но имя параметра (если таковое имеется), используемое в коде вызова, не должно быть таким же, как параметр с именем, определенным в методе.
Модификаторы доступа
public – член класса полностью виден как внутри класса так и снаружи. Доступ к такому классу не ограничен.
protected – член класса видим внутри самого класса, а также внутри классов наследников. Снаружи доступа нет
internal – член класса видим внутри класса, а также везде, в пределах сборки класса.
private – член видим только внутри самого класса. Максимальное сокрытие.
Статические поля и методы класса доступны без создания экземпляра класса, и едины для всех экземпляров. Динамические доступны только после создания объекта и уникальны для каждого объекта.
Наследование позволяет создавать новые классы, которые повторно используют, расширяют и изменяют поведение, определенное в других классах. Класс, члены которого наследуются, называется базовым классом, а класс, который наследует эти члены, называется производным классом. Производный класс может иметь только один непосредственный базовый класс.
Ключевое слово virtual используется для изменения объявлений методов, свойств, индексаторов и событий и разрешения их переопределения в производном классе.Например, этот метод может быть переопределен любым производным классом:
public virtual double Area()
{
return x * y;
}
Реализацию виртуального члена можно изменить путем переопределения члена в производном классе.
Когда базовый класс объявляет метод как виртуальный, производный класс может переопределить метод с помощью своей собственной реализации.
Производный класс может скрывать члены базового класса путем объявления членов с тем же именем и сигнатурой. Модификатор new может использоваться, чтобы явно указать, что член не предназначен, чтобы быть переопределением базового члена. Использование new не является обязательным, но при отсутствии использования new будет сгенерировано предупреждение компилятора.
19.
1) Данные-члены - это те члены, которые содержат данные классы – поля, константы, события. Данные члены могут быть статическими (static). Член класса является членом экземпляра, если только он не объявлен явно как static.
2) Поле - переменная, объявленная внутри класса.
Задача: Сохранять состояние в текущий момент времени;
Определяется аналогично обычной переменной внутри поля;
Модификаторы: new; public, protected, private, internal; static; readonly.
3) Свойства – возможность сокрытия особенностей реализации класса.
- Основа – поле;
- «выглядит» как поле, ведет себя как метод;
5) Авто реализуемые свойства – используются для сокращения кода:
public int AutoProperty {set; get}
