JSON-XML
7 USDЗавдання №1. Проектування класів
Створити клас для сутності Науковець:
class TEntity {
public:
/* @todo your entity here */
};
Де замість TEntity - назва класу сутності Науковець (англійською мовою).
Цей тип даних, окрім своїх властивостей (мінімум 3 поля, строкове, цілочисельне і дробове), повинен містити масив (або список) інших сутностей. Наприклад, сутність Студент містить масив Академічних Предметів (кожен елемент - строка назви предмету).
Створити абстрактний клас EntityStorage із таким інтерфейсом:
class EntityStorage {
std::string _name;
protected:
EntityStorage(std::string name) { this->_name = name; }
public:
std::string name() { return this->_name; }
vector<TEntity> load() = 0;
void save(vector<TEntity> & entities) = 0;
};
Створити клас XmlEntityStorage - наслідник класу EntityStorage і реалізувати в ньому можливість збереження і завантаження вектора сутностей у форматі XML (при цьому потрібно використати хоча б один XML-атрибут).
Створити клас JsonEntityStorage - наслідник класу EntityStorage і реалізувати в ньому можливість збереження і завантаження вектора сутностей у форматі JSON.
У реалізаціях методів save() та load() викидати std::exception при неможливості збереження, відкриття файлів чи некоректності формату даних у файлах.
Реалізувати статичний клас StorageManager:
class StorageManager {
public:
static EntityStorage createStorage(std::string storageFileName);
};
Функція createStorage() в залежності від розширення файлу з storageFileName повертає об'єкт XmlEntityStorage або JsonEntityStorage, які працюватимуть із відповідним файлом. Якщо розширення не підтримується, викидати MessageException.
class MessageException : public std::exception {
string _error;
public:
MessageException(string error) {
this->_error = error;
}
const char * what() const noexcept{
return this->_error.c_str();
}
};
Завдання №2. Опис роботи програми
Створити і ініціалізувати вектор сутностей (на 3-5 елементів) із довільним вмістом даних.
Створити вектор EntityStorage і заповнити його результатами виклику функції StorageManager::createStorage() для файлів:
data.xml
data.json
data.fake
Використати отриманий вектор EntityStorage для збереження вектора сутностей у задані файли.
Призупинити роботу програми для очікування нажаття користувачем будь-якої клавіші.
За цей час користувач може змінити вміст створений файлів (і зробити їх некоректними теж).
Після цього використати вектор EntityStorage для завантаження векторів сутностей зі створений файлів і вивести їх у консоль з вказанням назви файлу з якого вони були отримані.
Ззовні при викликах методів, що можуть викидати MessageException ловити їх та виводити повідомлення про помилку у cerr.
-
68 1 0 Здравствуйте!
Готов выполнить задание!
Гарантирую качество и скорость выполнения!
-
245 17 0 Здравствуйте!
Выполню быстро и качественно, к коду программы напишу комментарии.
Обращайтесь, буду рад помочь.
-
398 85 3 6 добрый день, готов реализовать на C#, опыт работ с джейсон и хмл данными есть
Current freelance projects in the category C & C++
Residential Proxy Infrastructure EngineerWe're building a residential proxy network from scratch — fully owned, no third-party suppliers. We need one exceptional network engineer to build the entire technical foundation. What you'll build: - Android background SDK that routes proxy traffic through user devices… C & C++, DevOps ∙ 2 days 20 hours back ∙ 12 proposals |
Improvement in the existing version of 1C retail block for the distribution center (DC)In general, I will explain what kind of database we have - There is a main server where there is a retail database (where all receipts are recorded) - a UTP database - where all sales are transferred - it calculates the markup and stock balances - small databases of retail… C & C++, C# ∙ 3 days 11 hours back ∙ 6 proposals |
About the Master Program "KONSTRUCTOR"
4193 USD
We are looking for a very experienced C++ developer to modernize existing software (master program). The program is responsible for creating derivative software representing audio-visual sessions of psychological correction. The current version is written in pure WinAPI (Visual… C & C++, Desktop Apps ∙ 8 days 14 hours back ∙ 19 proposals |
Writing code for ArduinoIt is necessary to develop software for a weight dispenser based on Arduino Uno. Components: Arduino Uno R3 HX711 + load cell LCD1602 I2C display MAX7219 LED matrix 8x32 5 control buttons 4-channel relay 2 signal lamps Coarse dosing vibrator Precise dosing vibrator Operation… C & C++, Embedded Systems & Microcontrollers ∙ 9 days 22 hours back ∙ 15 proposals |
It is necessary to complete the project or provide consultation.
23 USD
|