Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс и интерфейс 
:(
    Опции темы
kurzon
Дата 25.9.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.8.2007

Репутация: -8
Всего: -11



Вы разрабатываете класс Document, реализующий интерфейсы IStorable и ICompressible.

Каким способом следует описать класс Document? 

Код

- public class Document : IStorable, ICompressible  
- public class Document : IStorable ^ ICompressible  
- public class Document : ICompressible + IStorable  
- public class Document : ICompressible && IStorable  
- public class Document : IStorable : ICompressible

Добавлено @ 16:56
Вы разрабатываете класс Document, производный от интерфейсов IStorable и ICompressible. В процессе разработки выяснилось, что класс реализует два интерфейса, имеющих метод void Read().

Какое из перечисленных действий следует предпринять, чтобы избежать конфликта в программе? 

Код

-  Реализовать метод Read() в классе Document как виртуальный  
-   Реализовать метод Read() в классе Document как implicit Read()  
-   Дважды реализовать метод Read() – так, чтобы реализации имели разные сигнатуры. Первая реализация будет соответствовать первому интерфейсу в списке наследуемых интерфейсов, а вторая – второму  
- Объявить метод void Read() интерфейса IStorable виртуальным в классе Document, а для метода void Read() интерфейса ICompressible применить явную реализацию – void IComressible.Read()  
- Реализовать метод Read() в классе Document как explicit Read()  


Это сообщение отредактировал(а) kurzon - 25.9.2007, 17:01
PM MAIL   Вверх
Alek86
Дата 25.9.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 2
Всего: 25



1.
Вы разрабатываете класс Document, реализующий интерфейсы IStorable и ICompressible.
Каким способом следует описать класс Document? 

public class Document : IStorable, ICompressible

2.
Вы разрабатываете класс Document, производный от интерфейсов IStorable и ICompressible. В процессе разработки выяснилось, что класс реализует два интерфейса, имеющих метод void Read().

Какое из перечисленных действий следует предпринять, чтобы избежать конфликта в программе? 

неплохой вопрос
я знаю, что можно реализовать их, как IStorable.Read() и ICompressible.Read().
но вызвать их напрямую в классе нельзя



насчет первого вопроса - явный РТФМ

Это сообщение отредактировал(а) Alek86 - 25.9.2007, 17:45


--------------------
user posted image    user posted image
PM MAIL   Вверх
marcusmae
Дата 25.9.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата(Alek86 @  25.9.2007,  17:43 Найти цитируемый пост)
Вы разрабатываете класс Document, производный от интерфейсов IStorable и ICompressible. В процессе разработки выяснилось, что класс реализует два интерфейса, имеющих метод void Read().Какое из перечисленных действий следует предпринять, чтобы избежать конфликта в программе? неплохой вопрося знаю, что можно реализовать их, как IStorable.Read() и ICompressible.Read().но вызвать их напрямую в классе нельзя


Гм. Я бы тоже так сделал :

Код

    class Class1 : Interface1, Interface2
    {
        void Interface1.Read()
        {
            ...
        }

        void Interface2.Read()
        {
            ...
        }
    }


Вероятно, это и называется
Цитата
Дважды реализовать метод Read() – так, чтобы реализации имели разные сигнатуры.
 Первая реализация будет соответствовать первому интерфейсу в списке наследуемых интерфейсов,
 а вторая – второму


Вызвать напрямую, ессесно, не получится, однако и конфликта не будет, если при вызове приводить к соответствующему интерфейсу :

Код

Class1 class1 = new Class1();
((Interface1)class1).Read();
((Interface2)class1).Read();



Это сообщение отредактировал(а) marcusmae - 25.9.2007, 20:52


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
QryStaL
Дата 25.9.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Это называется явная реализация интерфейсов. Вышеозначенное определение по смыслу ближе всего к приавильному ответу, но корявое до ужаса...


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
marcusmae
Дата 25.9.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата(QryStaL @  25.9.2007,  20:54 Найти цитируемый пост)
Это называется явная реализация интерфейсов. Вышеозначенное определение по смыслу ближе всего к приавильному ответу, но корявое до ужаса...


Да, это - implement interface explicitly. Но что-то я подумал, а причём тут сигнатура? Ведь сигнатура = имя + модификаторы + возвращаемый тип + типы аргументов. Здесь список аргументов - одинаковый, возвращаемый тип - тоже, так что сие годится, если только под именем подразумевается "дальнее имя", то есть :
Код

Interface1.Read
Interface2.Read





Это сообщение отредактировал(а) marcusmae - 25.9.2007, 21:06


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.