Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C# соединение и взаимодействие объектов.

316
08 декабря 2011 года
Alm3n
889 / / 29.05.2009
Требуется помощь С# гуру.
В общем, есть несколько объектов: MotherBoard, RamMemory, Keyboard и ещё несколько штук, которые являются устройствами. Есть несколько интерфейсов: IInnerBus, IUSB, ISata и т.д. , которые реализуют эти объекты. И есть метод Send, который должен отправлять от одного девайса байт другому. Задумано так, как и в PC. Девайс коннектится сначала к материнке методом Connect, ему выдаётся какой-то DeviceId и потом, он вызывает Send с DevId другого устройства.
В чём проблема: как сделать так, чтобы, при вызове метода объекта класса, допустим, HardDrive он обрабатывался в объекте класса MotherBoard, который проверяет, подсоединён ли к нему девайс с DevId и, если подсоединён, то вызывал бы метод Recieve объекта класса, с определённым DevID. А если не подсоединён, то метод объёкта класса HardDrive возвращал бы false. Вот как-то так. Нужна цепочка Device - MotherBoard - Device. Только вот как это реализовать? Какими средствами? Смотрю пока в сторону делегатов и событий, но ещё не совсем понимаю, как это применить. Или, может, есть какой другой способ реализовать такое взаимодействие?
14
08 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
А если как-то так:
Device = MotherBoard.GetDevice(DEV_ID);
Device.Send()

чем не годится?
316
09 декабря 2011 года
Alm3n
889 / / 29.05.2009
Не создавать же переменную под каждый класс устройства? Хотелось бы, чтобы именно из экземпляра уже созданного и подсоединённого к мамке устройства вызывалась функция Send. Вообще, как в естественных условиях это реализовано? По-моему, сами устройства ничего не читают и не пишут. Их опрашивает ОС, то есть, драйвер. И, чтобы от одного устройства послать данные другому, нужно из какой-то прослойки обратиться к драйверам обоих устройств.
Вот задание:
Цитата:
Реализовать компоненты компьютерной системы, связанные между собой через определенные интерфейсы. Обеспечить возможность стыковки элементов системы между собой в случае совпадения интерфейсов взаимодействия. Интерфейсы в обязательном порядке поддерживать информацию о максимальной скорости передачи данных и возможность передавать как минимум побайтовые данные.
Интерфейсы:
IUsbBus (шина USB)
ISata (шина SATA)
INetwork (сеть)
IInnerBus (внутренняя шина компьютера)
Классы:
MotherBoard (материнская плата с процессором)
RamMemory (оперативная память)
HardDisk (жесткий диск)
Printer (принтер)
Scanner (сканер изображений)
NetworkCard (сетевая карта)
Keyboard (клавиатура)


По-моему, с таким заданием ну никак нельзя реализовать так, чтобы оно работало как на настоящем PC.

14
09 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
Что значит переменная под каждый класс устройства?
Через Device Manager. Примерно как я рассказал.
А что именно мешает?
341
10 декабря 2011 года
Der Meister
874 / / 21.12.2007
Цитата: Alm3n
По-моему, с таким заданием ну никак нельзя реализовать так, чтобы оно работало как на настоящем PC.

ООП никогда не способно и не призвано описывать задачу в терминах предметной области. ООП описывает задачу в терминах ООП. Впрочем, сие заблуждение типично.
Иными словами, вам не нужно делать всё "как на настоящем PC".

316
10 декабря 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Phodopus
Что значит переменная под каждый класс устройства?
Через Device Manager. Примерно как я рассказал.
А что именно мешает?



При этом объекты должны храниться в MotherBoard? Если так, то это не нравится.
Сейчас

 
Код:
HardDrive dev1;
KeyBoard dev1;
MotherBoard mb;

dev1.connect(mb);
dev2.connect(mb);

dev1.Send(msg,dev2.id);

В MotherBoard только делегат на принимающую сообщения функцию.

Цитата: Der Meister
ООП никогда не способно и не призвано описывать задачу в терминах предметной области. ООП описывает задачу в терминах ООП. Впрочем, сие заблуждение типично.
Иными словами, вам не нужно делать всё "как на настоящем PC".


Это был запрос преподавателя же.

341
10 декабря 2011 года
Der Meister
874 / / 21.12.2007
Цитата: Alm3n
Это был запрос преподавателя же.

Чёт я там не увидел ничего из того, что вы пытаетесь сделать.

316
10 декабря 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Der Meister
Чёт я там не увидел ничего из того, что вы пытаетесь сделать.



Там - где?

341
10 декабря 2011 года
Der Meister
874 / / 21.12.2007
Цитата: Alm3n
Там - где?

В задании, конечно :)

316
10 декабря 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Der Meister
В задании, конечно :)



Дык, задание писал один препод, а проверяет, увы, другой...Вот тот-то другой и добавил, устно. Вообще, это был его ответ на мой вопрос "как это реализовать?".

14
13 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
в motherboard может храниться как список ссылок на устройства, как списки ссылок на устройства по типам, так и список устройств (шин) непосредственно подключенных в motherboard (и далее это все может образовывать деревья...)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог