Budżet: 400 UAH Termin: 2 dni
Здравствуйте!
Готов выполнить задание!
Гарантирую качество и скорость выполнения!
Створити клас для сутності Науковець:
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();
}
};
Створити і ініціалізувати вектор сутностей (на 3-5 елементів) із довільним вмістом даних.
Створити вектор EntityStorage і заповнити його результатами виклику функції StorageManager::createStorage() для файлів:
data.xml
data.json
data.fake
Використати отриманий вектор EntityStorage для збереження вектора сутностей у задані файли.
Призупинити роботу програми для очікування нажаття користувачем будь-якої клавіші.
За цей час користувач може змінити вміст створений файлів (і зробити їх некоректними теж).
Після цього використати вектор EntityStorage для завантаження векторів сутностей зі створений файлів і вивести їх у консоль з вказанням назви файлу з якого вони були отримані.
Ззовні при викликах методів, що можуть викидати MessageException ловити їх та виводити повідомлення про помилку у cerr.
Budżet: 400 UAH Termin: 2 dni
Здравствуйте!
Готов выполнить задание!
Гарантирую качество и скорость выполнения!
Budżet: 400 UAH Termin: 2 dni
Здравствуйте!
Выполню быстро и качественно, к коду программы напишу комментарии.
Обращайтесь, буду рад помочь.
Budżet: 300 UAH Termin: 1 dzień
добрый день, готов реализовать на C#, опыт работ с джейсон и хмл данными есть