Skip to content

a-dubinin/bsuir-oop-virtual-file-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

bsuir-oop-virtual-file-system

Моделирование виртуальной файловой системы


Белорусского государственного университета информатики и радиоэлектроники.
Кафедра программного обеспечения информационных технологий.
Дисциплина «Объектно-ориентированное программирование».
Индивидуальная практическая работа №2.


Цель работы

Цель данной работы состоит в закреплении знаний основных концепций ООП:

  • Полиморфизм в иерархии классов.
  • Множественное наследование.
  • Агрегация.
  • Механизмы взаимодействия между объектами.
  • Приемы проектирования: фабрики классов.

Условие задачи

Разработать иерархию классов для организации виртуальной файловой системы. Иерархия включает проектирование не менее четырех интерфейсов: IVFSObject, IFile, IDirectory, IVFS. IVFSObject – является предком IFile и IDirectory, а так же содержит общий для них набор методов. Каждый экземпляр записи виртуальной файловой системы реализует методы интерфейса IVFSObject. В свою очередь интерфейсы IFile и IDirectory расширяют набор методов IVFSObject, каждый согласно своей функциональности. Интерфейс IVFS содержит методы доступа к метаинформации конкретного драйвера виртуальной файловой системы. В частности, он должен содержать методы получения таких данных как название используемого драйвера файловой системы, используемая кодировка в именах файлов и т.д. Кроме того, IVFS содержит метод доступа к корневому элементу файловой системы.

Разработка виртуальной файловой системы включает создание не менее трех драйверов в виде соответствующего набора классов. Это означает, что необходимо создать группу классов, реализующих каждый спроектированный интерфейс для своего типа драйвера представления данных. Таким образом, основной код программы не будет зависеть от типа драйвера, способа представления, хранения и организации файловой системы в памяти, так как будет ориентирован на использование экземпляров интерфейсных типов переменных. За счет такого подхода достигается полиморфизм исходного кода, который использует экземпляры разработанных классов. В качестве примера типов драйверов можно выбрать следующие представления реализаций файловой системы в памяти: native — работа с системными вызовами ОС, block — хранение файловой системы в виде одной записи (бинарного файла) на логическом диске ОС, ftp — доступ к файловой системе с использование сетевого протокола передачи файлов.

Для реализации выбора при создании экземпляра класса конкретного типа драйвера представления файловой системы необходимо использовать фабрику классов. Решение о выборе типа возвращаемого экземпляра фабрика принимает на основании входных параметров или внешнего конфигурационного файла.

Дополнительно рекомендуется реализовать методы монтирования и демонтирования различных файловых систем между собой по аналоги с UFS (файловой системы unix), таким образом, что каждый объект файловой системы может также является точкой монтирования IMountPoint, которая также является расширением IVFSObject.

При проектировании системы необходимо самостоятельно принять решение о целесообразности использования того или иного подхода для организации взаимодействия между объектами. Обосновать свой выбор теоретически.


Пояснительная записка

https://github.com/a-dubinin/bsuir-oop-virtual-file-system/wiki

Releases

No releases published

Packages

No packages published

Languages