Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекция 11. События – реакция программы на действия пользователя или другой программы или внешней среды

Пространство имен

Лекция 10.

События (event)

События – реакция программы на действия пользователя или другой программы или внешней среды.

События являются методами, т.е. у событий могут быть аргументы и возвращаемые значения. Метод, реагирующий на события, называется обработчиком события.

class MyButtonClass: Form

{

private Button mrButton;

public MyButtonClass()

{

mrButton = new Button();

mrButton.Click += new System.EventHandler(MyButtonClickEventHandler);

this.Controls.Add(mrButton)

}

static void Main()

{

Application.Run(new MyButtonClass());

}

 

void MyButtonClickEventHandler(object sender, EventArgs e)

{

MrButton.Text = "Push";

}

}

 

Обработчик нажатия кнопки называется MyButtonClickEventHandler – метод должен запускаться каждый раз, когда происходит нажатие на кнопку. Сейчас необходимо связать событие Click (нажатие на кнопку) с методом обработчика событий.

Для создания собственных событий используется специальный класс – delegate.

Имена многих базовых классов и имена классов из используемых библиотек весьма обширны. Когда используется многоуровневое наследование приходится описывать всю цепочку имен для использования какого-либо класса. Для этого придумана организация файлов с помощью пространства имен.

Пространство имен содержит классы одной тематики.

Пространства имен могут обобщаться в еще более крупные пространства имен.


Множественное наследование и коллизия имен

При множественном наследовании рассматриваются две основные проблемы:

1. Коллизия имен

2. Наследование от общего предка

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

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

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

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

b. Переименование метода интерфейса в самом классе наследника – для этого реализуются методы различных интерфейсов как закрытые, а затем открываются с переименованием. Пример:
public interface IProps
{
void Prop1(string s);
void Prop2(string name, int val);
void Prop3();
}
public interface IPropsOne
{
void Prop1(string s);
void Prop2(int val);
void Prop3();
}
public class ClainTwo:IProps, IPropsOne
{
public void Prop1(string s)
{
Console.WriteLine(s);
}
public void Prop2(string s, int val)
{
Console.WriteLine(s+” ”+x);
}
public void Prop2(int x)
{
Console.WriteLine(x);
}
void IProps.Prop3()
{
Console.WriteLine(“Свойство 3 интерфейса 1”);
}
void IPropsOne.Prop3()
{
Console.WriteLine(“Свойство 3 интерфейса 2”);
}
public void Prop3From1()
{
((IProps)this).Prop3();
}
public void Prop3From2()
{
((IPropsOne)this).Prop3()
}
}

<== предыдущая лекция | следующая лекция ==>
Лекция 9. Коллекции – массив, с некоторыми дополнительными возможностями | Тема 1.1. Социальная психология как наука: предмет и отрасли
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 452; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.