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

Интерфейсы, просто подскажите с чего начать

14.07.2013, 22:27. Просмотров 903. Ответов 13
Метки нет (Все метки)

Не могу понять с чего мне начать все это делать. может подскажите. Не могу себе представить как это все будет выглядеть. Спасибо.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
/*
 * Реализовать системы электрических источников и приборов, соединенных между собой через шнуры. 
 * В интерфейсах должны быть предусмотрена возможность получения информации о напряжении и максимальной мощности, которую поддерживает элемент. 
 * Прибор должен иметь наименование, потребляемую мощность, а источник и провод – списки подключенных приборов.
 *  Интерфейсы:         
 *  IElectricSource (источник тока)
 *  IElectricAppliance (электрический прибор 
 *  IElectricWire (электрический шнур)
 *  Классы:
 *  SolarBattery (солнечная батарея)
 *  DieselGenerator (дизельный генератор)
 *  NuclearPowerPlant (атомная электростанция)
 *  Kettle (чайник)
 *  Lathe (токарный станок)
 *  Refrigerator (холодильник)
 *  ElectricPowerStrip (электрический удлинитель)
 *  HighLine (высоковольтная линия)
 *  StepDownTransformer (понижающий трансформатор, должен реализовывать интерфейсы и потребителя и источника тока)
 *  
 */
namespace IElectric
{
    interface IElectricSource<T>
    {
       
 
    }
    interface IElectricAppliance<T>
    {
 
    }
    interface IElectricWire<T>
    {
 
    }
 
    class Program
    {
       
        static void Main(string[] args)
        {
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2013, 22:27
Ответы с готовыми решениями:

Подскажите с чего начать
Нужно сделать в WinForm(это сделано в конс.), а я не знаю с чего начать.:wall:...

подскажите с чего начать?
Задача такая. 1. Создать HTML/ASP-страницу (именно здесь ASP или HTML...

подскажите с чего нужно начать
описать функции форматирования элементов одномерного массива с помощью...

Свойства, интерфейсы, сигнатуры, делегаты. Просто о сложном
Начал изучать C#. Лет мне много с ООП - туго. Решил изучать азбуку по...

Для чего нужны интерфейсы
Люди уже около полу года проглю на C# и до сих пор не могу понять зачем нужны...

13
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
14.07.2013, 22:50 2
Oguno4ka, что должно быть в интерфейсах вам сказано, а классы просто должны их как-то реализовывать. С чем проблема?

Интерфейсы не должны быть обобщенными, им обобщать нечего.
1
Oguno4ka
2 / 2 / 1
Регистрация: 08.05.2013
Сообщений: 41
14.07.2013, 23:29  [ТС] 3
Цитата Сообщение от Psilon Посмотреть сообщение
Oguno4ka, что должно быть в интерфейсах вам сказано, а классы просто должны их как-то реализовывать. С чем проблема?

Интерфейсы не должны быть обобщенными, им обобщать нечего.
проблема скорее в механизме.Я плохо понимаю как будет работать функция "получения информации о напряжении и максимальной мощности" это событийное программирование?
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
15.07.2013, 00:15 4
Oguno4ka, это значит, что интерфейс должен предоставлять свойства Voltage и Power, не более...

Добавлено через 38 секунд
Я вам так и быть помогу, но в след. раз думайте больше

Добавлено через 6 минут
На мой взгляд это должно выглядеть как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    interface IElectricAppliance
    {
        string Name { get; }
        double Voltage { get; }
        double Power { get; }
    }
 
    interface IElectricSource  : IElectricAppliance
    {
        IEnumerable<IElectricAppliance> ConnectedAppliances { get; } 
    }
 
    interface IElectricWire
    {
        IEnumerable<IElectricAppliance> ConnectedAppliances { get; } 
    }
1
Oguno4ka
2 / 2 / 1
Регистрация: 08.05.2013
Сообщений: 41
15.07.2013, 18:26  [ТС] 5
Цитата Сообщение от Psilon Посмотреть сообщение
Oguno4ka, это значит, что интерфейс должен предоставлять свойства Voltage и Power, не более...

Добавлено через 38 секунд
Я вам так и быть помогу, но в след. раз думайте больше

Добавлено через 6 минут
На мой взгляд это должно выглядеть как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    interface IElectricAppliance
    {
        string Name { get; }
        double Voltage { get; }
        double Power { get; }
    }
 
    interface IElectricSource  : IElectricAppliance
    {
        IEnumerable<IElectricAppliance> ConnectedAppliances { get; } 
    }
 
    interface IElectricWire
    {
        IEnumerable<IElectricAppliance> ConnectedAppliances { get; } 
    }
А потом получится что-то вроде этого?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 interface IElectricAppliance
    {
        string Name { get; }
        double Voltage { get; }
        double Power { get; }
    }
    interface IElectricSource : IElectricAppliance
    {
        IEnumerable<IElectricAppliance> ConnectedAppliances { get; }
    }
    interface IElectricWire
    {
        IEnumerable<IElectricAppliance> ConnectedAppliances { get; }
    }
    class Kettle : IElectricAppliance, IElectricSource, IElectricWire
    {
        public string Name { get; set;}
        public double Voltage { get; set; }
        public double Power { get; set; }
        
    };
просто  я читал об интефейсах и там везде используется все на таком же уровне.
0
tezaurismosis
Администратор
Эксперт .NET
8547 / 3840 / 725
Регистрация: 17.04.2012
Сообщений: 8,548
Записей в блоге: 14
15.07.2013, 18:44 6
Цитата Сообщение от Oguno4ka Посмотреть сообщение
А потом получится что-то вроде этого?
1) Класс Kettle не реализует свойство ConnectedAppliances, определённое в IElectricWire
2) Следите за смысловой нагрузкой - чайник реализует интерфейс ЯЭлектрическоеУстройство (IElectricAppliance) - это нормально, но зачем вы ему приписываете ЯИсточникЭлектричества и ЯЭлектрическийПровод (IElectricSource, IElectricWire)?

Psilon,
C#
1
interface IElectricSource  : IElectricAppliance
Я согласен, что розетка как источник электричества тоже электрическое устройство, но розетка с чайником должны стоять в противоположном отношении. Тогда для чайника может что-нибудь типа IElectricSpender или IElectricSource не наследовать от IElectricAppliance?
1
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
15.07.2013, 19:02 7
tezaurismosis, я решил, что есть смысл наследовать, потому что если выполняется условие "розетка ЕСТЬ электроприбор", то я имею на это полное право. Можно и не наследовать.
0
tezaurismosis
Администратор
Эксперт .NET
8547 / 3840 / 725
Регистрация: 17.04.2012
Сообщений: 8,548
Записей в блоге: 14
15.07.2013, 19:22 8
Цитата Сообщение от Psilon Посмотреть сообщение
Можно и не наследовать.
Дело вкуса, выбор за TC
Я предлагают следующий вариант:
Кликните здесь для просмотра всего текста
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
public abstract class ElectricAppliance
{
    string Name { get; }
    double Voltage { get; }
    double Power { get; }
}
 
public interface IElectricSource
{
    IEnumerable<IElectricAppliance> ConnectedAppliances { get; }
}
 
public interface IElectricSpender
{
    IElectricSource ElectricSource { get; }
}
 
// Розетка
// Можете переделать под вашу "HighLine (высоковольтная линия)"
// Socket <-(has-a)- ElectricAppliance
// Socket <-(is-a)- IElectricSource
public class Socket : ElectricAppliance, IElectricSource
{
    public string Name { get; }
    public double Voltage { get; }
    public double Power { get; }
    public IEnumerable<IElectricAppliance> ConnectedAppliances { get; }
}
 
 
// Kettle <-(has-a)- ElectricAppliance
// Kettle <-(is-a)- IElectricSpender
public class Kettle : ElectricAppliance, IElectricSpender
{
    public string Name { get; }
    public double Voltage { get; }
    public double Power { get; }
    public IElectricSource ElectricSource { get; }
}

Отношения "HAS-A" выразить через наследование от абстрактного класса, а "IS-A" через интерфейсы.
1
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
15.07.2013, 19:25 9
tezaurismosis, has-a это композиция, айайай, нехорошо путать
2
tezaurismosis
Администратор
Эксперт .NET
8547 / 3840 / 725
Регистрация: 17.04.2012
Сообщений: 8,548
Записей в блоге: 14
15.07.2013, 19:48 10
Psilon, упс ошибочка вышла
Правильно будет звучать так
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Отношения "IS-A" выразить через наследование от абстрактного класса, а "HAS-A" через интерфейсы.
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
15.07.2013, 19:57 11
tezaurismosis, в данном случае абстрактный класс не отличается ничем от интерфейса, поэтому лучше использовать интерфейс (чтобы не перекрывать возможность наследования от другого класса).
В данном случае вполне все корректно в задании, не вижу смысла его перелопачивать.
0
Oguno4ka
2 / 2 / 1
Регистрация: 08.05.2013
Сообщений: 41
15.07.2013, 20:37  [ТС] 12
короче, ребята, я понял что я нуб галимый и мне нужно прочесть в книжке главу об интерфейсах или есть другие способы?
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
15.07.2013, 21:01 13
Oguno4ka, интерфейс - это абстрактный класс без полей, у которого есть только абстрактные методы. Что тут читать, о чем?
0
Oguno4ka
2 / 2 / 1
Регистрация: 08.05.2013
Сообщений: 41
16.07.2013, 00:23  [ТС] 14
Цитата Сообщение от Psilon Посмотреть сообщение
Oguno4ka, интерфейс - это абстрактный класс без полей, у которого есть только абстрактные методы. Что тут читать, о чем?
ну хотя Вы правы, нужно больше практики
0
16.07.2013, 00:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 00:23

Подскажите с чего начать разработку сервера
Всем доброго времени суток. Заинтересовался разработкой сервера на шарпе. С...

Для чего нужны интерфейсы (не GUI)
Пожалуйста, объясните новичку, для чего нужны интерфейсы! Желательно с простыми...

С чего начать?
Доброго времени суток! Сразу хочу извиниться, если пишу не по теме, но...


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

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

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