Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Bolkgijk
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 41
1

Создайте класс пользователя социальной сети с минимальным набором данных (ФИО, дата рождения)

03.10.2014, 09:10. Просмотров 543. Ответов 5
Метки нет (Все метки)

Задание.
1. Социальная сеть. Создайте класс пользователя социальной сети с минимальным набором данных (ФИО, дата рождения). Каждый пользователь может публиковать запись (простой вывод сообщения на консоль). Необходимо реализовать механизм подписки одних пользователей на публикации других. Самих пользователей можно создать непосредственно в исходном коде. При запуске программа ждет от вас ввода одной из команд:
1. Подписка (или отписка) пользователей. При этом необходимо указать пользователя подписчика и пользователя, на которого происходит подписка.
2. Публикация записи пользователем (с указанием пользователя и сообщения).
Подписанные пользователи должны реагировать на публикации выставлением оценок (выбранных случайным образом). При этом оценка выводится в консоль с указанием оценивающего, оцениваемого сообщения и самой оценки.
Вот такое вот задание. Делегаты и события надо использовать. Хотя я не понимаю что это такое. Если кто сможет написать такой код пож с объяснениями если можно. или по скайпу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2014, 09:10
Ответы с готовыми решениями:

Записать в массив структур информацию о людях в следующем виде: ФИО, знак зодиака, дата рождения
Записать в массив структур информацию о людях в следующем виде: ФИО, знак...

Описать класс "Студент" с полями фамилия, имя, отчество, группа, дата рождения
Помогите, что-то я уже совсем завалился с этой задачей. Задание: Придумать...

Создайте класс RightTriangle и Создайте производный класс Rectangle
Создайте класс RightTriangle (Прямоугольный треугольник), задаваемый катетами и...

Поиск по одинаковым ФИО+дата рождения в Access
Добрый день. Может кто подскажет. Есть таблица, скажем Учащиеся, в таблице...

Сформировать список, дано ФИО, дата рождения. Нужно отсортировать по возрасту
Дано : ФИО, дата рождения Сортировка : по возрасту c++

5
XRoy
861 / 711 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
03.10.2014, 09:47 2
Bolkgijk,
Используйте паттерн наблюдатель
0
I2um1
Злой няш
1407 / 1105 / 374
Регистрация: 05.04.2010
Сообщений: 1,949
03.10.2014, 09:49 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using System;
using System.Collections.Generic;
using System.Threading;
 
namespace ConsoleApplication
{
    internal class Program
    {
        private static void Main()
        {
            var users = new List<User>
                        {
                            new User("Сергей", new DateTime(1986, 5, 8)),
                            new User("Игорь", new DateTime(1998, 3, 5)),
                            new User("Андрей", new DateTime(1990, 10, 10))
                        };
 
            users[1].Subscribe(users[0]);
            users[2].Subscribe(users[0]);
 
            users[0].Publish("Some message");
 
            users.ForEach(user => user.Dispose());
            Console.ReadKey(true);
        }
    }
 
    internal sealed class User : IDisposable
    {
        private static readonly Random Randomizer = new Random();
 
        // Коллекция для того, чтобы память под события не убегала.
        // Как альтернатива: менеджер на пользователем, который сам освобождает память;
        // или Weak Event.
        private readonly IList<Action<User, string>> subscriptions = new List<Action<User, string>>();
 
        public User(string name, DateTime birthday)
        {
            this.Name = name;
            this.Birthday = birthday;
        }
 
        public string Name { get; private set; }
 
        public DateTime Birthday { get; private set; }
 
        private event Action<User, string> onPublished;
 
        public event Action<User, string> OnPublished
        {
            add
            {
                this.subscriptions.Add(value);
                this.onPublished += value;
            }
 
            remove
            {
                this.subscriptions.Remove(value);
                this.onPublished -= value;
            }
        }
 
        public void Dispose()
        {
            foreach (Action<User, string> subscription in this.subscriptions)
            {
                this.onPublished -= subscription;
            }
            this.subscriptions.Clear();
        }
 
        public void Publish(string message)
        {
            Console.WriteLine("{0}: {1}", this.Name, message);
 
            // Вся эта шайтан-магия для потокобезопасности, обычно в виде метода расширения делается.
            object obj = this.onPublished;
            var action = Thread.VolatileRead(ref obj) as Action<User, string>;
            if (action != null)
            {
                action(this, message);
            }
        }
 
        public void Subscribe(User user)
        {
            user.OnPublished += this.Rate;
        }
 
        public void Unsubscribe(User user)
        {
            user.OnPublished -= this.Rate;
        }
 
        private void Rate(User user, string message)
        {
            int mark = Randomizer.Next(5) + 1;
            Console.WriteLine("{0} rated at {1}: '{2}' by {3}.", this.Name, mark, message, user.Name);
        }
    }
}
Добавлено через 30 секунд
XRoy,
Цитата Сообщение от Bolkgijk Посмотреть сообщение
Делегаты и события надо использовать.
0
XRoy
861 / 711 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
03.10.2014, 09:56 4
I2um1,
Обычно его и реализуют через делегаты и события
0
I2um1
Злой няш
1407 / 1105 / 374
Регистрация: 05.04.2010
Сообщений: 1,949
03.10.2014, 10:00 5
XRoy, неправда.
пруф
0
Bolkgijk
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 41
03.10.2014, 11:25  [ТС] 6
I2um1, можно тобой по скайпу связаться?
0
03.10.2014, 11:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2014, 11:25

Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения человека, а также класс для хранения ФИО и почтового ад
Реализуйте класс для хранения ФИО и номера телефона человека, класс для...

Заполнить “анкету переписи” с полями ФИО и дату рождения. Спросить пользователя
Вот задание : Заполнить “анкету переписи” с полями ФИО и дату рождения....

Огромная просьба!Подсистема ЗАГС: ФИО, дата рождения, пол,вес, в каком роддоме родился,перечень роддомов
Огромная просьба!!!Подсистема ЗАГС: ФИО, дата рождения, пол,вес, в каком...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru