Я студент-программист на уровне 1-го уровня, хотя я несколько лет занимаюсь программированием, и изучение выше и выше того, чему учит меня класс, - это то, что я делаю, чтобы я был полностью подготовлен как только я выйду в рабочую среду. Этот класс вообще не ООП, а на самом деле следующий класс, но для этого проекта учитель сказал, что он не возражал бы, если бы мы пошли выше и дальше и выполнили проект в ООП (на самом деле вы не можете получить A в его классе, если вы не пройдете выше и дальше в любом случае).
Проект (на данный момент) для чтения в XML файле, байт за байтом, сохраняет теги элемента в одном массиве и значения данных в другом. Я сражался с ним на этом (учитывая рамки .net, связанные с XML), но это была проигранная битва. Он хочет, чтобы мы закодировали это, не используя XML-материал .net.
Он представил пример OOP для этой программы, который он набросал (первоначально написанный на Java, портированный на С++, затем перенесенный с С++ на С#)
В своем примере он получил три класса. первый, XMLObject
, который содержит массивы, квази-конструктор, методы getter и setter (не свойства, которые я планирую исправить в моей версии), и метод добавления тегов <
и >
в теги сохраняться в массивах (и при необходимости выводить на консоль).
Второй класс - это класс parseXML
. В этом случае у него есть поля, которые отслеживают количество строк, смещение файла, смещение тега и строки для хранения элементов и данных.
Опять же, он получил методы getter и setter, несколько методов анализа, которые ищут разные вещи, и общий метод синтаксического анализа, который использует другие методы анализа (вроде их объединяет). Некоторые из этих методов вызывают вызовы методов класса XMLObject и отправляют проанализированные элементы и значения данных в соответствующие их массивы.
Третий класс, который у него есть, - это тот, у которого нет полей, и имеет два метода: один для выполнения ATOI и один для сброса части потока файлов на консоль.
Я знаю, что мы создаем менее эффективную версию того, что уже включено в инфраструктуру .net. Я указал ему на него, и ему сказали: "Не используйте XML-класс .net, конец обсуждения", поэтому пусть все согласятся просто оставить это один.
Мой вопрос в том, должны ли быть действительно 3 отдельных класса. Разве класс разбора не наследуется от класса объектов XML или просто не кодируется в классе объектов XML, и не должны ли методы ATOI и демпинга быть в одном из этих двух классов?
Мне кажется, что если цель синтаксического анализа в жизни состоит в анализе XML файла и хранении элементов и полей данных в массиве, он должен быть в том же классе, а не изолирован и должен делать это через геттеры и сеттеры (или свойства в версии, которую я собираюсь сделать). Я не понимаю, почему массивы должны быть инкапсулированы в сторону от методов анализа, которые фактически дают им, что хранить.
Любая помощь будет оценена, так как я все еще это проектирую и хочу сделать ее по крайней мере как близкую к "правильной" (я знаю ее относительный термин). Форма ООП.