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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Путаница! При изучение C# немного путаюсь... 
:(
    Опции темы
EaglE
Дата 21.5.2004, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 20.5.2004
Где: г.Воркута

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



Проблема состоит в том, что я не до конца усвоил иерархию понятий.... Я вроде всё понимаю, но когда дело доходит до такого (...единственное, для чего используется явная реализация интерфейса - так это для привязки методов интерфейса только на его уровне, чтобы к этим методам можно было обратиться только через ссылку на интерфейс)
Я не могу себе это представить! Конечно можно продолжить читать(изучать далее), но СмЫсЛ...
И ещё посоветуйте книгу где все ясно и понятно изложенно???!!!!!!

И второй вопрос: на что больше уходит времени, на понимание как это всё устроенно ( с точки зрения философии самого языка : ) ) или изучение самих команд......
Вернее, что сложнее или ЭТО НЕ ДЕЛИМОЕ ЦЕЛОЕ!!!!???
PM MAIL   Вверх
AntonSaburov
Дата 21.5.2004, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



Цитата
единственное, для чего используется явная реализация интерфейса - так это для привязки методов интерфейса только на его уровне, чтобы к этим методам можно было обратиться только через ссылку на интерфейс

А это откуда такое ? Это перевод такой ?

Самая идея интерфейса уже как-то раз обсуждалась здесь. Просто фраза плохо построена.

Цитата
на что больше уходит времени, на понимание как это всё устроенно ( с точки зрения философии самого языка : ) ) или изучение самих команд......

Больше времени уходить на освоение библиотек, классов.
Команды можно запомнить за две недели.
А вот философия языка - это фактически нахождение причин, по которым была введена та или иная конструкция. Это требует времени.
PM MAIL WWW ICQ   Вверх
EaglE
Дата 21.5.2004, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 20.5.2004
Где: г.Воркута

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



Да библиотеки........ tounge.gif .......
Когда читаешь книги и при этом раньше никогда не занимался програмированием, такие КОНСТРУКЦИИ ПРЕДЛОЖЕНИЙ путают. Мне нужно время smile.gif

А пример из "C# и платформа .NET" (Эндрю Троелсен)

PM MAIL   Вверх
mr.DUDA
Дата 17.1.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(EaglE @ 21.5.2004, 08:54 Найти цитируемый пост)
(...единственное, для чего используется явная реализация интерфейса - так это для привязки методов интерфейса только на его уровне, чтобы к этим методам можно было обратиться только через ссылку на интерфейс)

Всё просто. Вот пример:

Код
    // объявление интерфейса
    public interface ISample
    {
        void Method();
    }

    public class Implicit : ISample
    {
        // Неявная реализация интерфейса ISample
        public void Method()
        {
        }

        public Implicit() {}
    }

    public class Explicit : ISample
    {
        // Явная реализация интерфейса ISample
        void ISample.Method()
        {
        }

        public Explicit() {}
    }

    public class TestClass
    {
        // пример, на котором показано различие
        public void Test()
        {
            Implicit obj1 = new Implicit();
            obj1.Method();

            Explicit obj2 = new Explicit();
            /* obj2.Method();  // -- ошибка на этапе компиляции */
            ((ISample)obj2).Method(); // OK

        }
    }


Как видим из примера, при явной реализации, методы интерфейса "спрятаны" (как private) внутри класса. При неявной - открыты. Явную реализацию применяют в случаях, когда об интерфейсе знают два класса, которые друг о друге не знают, а также в случае неких служебных интерфейсов. Самый простой пример - интерфейс IComparable, который реализуют в классах, объекты которых предполагается хранить в сортируемом списке: никому кроме списка методы IComparable не интересны, поэтому методы IComparable лучше "спрятать" внутри класса с пом. явной реализации. Список же может дёрнуть метод интерфейса, просто преобразовав объект класса к интерфейсу (это, кстати, аналог QueryInterface из модели COM).


--------------------
user posted image
PM MAIL WWW   Вверх
Hidrag
Дата 23.1.2006, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


--------------------
user posted image
PM WWW ICQ   Вверх
Medved
Дата 24.1.2006, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 3
Всего: 154



Цитата(Hidrag @ 23.1.2006, 10:34 Найти цитируемый пост)

.. Например чтобы передать обьект из дллки в форму или обмен инфой между формами...

Это следствия. Такое можно реализовать и с помощью других средств.

Они нужны в первую очередь для того, чтобы определить протокол общения с какой-либо частью приложения.
Согласно общепринятой концепции, между модулями системы должно быть как можно меньше связей. А если они и есть, то должны быть специфицированны.
Вот именно для этого и служат в первую очередь интерфейсы. Т.е. они закрепляют и устанавливают протокол общения между различными частями системы (в качестве этих частей могут выступать как модули, так и отдельные объекты).




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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