Локализация изменений программного кода
Изменение в способе реализации полей и методов класса не должно приводить к необходимости изменения основного кода.
Пример
Определить класс, описывающий положение точки на плоскости. Предусмотреть следующие операции:
- Изменение координат точки
- Выдача расстояния от точки до начала координат
При разработке класса координаты точки заданы в прямоугольной системе координат.
class Точка
{
private double k1, k2; //координаты точки
//открытый метод для изменения координат
public void Установить(double x, double y)
{
k1 = x;
k2 = y;
}
//открытый метод для вычисления расстояния
public double Вычислить()
{
return Math.Sqrt(k1 * k1 + k2 * k2);
}
class Program
{
public static void Main()
{
Точка t; double d;
t = new Точка();
t.Установить(3.0, 4.0); // вместо t.k1 =3.0; t.k2=4.0
d = t.Вычислить(); //=> 5
t.Установить(4.0, 3.0);
d = t.Вычислить();
}
}
В процессе эксплуатации программы выяснилось, что установка коодинат точки производится намного реже, чем запрос на вычисление расстояния. Разработчики класса Точка для повышения эффективности программы приняли решение хранить координаты точкив полярной системе координат.
Как быть разработчикам класса Program?
Если доступ к полям класса Точка выполянется через специальные методы, то разработчики класса Точка должны оставить параметры неизменными, но изменить их реализацию. В этом случае код класса Program не требует никаких изменений.
class Точка
{
private double k1, k2; //координаты точки
//открытый метод для изменения координат
public void Установить(double x, double y)
{
k2 = Math.Sqrt(x*x+y*y);
k1 = Math.Atan ((y,x));
}
//открытый метод для вычисления расстояния
public double Вычислить()
{
return Math.Sqrt(k1 * k1 + k2 * k2);
}
Дата добавления: 2019-02-08; просмотров: 562;