Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Созать интерфейс или класс?


Автор: ckopn 20.2.2007, 14:57
Можно создать файл mdb так:

Код

ADOX.Catalog сat = new ADOX.Catalog ();
cat.Create ("Provider=Microsoft.JET.OLEDB.4.0 Data Source = J:\\NetProjects\\EmployeeDB.mdb");


А можно так:

 
Код

ADOX.CatalogClass cat = new ADOX.CatalogClass();
cat.Create(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=J:\\NetProjects\\EmployeeDB.mdb);


 

КаталогКласс наследует методы от интерфейса Каталог.
Я понял правильно использовать 2й вариант?
В чем разница?
Правильнее создавать обьекты от классов а не от интерфейсов? 

Автор: Yama 20.2.2007, 15:23
Цитата(ckopn @  20.2.2007,  14:57 Найти цитируемый пост)
КаталогКласс наследует методы от интерфейса Каталог.


Цитата

Интерфейс DLL — это набор функций, экспортируемых ею. Интерфейс класса С++ — это набор членов данного
класса. Однако когда в этой книге я употребляю слово интерфейс, имеется в виду интерфейс СОМ, а не все
прочие. Интерфейс СОМ также включает в себя набор функций, которые реализуются компонентами и
используются клиентами. Но СОМ дает более точное определение интерфейса. В СОМ интерфейсом является
определенная структура в памяти, содержащая массив указателей на функции. Каждый элемент массива
содержит адрес функции, реализуемой компонентом. С точки зрения СОМ интерфейсом является упомянутая
структура в памяти; все остальное — это детали реализации, которые СОМ не касаются. Мы остановимся на этой
структуре в конце главы, после того как посмотрим на ее реализацию с помощью С++.


(С)http://e-jonie.narod.ru/files/Inside_COMv2.rar

С точки зрения использования СОМ-интерфейсов - правильнее использовать конструктор самого интерфейса, а не соответствующего интерфейсу класса.
В С# и С++ классы не наследуют интерфейсы, а реализуют их, т.к. интерфейс - это просто соглашение о том, какие функции должен содержать класс. Подробнее про интерфейсы написано http://msdn2.microsoft.com/en-us/library/87d83y5b.aspx.

Автор: ckopn 21.2.2007, 09:28
Цитата(Yama @ 20.2.2007,  15:23)
С точки зрения использования СОМ-интерфейсов - правильнее использовать конструктор самого интерфейса, а не соответствующего интерфейсу класса.
В С# и С++ классы не наследуют интерфейсы, а реализуют их, т.к. интерфейс - это просто соглашение о том, какие функции должен содержать класс. Подробнее про интерфейсы написано http://msdn2.microsoft.com/en-us/library/87d83y5b.aspx.

То есть правильно будет вот так:

Код

            CatalogClass catalog = new Catalog();
            TableClass table = new Table();
            ColumnClass column = new Column();

Автор: ckopn 21.2.2007, 09:53
Код

            CatalogClass catalog = new Catalog();
            TableClass table = new Table();
            ColumnClass column = new Column();
[/QUOTE]
Так неправильно. 

Автор: Yama 21.2.2007, 11:42
Цитата(Yama @  20.2.2007,  15:23 Найти цитируемый пост)
С точки зрения использования СОМ-интерфейсов - правильнее использовать конструктор самого интерфейса, а не соответствующего интерфейсу класса.

Это с учетом того, что СОМ интерфес возможно инициализировать его же (интерфейса), конструтктором.. т.е. если у интерфейса есть конструктор - то правильнее использовать его. Но можно инициализировать интерфейс и конструктором класса, все зависит от того, что эти конструкторы делают и какй результат тебе надо получить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)