HardDrive dev1;
KeyBoard dev1;
MotherBoard mb;
dev1.connect(mb);
dev2.connect(mb);
dev1.Send(msg,dev2.id);
C# соединение и взаимодействие объектов.
В общем, есть несколько объектов: MotherBoard, RamMemory, Keyboard и ещё несколько штук, которые являются устройствами. Есть несколько интерфейсов: IInnerBus, IUSB, ISata и т.д. , которые реализуют эти объекты. И есть метод Send, который должен отправлять от одного девайса байт другому. Задумано так, как и в PC. Девайс коннектится сначала к материнке методом Connect, ему выдаётся какой-то DeviceId и потом, он вызывает Send с DevId другого устройства.
В чём проблема: как сделать так, чтобы, при вызове метода объекта класса, допустим, HardDrive он обрабатывался в объекте класса MotherBoard, который проверяет, подсоединён ли к нему девайс с DevId и, если подсоединён, то вызывал бы метод Recieve объекта класса, с определённым DevID. А если не подсоединён, то метод объёкта класса HardDrive возвращал бы false. Вот как-то так. Нужна цепочка Device - MotherBoard - Device. Только вот как это реализовать? Какими средствами? Смотрю пока в сторону делегатов и событий, но ещё не совсем понимаю, как это применить. Или, может, есть какой другой способ реализовать такое взаимодействие?
Device = MotherBoard.GetDevice(DEV_ID);
Device.Send()
чем не годится?
Вот задание:
Цитата:
Реализовать компоненты компьютерной системы, связанные между собой через определенные интерфейсы. Обеспечить возможность стыковки элементов системы между собой в случае совпадения интерфейсов взаимодействия. Интерфейсы в обязательном порядке поддерживать информацию о максимальной скорости передачи данных и возможность передавать как минимум побайтовые данные.
Интерфейсы:
IUsbBus (шина USB)
ISata (шина SATA)
INetwork (сеть)
IInnerBus (внутренняя шина компьютера)
Классы:
MotherBoard (материнская плата с процессором)
RamMemory (оперативная память)
HardDisk (жесткий диск)
Printer (принтер)
Scanner (сканер изображений)
NetworkCard (сетевая карта)
Keyboard (клавиатура)
Интерфейсы:
IUsbBus (шина USB)
ISata (шина SATA)
INetwork (сеть)
IInnerBus (внутренняя шина компьютера)
Классы:
MotherBoard (материнская плата с процессором)
RamMemory (оперативная память)
HardDisk (жесткий диск)
Printer (принтер)
Scanner (сканер изображений)
NetworkCard (сетевая карта)
Keyboard (клавиатура)
По-моему, с таким заданием ну никак нельзя реализовать так, чтобы оно работало как на настоящем PC.
Через Device Manager. Примерно как я рассказал.
А что именно мешает?
Цитата: Alm3n
По-моему, с таким заданием ну никак нельзя реализовать так, чтобы оно работало как на настоящем PC.
ООП никогда не способно и не призвано описывать задачу в терминах предметной области. ООП описывает задачу в терминах ООП. Впрочем, сие заблуждение типично.
Иными словами, вам не нужно делать всё "как на настоящем PC".
Цитата: Phodopus
Что значит переменная под каждый класс устройства?
Через Device Manager. Примерно как я рассказал.
А что именно мешает?
Через Device Manager. Примерно как я рассказал.
А что именно мешает?
При этом объекты должны храниться в MotherBoard? Если так, то это не нравится.
Сейчас
Код:
В MotherBoard только делегат на принимающую сообщения функцию.
Цитата: Der Meister
ООП никогда не способно и не призвано описывать задачу в терминах предметной области. ООП описывает задачу в терминах ООП. Впрочем, сие заблуждение типично.
Иными словами, вам не нужно делать всё "как на настоящем PC".
Иными словами, вам не нужно делать всё "как на настоящем PC".
Это был запрос преподавателя же.
Цитата: Alm3n
Это был запрос преподавателя же.
Чёт я там не увидел ничего из того, что вы пытаетесь сделать.
Цитата: Der Meister
Чёт я там не увидел ничего из того, что вы пытаетесь сделать.
Там - где?
Цитата: Alm3n
Там - где?
В задании, конечно :)
Цитата: Der Meister
В задании, конечно :)
Дык, задание писал один препод, а проверяет, увы, другой...Вот тот-то другой и добавил, устно. Вообще, это был его ответ на мой вопрос "как это реализовать?".
в motherboard может храниться как список ссылок на устройства, как списки ссылок на устройства по типам, так и список устройств (шин) непосредственно подключенных в motherboard (и далее это все может образовывать деревья...)