Задачи - ООП, Седмица 16, 06.06.2024

GitHub classroom: classroom.github.com/a/BWjw2dUC

Задача

Първо си разпишете структурата, след това пишете код. НЕ е нужно да реализирайте пълно решение, това е по-блико до архитектурното контролно, не е нужно да конкретизирате всички член-функции.

В добре реализираните операционни системи, комуникация със свързани устройства се свежда до работа с файлове: ако искаш да кажеш устройството да прави нещо, ти пишеш във файла, ако устройството иска да ти каже на тебе нещо, четеш от файла. Разбира се, отдолу няма истински файлове които се запазват в харддиск (примерно), просто ОС превежда всички тези операции върху файлове със съответни действия към устройството.

Реализирайте подобна система. Първо трябва ни обща схема за файлове, за всеки файл имаме Read и Write методи, и пазим името на файла.

За всяко устройство само по себе си знаем, че трябва да използваме определен драйвър (по име) и че то има малко информация за себе си: марка като низ и модел като цяло число. По-конкретно разглежаме два основни типа устройства: индексируемо и поточно (streamable).

Първия тип са устройства като харддиск, където можем да си изберем индекс в който да запазваме или четем данни. Втория тип са устройства като клавиатура или тонколони, можем или да прочетем или пишем по един байт, и този байт “изчезва” (клавиатурата изпраща байт като е натиснат бутон, тонколоните изкарват звук според байт, но никъде тази информация не се запазва дълготрайно). Имплементирйате съответните оператори.

Допълнително имаме поточно-индексируеми устройства, това са примерно фенси дигитални камери, които позволяват да се свържат като нормални уеб камери (тоест серийни устройства, изпращат данни за сегашния кадър) и могат да пазят снимки (тоест индексируеми устройства).

Последно, с популярността на интернетът е добавен мрежов интерфейс, за който трябва да реализираме член-функции за изпращане и приемане на пакет с данни. Един пакет съдържа начален и краен адрес като цели неотрицателни числа, име на протокола (низ с 4 знака) и данни (масив от байтове).

Имаме и конкретен тип поточно устройство: мрежов адаптер. Разбира се, той е и мрежов интерфейс, като идеята е, че по файловия интерфейс се предават статистични и информативни данни, но не и пакети.