Вход | Регистрация

Информационные технологии ::

Метки:

Язык программирования C#

Я
   YrtEvg
13.01.04 - 11:23
Каковы преимущеста С# перед C++ и средой разработки MS VC++ и BC++ Builder
 
  Рекламное место пустует
   fellow
 
1 - 13.01.04 - 11:25
Билдеру каюк, седьмого не будет. C# для платформы .NET.
   fellow
 
2 - 13.01.04 - 11:26
Вот здесь почитайте: http://www.forum.mista.ru/topic.php?forum=it&id=880
   YrtEvg
3 - 13.01.04 - 11:27
А что за платформа .NET и на зачем она нужна?
   YrtEvg
4 - 13.01.04 - 11:29
Спасибо, тема закрыта.
   kos
 
5 - 13.01.04 - 18:48
Как это закрыто? Я слышал что С# нет множественного наследования, правда ли это? Да и динамическими массивами какая-то ерунда.
   fellow
 
6 - 13.01.04 - 18:53
На самом деле, множественного наследования в подавляющем большинстве случаев можно избежать.
Коллега kos, как у Вас продвигаются дела с VC++ ?
   kos
 
7 - 13.01.04 - 19:00
М-м-м-м... сейчас сессия, так что я в нете по сколькую по стельку автомат стреляет ;) ...
да  и вообще мне итререснол как отобразить объект....
__
Как избежать наследования?
   fellow
 
8 - 13.01.04 - 19:43
Общеизвестно, что Билдеровская VCL не поддерживает множественное наследование. Т.е. нельзя породить форму, например, от двух других классов.
В одном из проектов несколько лет назад мне понадобилось реализовать некоторе подобие идиомы Модель-Вид-Контроллер, для чего, не мудрствуя лукаво, я решил сделать некоторые формы видами. (Кстати, в VC++ поддерживает эту идиому встроенным образом, через классы наследованне от MFC'шных CDocument, CView, CWnd, CCmdTarget. Я как раз с этим сейчас разбираюсь. Но не об этом речь.) Казалось бы, имея абстрактный класс вида, получающего уведомления от модели об её изменениях, и базовый класс формы, достаточно "скрестить" этих существ, чтобы получить требуемое поведение. Но я уже знал, что с этой стороны ничего не светит, и поэтому вместо "скрещивания" применил "прививку". Я привил своему конкретному классу формы нужное мне поведение вида следующим образом (всё несущественное опущено):

//---------------          заголовочный файл           ------------------
class TMyViewForm : public TForm {

private:

// предварительное объявление
class InnerView;          

// с помощью следующего объявления класс InnerView получает
// на правах друга доступ ко всем членам класса
// TMyViewForm, включая закрытые и защищённые
friend class InnerView;    

// теперь собственно определение класса InnerView
class InnerView : public AbstractView {
private:

// важная деталь - член pMyForm указывает на внешний класс
// этот член понадобится для манипулирования членами внешнего класса
 TMyViewForm *pMyForm;

public:

// конструктор получает указатель на внешний класс и сохраняет его
 InnerView(TMyViewForm *pfrm) : pMyForm(pfrm) {}

//наследованная функция отклика на изменение модели
 virtual void ModelChanged(int reason);
} ImplementedView;

// сразу определён ImplementedView - член класса TMyViewForm,
// имеющий тип InnerView


//------------------------------------------------

public:

// теперь определяется открытая операция приведения типа,
// возвращающая ссылку на член ImplementedView, имеющий тип InnerView
 operator InnerView&() {return ImplementedView;}

};
//-------------------------------------------------------

В cpp-файле формы в её конструкторе в списке инициализации инициализируется член ImplementedView:

__fastcall TMyViewForm::TMyViewForm(TComponent* Owner)
 : TForm(Owner), ImplementedView(this)
{
}

Всё, теперь за счёт явно определённой операции приведения типа класс "привитой формы" TMyViewForm можно использовать полиморфно как класс InnerView.

Последнее дополнение: за строгость терминологии я не ручаюсь, т.к. не академик. А на практике этот подход работает ОК. (Это если меня кто пинать начнёт, ха-ха-ха!)
   kos
 
9 - 13.01.04 - 20:06
Кстати... Прикольно! НО! С++ тем и привлекал программистов тем что он был очень гибок -  делай что хочешь, а со всякими там ограничениями и нововведениями уже многие переходят на делфи тк VCL хоть как-то да остаётся в 8-й версии.... Я смею предположить что на .NET ещё рано смотреть, ведь даже Лонгхорн будет поддерживать Win32, вторично конечно же, но, будет.

___
Делфи поддерживает наследование множественное?
   kos
 
10 - 13.01.04 - 20:13
" Т.е. нельзя породить форму, например, от двух других классов. "
Это ты про base-> child -> child 1- child 2->...  та кнельзя?
 
 
   fellow
 
11 - 13.01.04 - 20:24
(10) Это я про TMyForm : public TForm, public AnotherClass {
};
Так нельзя.
(9) Пожалуй, я со своими задачами останусь на пятом блиндере. Остатки, и без того весьма небольшие, приязни к VCL тают с каждым днём. Эта дрянь мне никогда не нравилась, после OWL особенно. А куда было деваться - какой диск на базаре купил, тем и работай, хе-хе. Хорошо, что Вы тему VC затронули, мне этого толчка недоставало, чтобы всерьёз задуматься о переходе на мелкомягкую платформу. На НЕТ смотреть уже следует, я думаю. Пока то да сё, своей ведь работы повседневной выше крыши, а потом звонок прозвенит - и поезд ушёл.
   fellow
 
12 - 13.01.04 - 20:24
Кстати, жаба тоже множественное наследование не поддерживает. И СОМ мелкомягкий тоже основан не на множественном наследовании.
   kos
 
13 - 13.01.04 - 21:27
VS(VC) привлекает постоянностью MFC в частности, НО в документации прямо так и написано мол для быстрой разработки приложений используйте Бёйсик – это плюс...
Плюсы VCL:
1)    быстрая разработка
2)    шикарные возможности с БД
3)    ---- всяки там протоколы и инет ....
4)    Много компонентов – это воооообще халва
и много ещё чего.

Минусы. Минус всего один – он умирает, его больше не будет уж по крайней мере в 7BCB.

На смену пришел некий С sharp. Синтаксис Делфи указатели на объекты, не знаю есть или нет но –> надо забыть, а ведь это нужная штука. Много нововведений к которым конечно же надо привыкнуть, но мне бы хотелось бы чтобы С# был продолжением С++, а не продолжением Бейсика.  

Я где то читал что с# есть альтернатива java
   fellow
 
14 - 14.01.04 - 04:47
Скорее, С# можно было бы назвать микрософтовской альтернативой жабе. Билл делает просто и эффективно: на правах сильнейшего берёт за основу чужой продукт, переделывает, обзывает по-новому и выпускает как свой. Жабу (java) это же постигло.
   skunk
 
15 - 14.01.04 - 07:55
Что ява, что сишарп, являются дальнейшим развитием языков A, B, C...
Насколько я знаю вся ветка была разработана в sun micro.. inc. Мягкие просто сюда мажутся.
А вообще это не первая и не последняя попытка создать межплатформенный язык программирования. Основное требования при создании A было легкая переносимость исходного кода между разными компиляторами для разных платформ. Соответственно все это тянеться до сих пор.
Хотя может быть я что-то и гоню. Точно не поню, давно это было.
   Череп
16 - 15.01.04 - 04:18
Он новее :)
   Serpent
 
17 - 15.01.04 - 19:15
Слушайте сюда!
Я с Java знаком с 1997 года.
Додиез - это ответ Билла компании Sun после того, как он проиграл дело про Яву. Язык додиез - практичски мало чем отличается от Явы, поскольку очевидно - просто переименован из J++.
Множественного наследования, которое есть в С++, в до диезе, как и в Яве - нету. Есть зато отдельная конструкция интерфейсов, которые тоже можно наследовать и как раз их можно множественно. Основная фишка Явы и До диеза - огромная, сразу с языком поставляемая библиотека классов. То, что в С++ реализовано ДОПОЛНИТЕЛЬНО и не входит в стандарт (MFC, VCL и т.д.) в Яве и Додиезе реализовано сразу и поставляется с языком.
Еще одно мощное отличие - нет указателей - есть сборка мусора.
Кроме того, языки ИНТЕРПРЕТИРУЕМЫЕ. Если для Явы это было оправдано - реализована универсальная JVM для единобразной работы на разных платформах. То в Додиезе - это подается как фишка, но ИМХО, там это не нужно, поскольку имеем одну платформу - Винды. Но идея та же - разработана специальная виртуальная машина и ВСЕ языки дотнета переводят в нее. Есть даже книжка Inside IL, где вся эта машина описывается.
   kos
 
18 - 15.01.04 - 21:15
Кстати, откомпилировал на с#  в  win2000, далее снёс поставил XP начал запускать и облом по xp не пашет написанное приложение => надо качать рамку а-ля 2.1…
….а вы говорите. .NET F ставит так и так придётся :(
   fellow
 
19 - 16.01.04 - 07:12
Ясно, придётся.


Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует