Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРИС_шпоры.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
3.46 Mб
Скачать

7. C#. Объявление класса.

Объявление класса в языке C# создает новый ссылочный тип, дающий возможность программисту моделировать объекты (элементы данные) и которым присуще определённое поведение (методы).

доступ class имя_класса

{

// члены класса

}

Пример:

public class Complex

{ ... }

Каждый класс в C# автоматически снабжается типовым конструктором, который вы можете при необходимости переопределить. Этот типовой конструктор используется по умолчанию и гарантирует что все члены-данные по умолчанию получат типовые входные значения. Конструктор имеет имя, соответствующее имени класса и он никогда не возвращает значения.

Поле – член типа, которые представляет данные и хранит ссылку на ссылочный тип или экземпляр размерного типа.

доступ модификатор тип имя = значение;

public static int MaxSize = 10;

private int x = 7;

  • static – поле связано с типом, а не с каким-либо конкретным объектом

  • readonly – запись в поле разрешается только из кода конструктора

Определение метода

доступ модификатор тип_возврата имя_метода(параметры)

{

тело_метода

}

8. Java. Объявление класса.

Класс — это шаблон для создания объекта. Класс определяет структуру объекта и его методы, образующие функциональный интерфейс. В процессе выполнения Java-программы система использует определения классов для создания представителей классов. Представители являются реальными объектами. Термины «представитель», «экземпляр» и «объект» взаимозаменяемы. Ниже приведена общая форма определения класса.

class имя_класса extends имя_суперкласса { type переменная1_объекта:

type переменная2_объекта:

type переменнаяN_объекта:

type имяметода1(список_параметров) { тело метода;

}

type имяметода2(список_параметров) { тело метода;

}

type имя методаМ(список_параметров) { тело метода;

}

}

Ключевое слово extends указывает на то, что «имя_класса» — это подкласс класса «имя_суперкласса». Во главе классовой иерархии Java стоит единственный ее встроенный класс — Object. Если вы хотите создать подкласс непосредственно этого класса, ключевое слово extends и следующее за ним имя суперкласса можно опустить — транслятор включит их в ваше определение автоматически. Примером может служить класс Point.

class Point {

}

9. C#. Делегаты.

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

Экземпляры этого типа являются оболочками методов других типов.

 обеспечивают безопасность типов

 поддерживают вызов статических и экземплярных методов

цепочка делегатов — набор делегатов, который позволяет вызвать все методы,

представленные делегатами набора

Начнем с определения термина делегат (delegate). Делегат — это объект, который

может ссылаться на метод. Таким образом, создавая делегат, вы по сути создаете объект, который может содержать ссылку на метод. Более того, этот метод можно вызвать

посредством соответствующей ссылки. Таким образом, делегат может вызывать метод,

на который он ссылается.

На первый взгляд идея ссылки на метод может показаться странной, поскольку

обычно мы имеем дело с ссылками, которые указывают на объекты, но в действительности здесь разница небольшая. Как разъяснялось выше, ссылка по существу

представляет собой адрес памяти. Следовательно, ссылка на объект — это адрес объекта. Даже несмотря на то что метод не является объектом, он тоже имеет отношение к физической области памяти, а адрес его точки входа — это адрес, к которому происходит обращение при вызове метода. Этот адрес можно присвоить делегату. Если уж делегат ссылается на метод, этот метод можно вызвать посредством данного делегата.

Важно понимать, что во время выполнения программы один и тот же делегат можно использовать для вызова различных методов, просто заменив метод, на который ссылается этот делегат. Таким образом, метод, который будет вызван делегатом, определяется не в период компиляции программы, а во время ее работы. В этом и состоит достоинство делегата.

Делегат объявляется с помощью ключевого слова delegate. Общая форма объявления делегата имеет следующий вид:

delegate тип_возврата имя(список_параметров);

Здесь элемент тип_возврата представляет собой тип значений, возвращаемых методами, которые этот делегат будет вызывать. Имя делегата указывается элементом имя. Параметры, принимаемые методами, которые вызываются посредством делегата, задаются с помощью элемента список_параметров. Делегат может вызывать только такие методы, у которых тип возвращаемого значения и список параметров (т.е. его сигнатура) совпадают с соответствующими элементами объявления делегата.

Делегат может вызывать либо метод экземпляра класса, связанный с объектом, или

статический метод, связанный с классом.

Примеры:

internal delegate void FooCallback(int value)

public delegate int BarCallback(int [] anArray)

Многоадресатная передача

Одна из самых интересных возможностей делегата — поддержка многоадресатной

передачи (multicasting). Выражаясь простым языком, Многоадресатная передача — это

способность создавать список вызовов (или цепочку вызовов) методов, которые должны автоматически вызываться при вызове делегата. Такую цепочку создать нетрудно.

Достаточно создать экземпляр делегата, а затем для добавления методов в эту цепочку

использовать оператор "+=". Для удаления метода из цепочки используется оператор

" - = " . (Можно также для добавления и удаления методов использовать в отдельности

операторы "+", " - " и "=", но чаще применяются составные операторы "+=" и "-=".)

Делегат с многоадресатной передачей имеет одно ограничение: он должен возвращать

тип void.

Назначение делегатов

Несмотря на то что предыдущие примеры программ продемонстрировали, "как"

работают делегаты, они не содержали ответа на вопрос "зачем это нужно?". Так вот,

делегаты используются по двум основным причинам.

Во-первых, делегаты обеспечивают поддержку функционирования событий.

Во-вторых, делегаты позволяют во время выполнения программы выполнить метод,

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

компоненты.

Microsoft .NET Framework поддерживает механизм функций обратного вызова при

помощи делегатов (delegate). Делегаты обеспечивают безопасность типов при выполнении

метода обратного вызова (способствуя решению одной из важнейших задач CLR).

Делегаты также поддерживают последовательный вызов нескольких методов и позволяют вызывать как статические, так и экземплярные методы.