Egy gondolkodtató gyakorló feladatokból álló gyűjtemény. Főbb témák a nyelvspecifikus programozás és a matematika.
Egy csapat réteges architektúrában épít egy alkalmazást: UI, szolgáltatás és adattár rétegre bontva. A feladat az, hogy megértse, miért előnyös a felelősségek szétválasztása, és melyik réteg mit csináljon.
#include <iostream>
#include <string>
class UserRepository {
public:
void save(const std::string& name) {
std::cout << "Saving user: " << name << '\n';
}
};
class UserService {
UserRepository repository;
public:
void registerUser(const std::string& name) {
if(name.empty()) {
std::cout << "Invalid user" << '\n';
return;
}
repository.save(name);
}
};
class UserController {
UserService service;
public:
void handleRequest(const std::string& name) {
service.registerUser(name);
}
};
int main() {
UserController controller;
controller.handleRequest("Kovacs Eva");
controller.handleRequest("");
return 0;
}
-- Feladatok:
-- 1. Nevezze meg a három réteget és írja le, melyik mit csinál.
-- 2. Miért nem jó ötlet, ha a UserController közvetlenül menti az adatokat?
-- 3. Melyik rétegben lenne helye az ellenőrzésnek, hogy a név üres-e?
-- 4. Mit nyerünk azzal, hogy a logika szét van bontva?