// Kolos2017zad3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <memory>
#include <iostream>
#include <deque>
using namespace std;
class PracownikUczelni
{
public:
PracownikUczelni() { cout << "pracownik przyjęty" << endl; }
virtual void wykonajPrace() {
cout << "pracuje..." << endl;
}
virtual ~PracownikUczelni()
{
cout << "pracownik wylany" << endl;
}
};
class Asystent : public PracownikUczelni
{
public:
Asystent() { }
void wykonajPrace()
{
cout << "udaje, że pracuje" << endl;
}
};
class Naukowiec : public PracownikUczelni
{
public:
Naukowiec() { }
void wykonajPrace()
{
for (auto wyrobnik : podlegli_wyrobnicy)
wyrobnik->wykonajPrace();
if (podlegli_wyrobnicy.size() == 0)
throw string("Awaria...");
}
deque<shared_ptr<PracownikUczelni>> podlegli_wyrobnicy;
};
class WladzaUczelni : public PracownikUczelni
{
public:
WladzaUczelni() { }
~WladzaUczelni() { cout << "Jeszcze tu wrócę!" << endl; }
};
int main()
{
{
bool lokalny_zakres = true;
Naukowiec wyrobnik;
if (lokalny_zakres)
{
shared_ptr<PracownikUczelni> pomniejszy_wyrobnik(new Asystent());
shared_ptr<PracownikUczelni> dziekan(new WladzaUczelni());
shared_ptr<PracownikUczelni> sekretarka(new WladzaUczelni());
wyrobnik.podlegli_wyrobnicy.push_back(pomniejszy_wyrobnik);
wyrobnik.podlegli_wyrobnicy.push_back(shared_ptr<Asystent>(new Asystent()));
wyrobnik.wykonajPrace();
}
try {
wyrobnik.wykonajPrace();
wyrobnik.podlegli_wyrobnicy.clear();
wyrobnik.wykonajPrace();
}
catch (string blad)
{
std::cout << blad << endl;
}
}
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}