diff options
| Commit | fb74bde10319de026d106522184ad69cc7232056 (patch) | |
|---|---|---|
| Author | 2024-06-06 08:17:42 +0300 | |
| Committer | 2024-06-06 08:17:42 +0300 | |
| Files | be1bbd91a385db9e08a5e85690a5df1357ab1862 /src | |
| syndamia.com-fb74bde10319de026d106522184ad69cc7232056.tar syndamia.com-fb74bde10319de026d106522184ad69cc7232056.tar.gz syndamia.com-fb74bde10319de026d106522184ad69cc7232056.zip | ||
| Parent | 5c1d0370cc8c222216b2fc6d2f3c612317865dea (diff) | |
[te/oop-2023/w16] Added exercise
2 files changed, 31 insertions, 0 deletions
| -rw-r--r-- | src/teaching/oop-2023/index.md | 1 | ||||
| -rw-r--r-- | src/teaching/oop-2023/week16/index.md | 30 |
diff --git a/src/teaching/oop-2023/index.md b/src/teaching/oop-2023/index.md index e71f689..63acb0f 100644 --- a/src/teaching/oop-2023/index.md +++ b/src/teaching/oop-2023/index.md @@ -29,3 +29,4 @@ |13|16.05.2024|[Задачи](./week13/) \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week13) \|\| [GitHub classroom](https://classroom.github.com/a/GvV1wrC1)| |14|23.05.2024|[Задачи](./week14/) <!-- \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week12) --> \|\| [GitHub classroom](https://classroom.github.com/a/K0XomKEP)| |15|30.05.2024|[Задачи](./week15/) <!-- \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week12) --> \|\| [GitHub classroom](https://classroom.github.com/a/z2QadyEE) **Това упражнение е от 11:15 до 13:15**| +|16|06.06.2024|[Задачи](./week16/) <!-- \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week12) --> \|\| [GitHub classroom](https://classroom.github.com/a/BWjw2dUC)| diff --git a/src/teaching/oop-2023/week16/index.md b/src/teaching/oop-2023/week16/index.md new file mode 100644 index 0000000..f95271d --- /dev/null +++ b/src/teaching/oop-2023/week16/index.md @@ -0,0 +1,30 @@ +# Задачи - ООП, Седмица 16, 06.06.2024 + +GitHub classroom: [classroom.github.com/a/BWjw2dUC](https://classroom.github.com/a/BWjw2dUC) + +## Задача + +Първо си разпишете структурата, след това пишете код. +НЕ е нужно да реализирайте пълно решение, това е по-блико до архитектурното контролно, не е нужно да конкретизирате всички член-функции. + +В добре реализираните операционни системи, комуникация със свързани устройства се свежда до работа с файлове: ако искаш да кажеш устройството да прави нещо, ти пишеш във файла, ако устройството иска да ти каже на тебе нещо, четеш от файла. +Разбира се, отдолу няма истински файлове които се запазват в харддиск (примерно), просто ОС превежда всички тези операции върху файлове със съответни действия към устройството. + +Реализирайте подобна система. +Първо трябва ни обща схема за файлове, за всеки файл имаме `Read` и `Write` методи, и пазим името на файла. + +За всяко устройство само по себе си знаем, че трябва да използваме определен драйвър (по име) и че то има малко информация за себе си: марка като низ и модел като цяло число. +По-конкретно разглежаме два основни типа устройства: индексируемо и поточно (streamable). + +Първия тип са устройства като харддиск, където можем да си изберем индекс в който да запазваме или четем данни. +Втория тип са устройства като клавиатура или тонколони, можем или да прочетем или пишем по един байт, и този байт "изчезва" (клавиатурата изпраща байт като е натиснат бутон, тонколоните изкарват звук според байт, но никъде тази информация не се запазва дълготрайно). +Имплементирйате съответните оператори. + +Допълнително имаме поточно-индексируеми устройства, това са примерно фенси дигитални камери, които позволяват да се свържат като нормални уеб камери (тоест серийни устройства, изпращат данни за сегашния кадър) и могат да пазят снимки (тоест индексируеми устройства). + +Последно, с популярността на интернетът е добавен мрежов интерфейс, за който трябва да реализираме член-функции за изпращане и приемане на пакет с данни. +Един пакет съдържа начален и краен адрес като цели неотрицателни числа, име на протокола (низ с 4 знака) и данни (масив от байтове). + +Имаме и конкретен тип поточно устройство: мрежов адаптер. +Разбира се, той е и мрежов интерфейс, като идеята е, че по файловия интерфейс се предават статистични и информативни данни, но не и пакети. + |