Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.07.2018, 14:39   #1
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
Вопрос Какой смысл Интерфейсов если без них программа работает на 100%?

Какой смысл Интерфейсов если без них программа работает на 100%? Если убрать все (2) интерфейса:
Код:
public interface IArOperation
{
    // Определяем набор абстрактных методов
    int Sum();
    int Otr();
    int Prz();
    int Del();
}

public interface ISqrSqrt
{
    int Sqr(int x);
    int Sqrt(int x);
}
И разумеется иерахию Интерфейсов что бы не было ошибки:
Код:
A : IArOperation  ---> A
Ab : A, ISqrSqrt   ---> Ab : A
И тут вопрос: какой смысл использовать интерфейсы?
Мaкс вне форума
Старый 04.07.2018, 14:43   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

"работает на 100%" это вообще не о чем.
Во-первых непонятно как измерялись эти %.
Во-вторых какой смысл придумывать имена переменным если и с a, b, c, d, e, ..., z, aa, ab, ... все работает?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Старый 04.07.2018, 14:45   #3
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
какой смысл придумывать имена переменным если и с a, b, c, d, e, ..., z, aa, ab, ... все работает?
???
Мaкс вне форума
Старый 04.07.2018, 14:56   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Начнем с одного из типичного применения интерфейсов:
1. Пусть у вас есть логер в файл и функция, которая что-то важное делает и через логер, переданный в параметрах, сообщает о своей работе.
2. Приходит начальник и говорит - хочу, чтобы в некоторых случаях эта функция логировала в БД вместо файла. Напишите вторую функцию?
3. Вылез баг в логировании в БД. Вы написали мок-объект и? Пишите третью функцию для теста?
p51x на форуме
Старый 04.07.2018, 15:04   #5
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Чтобы задумываться не о природе объекта, а о способе его использования.
Baburek вне форума
Старый 05.07.2018, 11:26   #6
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Интерфейс нужно использовать с несколькими классами? (Для одного класса не будет смысла использовать)
Мaкс вне форума
Старый 05.07.2018, 11:31   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Переведите ваш вопрос, надоело додумывать за вас.
p51x на форуме
Старый 05.07.2018, 11:39   #8
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Переведите ваш вопрос, надоело додумывать за вас.
Вот наши классы и каждый с интерфейсом Interface_:
Код:
class Class1 : Interface_
class Class2 : Interface_
class Class3 : Interface_
В интерфейсе Interface_ там такой код:
Код:
using System;
interface Interface_
{
    void Add(double x);
}
А в классе Class1 там такой код (код неполный):
Код:
public void Add(double x)
{
Balance += x;
}
(Balance это переменная double типа)
И уже не нужно в каждом классе писать выше код (в классе Class1), это компилятор сделает автоматически, так что это:
Код:
public void Add(double x)
{
Balance += x;
}
и это:
Код:
public void Add(double x)
{
Balance += x;
}
не нужно писать, это главное действие интерфейса, правильно?
Мaкс вне форума
Старый 05.07.2018, 12:07   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Нет. Ведь другие классы не наследуются от Class1.
p51x на форуме
Старый 05.07.2018, 12:09   #10
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Нет. Ведь другие классы не наследуются от Class1.
Но наследуются с одним и том же интерфейсом, зачем интерфейс вообще нужен?
Мaкс вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рассчитать CRC16. с текстовыми и бинарными файлами работает без проблем. Если же подсунуть ей exe файл, то вылетает. ilyakonst Общие вопросы C/C++ 4 12.04.2016 17:01
если Edit1 ='Рис', Edit2 ='10', Edit3 ='6', то автоматически заполняется Edit4 ='100'. Какой оператор лучше использовать? Юрий9 БД в Delphi 7 26.02.2016 18:04
Какой фреймворк изучить для интерфейсов БД Goretsv PHP 4 17.07.2012 03:49
Объясните смысл интерфейсов MyLastHit C# (си шарп) 8 22.11.2011 18:43
Есть ли смысл в использовании предкомпилированных заголовков, если я в них ничего не добавляю? TwiX Visual C++ 4 19.09.2011 14:15