Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Часть 2. События в языке Java




К лабораторной работе 2 по ООП

Часть 1. Делегаты и события в языке С#

Делегаты

using System;

 

// Объявить два делегата

delegate int DelRet (int x, int y);

delegate void DelRef (int x, int y, ref int z);

 

class TestDel

{

static void Main ()

{

TestDel tD= new TestDel(); // Создать объект типа TestDel

 

// Создать объект делегата DelRet с функцией SumRet

DelRet tRet= new DelRet (tD.SumRet);

// Выполнить объект делегата tRet

Console.WriteLine ("4+5= " + tRet(4, 5));

//DelRet tRet1= new DelRet(tD.SumRef); // Ошибка

 

// Создать объект делегата DelRef с функцией SumRef

DelRef tRef= new DelRef (tD.SumRef);

// Выполнить объект делегата tRet

int z=0;

tRef (10, 20, ref z);

Console.WriteLine ("10+20= " + z);

 

// Выполнить функцию UseDel с делегатами DelRet и DelRef

Console.WriteLine ("(11+12)+(100+200)= " + tD.UseDel(tRet, tRef));

}

 

int SumRet (int a, int b){return a+b;}

 

void SumRef (int a, int b, ref int c){c= a+b;}

 

int UseDel (DelRet dR, DelRef dF)

{

int tmp= 0;

dF (11,22, ref tmp);

return tmp+dR (100,200);

}

}

 

 

События

1. Событие и обработчик в одном классе (источник является и приёмником)

using System;

 

// Делегат события

delegate void DelEv (int x, string s);

 

class TestEv

{

public event DelEv ev; // Ссылка на объект события

 

static void Main ()

{

TestEv tE= new TestEv (); //Создать объект типа TestEv

// Подписать обработчик на событие ev

tE.ev +=new DelEv (tE.Handler);

// Генерировать событие

tE.ev (4,"four");

}

 

// Обработчик события

void Handler (int a, string b)

{

Console.WriteLine ("a= " + a + " b= "+ b);

}

}

 

2. Событие и обработчик в разных классах (источник отделён от приёмника)

 

 

using System;

 

// Делегат события

delegate void DelEv (int x, string s);

 

class Source // Класс источника события

{

public event DelEv ev; // Ссылка на объект события

 

// Функция генерирования события

public void Fire (int x, string s)

{

if(ev!= null) ev (x, s);

}

}

 

class Receiver // Класс приёмника события

{

// Обработчик события

public void Handler (int a, string b)

{

Console.WriteLine ("a= " + a + " b= "+ b);

}

}

 

class TestEv

{

static void Main ()

{

Source s= new Source (); // Создать источник события

Receiver r= new Receiver (); // Создать приёмник события

// Подписать обработчик на событие ev

s.ev +=new DelEv (r.Handler);

// Генерировать событие

s.Fire (5,"five");

}

}

 

Событие с объектом данных

 

 

using System;

 

// Делегат события

//delegate void DelEv (int x, string s);

//delegate void DelEv (object s, EventArgs args);

 

 

class OurEventArgs: EventArgs // Класс данных события

{

private int x;

private String s;

 

public OurEventArgs (int X, String S)

{x= X; s= S;}

 

public int X {get{return x;}}

public String S{get{return s;}}

}

 

class Source

{

public event EventHandler ev; // Ссылка на объект события

 

// Функция генерирования события

public void Fire (int x, string s)

{

// Создать объект данных события

OurEventArgs oE= new OurEventArgs (x, s);

// Сгенерировать событие

if(ev!= null) ev (this, oE);

}

}

 

class Receiver

{

// Обработчик события

public void Handler (object sender, EventArgs oE)

{

// Получить объект данных события

OurEventArgs oea= (OurEventArgs)oE;

Console.WriteLine ("a= " + oea.X + " b= "+ oea.S);

}

}

 

class TestEv

{

static void Main ()

{

Source s= new Source (); // Создать источник события

Receiver r= new Receiver (); // Создать приёмник события

// Подписать обработчик на событие ev

s.ev +=new EventHandler (r.Handler);

// Генерировать событие

s.Fire (5,"five");

}

}

 

Задание

1) Выполнить приведённую программу с делегатами. Модифицировать её, дополнив классом со статической и обычной функцией и использовав делегаты с этими функциями.

 

2) Выполнить приведённые программы с событиями. Модифицировать их в соответствии с указаниями преподавателя.

 

3) Создать программу с одним источником и массивом приёмников. Обработчики приёмников должны выдать на консоль дополнительно к данным события также номер объекта источника и номер объекта приёмника.

 

4) Создать программу с массивом источников и одним приёмником. Обработчик приёмника должен выдать на консоль дополнительно к данным события также номер объекта источника и номер объекта приёмника.

 

5) Создать программу с массивом источников и массивом приёмников. Обработчики приёмников должны выдать на консоль дополнительно к данным события также номер объекта источника и номер объекта приёмника.

 

6) Создать программу, состоящую из источника и цепочки приёмников-источников, обеспечивающих передачу сообщений в соответствии с алгоритмом, указанным преподавателем.

 

Часть 2. События в языке Java





Поделиться с друзьями:


Дата добавления: 2016-09-03; Мы поможем в написании ваших работ!; просмотров: 221 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия. © Иоганн Вольфганг Гете
==> читать все изречения...

2286 - | 2070 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.