C++ abstrakcyjny mini program :)

Dawno dawno temu kiedy jeszcze studiowałem na Politechnice Krakowskiej mój profesor od Programowania Obiektowego zaproponował Nam mocno abstrakcyjne Projekty jak np. Droga Krzyżowa czy Praca w pralni. Mi trafił się ten pierwszy.

Program bardzo abstrakcyjny aż ciężko go opisać. Po kliknięciu na “Read more” sami zobaczycie jak to wygląda…

DrogaKrzyzowa.h listing…

/*
 * Grzegorz Bernaś
 *
 * OS: Ubuntu Linux
 * Powered by Eclipse 3.1.2
 *
 * Copyright (C) 2006 Grzegorz Bernaś
 * Version 0.9
 * License http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * Zgadula is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */

#include <iostream>

using namespace std;

class DrogaKrzyzowa
{
      public:
               DrogaKrzyzowa() {this->stacja = 1;}
               ~DrogaKrzyzowa() {this->stacja = 0;}
               void StacjaNext();
               int Get_stacja() {return stacja;}
               int Get_max() {return max;}
      private:
               int stacja;
               static const int max = 14;
};

void DrogaKrzyzowa::StacjaNext()
{
            if(stacja != 0 && stacja < max)
                            stacja++;
}

Msza.h listing…

/*
 * Grzegorz Bernaś
 *
 * OS: Ubuntu Linux
 * Powered by Eclipse 3.1.2
 *
 * Copyright (C) 2006 Grzegorz Bernaś
 * Version 0.9
 * License http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * Zgadula is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */

#include <iostream>
#include <string>
#define MAX 9

using namespace std;

class Msza
{
      public:
               Msza();
               ~Msza();
               void KsiadzAdd(string name);
               void KsiadzDel(int id);
               string GetOne(int id);
               int Get_act_nr_ks() {return act_nr_ks;}
      private:
               string ksieza[MAX];
               int act_nr_ks;
};

Msza::Msza()
{
  act_nr_ks = 0;
}

Msza::~Msza()
{
}

void Msza::KsiadzAdd(string name)
{
            if(act_nr_ks < MAX)
            {
                ksieza[act_nr_ks] = name;
                //cout << "n: " << act_nr_ks << "\n";
                act_nr_ks++;
            }
            else
                cout << "Ilosc ksiezy w czasie Mszy przekroczona! \n";
}

void Msza::KsiadzDel(int id)
{
            if(id == act_nr_ks-1)
            {
                  ksieza[id] = "";
                  act_nr_ks--;
            }
            else
                cout << "Niepoprawny Identyfikator \n";
}

string Msza::GetOne(int id)
{
            if(id > act_nr_ks && id > MAX)
            {
                  cout << "Niepoprawny Identyfikator \n";
                  exit(2);
            }
            else
                  return ksieza[id];
}

obrzadki.cpp listing…

/*
 * Grzegorz Bernaś
 *
 * OS: Ubuntu Linux
 * Powered by Eclipse 3.1.2
 *
 * Copyright (C) 2006 Grzegorz Bernaś
 * Version 0.9
 * License http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * Zgadula is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */

#include <iostream>
#include <string>
#include "DrogaKrzyzowa.h"
#include "Msza.h"

using namespace std;

int main()
{
    string koniec;
    int i;

    while(koniec != "t")
    {
        cout << "Inicjalizacja Obiektu DrogaKrzyzowa...\n\n";
        DrogaKrzyzowa Piatek;

        for(i=0;i<=Piatek.Get_max();i++)
        {
            cout << "Stacja drogi krzyzowej nr: " << Piatek.Get_stacja() << "\n";
            Piatek.StacjaNext();
        }

        cout << "\n--------------------------------------------\n\n";

        cout << "Inicjalizacja Obiektu Msza...\n\n";

        Msza Niedziela;

        Niedziela.KsiadzAdd("Adam Parszywka");
        Niedziela.KsiadzAdd("Jan Kowalski");
        Niedziela.KsiadzAdd("Jan Pawel II");

        Niedziela.KsiadzDel(2);

        Niedziela.KsiadzAdd("Benedykt XVI");

        cout << "index nr0: " << Niedziela.GetOne(0) << "\n";
        cout << "index nr1: " << Niedziela.GetOne(1) << "\n";
        cout << "index nr2: " << Niedziela.GetOne(2) << "\n";

        cout << "Nastepny index == " << Niedziela.Get_act_nr_ks() << "\n";

        cout << "\nCzy zakonczyc dzialanie programu? (t/n): ";
        cin >> koniec;
    }

    return 0;
}