Лабораторна робота №7
Тема: Розробка програм з використанням патерного проектування. Патерн Singleton.
Мета: Закріпити теоретичні знання та придбати практичні навички з розробки програм з патерном Singleton.
Завдання 1.
Відлагодити приклади, що були наведені у лекційному матеріалі.
Завдання 2.
За основу необхідно взяти додаток, що було розроблено у лабораторних робіт 2-6.
2.1. Будь який клас з додакту реалізувати за правилами петерну Singleton. Продемонструвати їх роботу.
2.2 Створити патерн мультитон, та продемонструвати його роботу.
2.3. Розробити шаблон патерну мультитон. (завдання підвищеної складності)
Програма може бути реалізована будь якою мовою програмування, обмеження на категорію проекту не накладається.
Висновки:___________________________________________________________________________________________________________________________________________________________________________ ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Виконано « » _____________ 2016р викладач _____________________
Група _____________ Студент(ка) ________________________________
Лабораторна робота №8
Тема: Розробка програм з використанням патерного проектування. Патерн Адаптер.
Мета: Закріпити теоретичні знання та придбати практичні навички з розробки програм з патерном Адаптер.
Завдання 1.
Відлагодити приклади, що були наведені у лекційному матеріалі.
Класична реалізація патерну Adapter
#include <iostream>
Class FahrenheitSensor
{
public:
float getFahrenheitTemp()
{
float t = 32.0;
// .програмний код
return t;
}
};
Class Sensor
{
public:
virtual ~Sensor() {}
virtual float getTemperature() = 0;
};
class Adapter : public Sensor
{
public:
Adapter( FahrenheitSensor* p ) : p_fsensor(p) {}
~Adapter()
{
delete p_fsensor;
}
float getTemperature()
{
return (p_fsensor - >getFahrenheitTemp() - 32.0)*5.0/9.0;
}
private: FahrenheitSensor* p_fsensor;
};
int main()
{
Sensor* p = new Adapter( new FahrenheitSensor);
cout << "Celsius temperature = " << p->getTemperature() << endl;
delete p;
return 0;
}
2
Реалізація патерна Adapter на базі закритого успадкування
#include <iostream>
class FahrenheitSensor
{
public:
float getFahrenheitTemp()
{
float t = 32.0;
// ...
return t;
}
protected:
voidadjust() {}
};
class Sensor
{
public:
virtual ~Sensor() {}
virtual float getTemperature() = 0;
virtual void adjust() = 0;
};
class Adapter : public Sensor, private FahrenheitSensor
{
public:
Adapter() { }
float getTemperature()
{
return (getFahrenheitTemp() - 32.0)*5.0/9.0;
}
void adjust()
{
FahrenheitSensor::adjust();
}
};
int main()
{
Sensor * p = new Adapter();
p->adjust();
cout << "Celsius temperature = " << p - >getTemperature() << endl;
delete p;
return 0;
}
Завдання 2.
У сторонніх джерелах інформації вказано розмір площі у одиницях виміру «ар», перед вами поставили задачу програму розробити, яка б дозволила переводити зазначену інформації у квадратних кілометрах. (Наявність діаграми класів обов’язкова)
1 ар = 0.0001 квадратний кілометр
Завдання 3.
Розробити клас, що забезпечить адаптацію роботи спідометра, Спідометр видає значення у милях на годину, необхідно адаптувати до кілометрів на годину. Використати патерн Adapter з закритим успадкуванням та патерн Singleton для класу, що містить реалізацію. (Наявність діаграми класів обов’язкова)
1 км/г = 0.621371192237334 миля/г
Програми можуть бути реалізовані будь якою мовою програмування, обмеження на категорію проектів не накладаються.
Висновки:___________________________________________________________________________________________________________________________________________________________________________ ________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Виконано « » _____________ 2016р викладач _____________________
