Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Środa, 18 Lipiec 2018
Zarejestrowanych użytkowników: 4
Dostępnych pytań testowych: 102
HOME
Strona tytułowa pracy dyplomowej
NAUKA
Materiały dydaktyczne związane z OOP
TESTY
Sprawdzenie poziomu zdobytej wiedzy
ZASOBY
Literatura i zasoby sieciowe o OOP
ŹRÓDŁA
Zbiór projektów dydaktycznych z OOP
KONTO
Możliwość śledzenia własnych postępów
INFO


Most

Przykład 3
#include <iostream>

#include "klasa.h"
#include "klasamost.h"
#include "klient1.h"
#include "klient2.h"

int main () {
	Klient1 k1;
	k1.metoda();

	Klient2 k2;
	k2.metoda();

	return 0;
}
#ifndef __IMPLEMENTACJA_H__
#define __IMPLEMENTACJA_H__
#include "konfiguracja.h"

class Implementacja {
public:
	void metoda1 () const;
	void metoda2 () const;
#ifdef ZMIANA_IMPLEMENTACJI
	void metoda3 () const;
#endif
};

#endif
#include "implementacja.h"
#include <iostream>

void Implementacja::metoda1 () const {
	std::cout << "Implementacja::metoda1()" << std::endl;
}

void Implementacja::metoda2 () const {
	std::cout << "Implementacja::metoda2()" << std::endl;
#ifdef ZMIANA_IMPLEMENTACJI
	 metoda3 ();
#endif
}

#ifdef ZMIANA_IMPLEMENTACJI
void Implementacja::metoda3 () const {
	std::cout << "Implementacja::metoda3()" << std::endl;
}
#endif
#ifndef __INTERFEJS_H__
#define __INTERFEJS_H__

class Interfejs {
public:

};

#endif
#include "interfejs.h"

#ifndef __KLASA_H__
#define __KLASA_H__
#include "konfiguracja.h"

class Klasa {
public:
	void metoda1 () const;
	void metoda2 () const;
#ifdef ZMIANA_IMPLEMENTACJI
	void metoda3 () const;
#endif
};

#endif
#include "klasa.h"
#include <iostream>

void Klasa::metoda1 () const {
	std::clog << "Klasa::metoda1()" << std::endl;
}

void Klasa::metoda2 () const {
	std::clog << "Klasa::metoda2()" << std::endl;
#ifdef ZMIANA_IMPLEMENTACJI
	metoda3 ();
#endif
}

#ifdef ZMIANA_IMPLEMENTACJI
void Klasa::metoda3 () const {
	std::clog << "Klasa::metoda3()" << std::endl;
}
#endif
#ifndef __KLASAMOST_H__
#define __KLASAMOST_H__

class Implementacja;

class KlasaMost {
public:
	KlasaMost ();
	~KlasaMost ();
	void metoda1 () const;
	void metoda2 () const;
private:
	Implementacja * s_impl;
};


#endif
#include "klasamost.h"
#include <iostream>
#include "implementacja.h"

KlasaMost::KlasaMost ()
	: s_impl(0)
{
	s_impl = new Implementacja();
}

KlasaMost::~KlasaMost () {
}

void KlasaMost::metoda1 () const {
	std::clog << "KlasaMost::metoda1()" << std::endl;
	s_impl->metoda1();
}

void KlasaMost::metoda2 () const {
	std::clog << "KlasaMost::metoda2()" << std::endl;
	s_impl->metoda2();
}
#ifndef __KLIENT1_H__
#define __KLIENT1_H__
#include <iostream>

class Klient1 {
public:
	void metoda () const;
};

#endif
#include "klient1.h"
#include "klasa.h"
#include <iostream>

void Klient1::metoda () const {
	std::clog << "Klient1::metoda()" << std::endl;
	Klasa k;
	k.metoda1();
	k.metoda2();
	std::clog << std::endl;
}
#ifndef __KLIENT2_H__
#define __KLIENT2_H__
#include <iostream>

class Klient2 {
public:
	void metoda () const;
};

#endif
#include "klient2.h"
#include "klasamost.h"
#include <iostream>

void Klient2::metoda () const {
	std::clog << "Klient2::metoda()" << std::endl;
	KlasaMost km;
	km.metoda1();
	km.metoda2();
	std::clog << std::endl;
}
 #define ZMIANA_IMPLEMENTACJI
Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11