Răspuns :
Răspuns:
#include <iostream>
#include <string>
#include <vector>
class Destinatar
{
int varsta;
std::string gen;
public:
Destinatar(int varsta, std::string gen)
: varsta(varsta)
, gen(gen)
{}
~Destinatar() {}
friend std::ostream& operator<<(std::ostream& os, const Destinatar& destinatar)
{
os << "varsta: " << destinatar.varsta << ", gen: " << destinatar.gen;
return os;
}
std::string getGen() const { return gen; }
};
class Jucarie
{
std::string denumire, material, modDeFunctionare;
Destinatar destinatar;
public:
Jucarie(std::string denumire, std::string material, std::string modDeFunctionare, Destinatar destinatar)
: denumire(denumire), material(material), modDeFunctionare(modDeFunctionare), destinatar(destinatar) {}
friend std::ostream& operator<<(std::ostream& os, const Jucarie& jucarie)
{
os << "Denumire jucarie: " << jucarie.denumire << ", material: " << jucarie.material
<< ", mod de functionare: " << jucarie.modDeFunctionare << ", destinatar: " << jucarie.destinatar;
return os;
}
Destinatar getDestinatar() const { return destinatar; }
};
class FabricaDeJucarii
{
std::vector<Jucarie> vectorJucarii;
public:
FabricaDeJucarii(std::vector<Jucarie> vectorJucarii)
: vectorJucarii(vectorJucarii)
{}
friend std::ostream& operator<<(std::ostream& os, const FabricaDeJucarii& fabricaDeJucarii)
{
os << "Magazinul de jucarii are urmatoarele jucarii in depozit:\n";
for (const auto& jucarie : fabricaDeJucarii.vectorJucarii) {
os << "\t" << jucarie << "\n";
}
return os;
}
void afisareJucarii() {
for (const Jucarie& jucarie : vectorJucarii) {
if (jucarie.getDestinatar().getGen() == "Feminin") {
std::cout << jucarie << std::endl;
}
}
}
};
int
main()
{
/* creăm 3 obiecte de tip Destinatar (poți adăuga field-urile-n Jucarie dacă nu mai vrei o clasă-n +) */
Destinatar destinatarPrimaJucarie(16, "Baiat");
Destinatar destinatarADouaJucarie(17, "Feminin");
Destinatar destinatarATreiaJucarie(13, "Feminin");
/* crăm vectorul în care și construim obiectele (pentru a evita copierea lor folosim emplace_back în loc de push_back) */
std::vector<Jucarie> vectorJucarii;
vectorJucarii.emplace_back("Masina cu Telecomanda", "Plastic", "Electronic", destinatarPrimaJucarie);
vectorJucarii.emplace_back("Papusa", "Plastic", "Mecanic", destinatarADouaJucarie);
vectorJucarii.emplace_back("Papusa", "Plastic", "Mecanic", destinatarATreiaJucarie);
/* construim fabrica de jucării iar metoda afisareJucarii() va afișa jucăriile destinate fetelor */
FabricaDeJucarii fabricaDeJucarii(vectorJucarii);
fabricaDeJucarii.afisareJucarii();
return 0;
}
Cam asta e baza, mai poți crea tu funcțiile în care introduci datele de la tastatură și creezi obiectele în loc de a le avea deja create.
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!