//: C10:TemplateMethod.cpp
// Z knihy "Myslíme v jazyce C++, část 2" od Bruce Eckela a Chucka Allisona.
// (c) 1995-2004 MindView, Inc. Všechna práva vyhrazena.
// Přečtěte si podmínky používání zdrojových kódů umístěné v souboru 
// 'Licence.txt' dodávaném spolu s balíčkem kódu dostupným na www.MindView.net.
// Jednoduchá ukázka šablonové metody
#include <iostream>
using namespace std;

class AplikacniRamec {
protected:
  virtual void prizpusobena1() = 0;
  virtual void prizpusobena2() = 0;
public:
  void sablonovaMetoda() {
    for(int i = 0; i < 5; i++) {
      prizpusobena1();
      prizpusobena2();
    }
  }
};

// Vytvořit novou "aplikaci":
class MojeAplikace : public AplikacniRamec {
protected:
  void prizpusobena1() { cout << "Ahoj "; }
  void prizpusobena2() { cout << "lidi!" << endl; }
};

int main() {
  MojeAplikace aplikace;
  aplikace.sablonovaMetoda();
} ///:~
