MemoryDAO– класс который реализует интерфейс DAO и содержит в себе хранилища. В классе будет присутствовать два хранилища:
map<long, Square> squares;
map<long, Figure> figures;
В первом хранилище будут содержаться объекты класса Square, добавление и получение которых происходит по ключу типа long.
Во втором хранилище будут содержаться объекты класса Figure, добавление и получение происходит так же по ключу типа long.
Реализация интерфейса DAO в классе MemoryDAO происходит по средствам методов:
void addSquare(Square *square);
Square* getSquare(long id);
void removeSquare(long id);
map<long, Square>* getAllSquaresFigure(Figure *figure);
void addFigure(Figure *figure);
Figure* getFigure(long id);
void removeFigure(long id);
1) метод void addSquare(Square *square) выполняет добавление квадратов (объектов класса Square) в коллекцию squares.
void MemoryDAO::addSquare(Square *square)
{
squares[square->getId()] = *square;
}
2) метод getSquare(long id) возвращает указатель на объект, если он присутствует в коллекции.
Square* MemoryDAO::getSquare(long id)
{
map<long, Square>::iterator find = squares.find(id);
if(find != squares.end())
return &find->second;
return 0;
}
3) метод removeSquare(long id) выполняет удаление объекта из коллекции squares по ключу id.
void MemoryDAO::removeSquare(long id)
{
squares.erase(id);
}
4) метод addFigure(Figure *figure) выполняет добавление фигуры (объекта класса Figure) в коллекцию figures.
void MemoryDAO::addFigure(Figure *figure)
{
figures[figure->getId()] = *figure;
}
5) метод getFigure(long id) возвращает указатель на объект, если он присутствует в коллекции.
Figure* MemoryDAO::getFigure(long id)
{
map<long, Figure>::iterator find = figures.find(id);
if(find != figures.end())
return &find->second;
return 0;
}
6) метод removeFigure(long id) выполняет удаление объекта из коллекции figures по ключу id.
void MemoryDAO::removeFigure(long id)
{
figures.erase(id);
}
7) метод getAllSquaresFigure(Figure *figure) возвращает коллекцию всех квадратов, из которых состоит фигура figure.
map<long, Square>* MemoryDAO::getAllSquareFigure(Figure *figure)
{
map<long, Square> sq;
map<long, Square>::iterator i;
for(i = squares.begin(); i != squares.end(); i++)
{
if((&i->second)->getFigure()->getId() == figure->getId())
{
sq[(&i->second)->getId()] = *(&i->second);
}
}
return &sq;
}