Полиморфизм или убрать повторяющиеся части кода - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте люди, помогите можно ли как то вынести в отдельный класс\метод\функцию\интерфейс или хоть куда нибудь , часть когда которая повторяется , но в некоторых частях программы немного меняется. Ну например есть такой код:
Листинг программы
  1. private void button3_Click(object sender, EventArgs e)
  2. {
  3. Class1 objClass1 = new Class1();
  4. if (comboBox2.Text == "Полином Лагранжа")
  5. {
  6. // Получим панель для рисования
  7. GraphPane pane = zedGraphControl1.GraphPane;
  8. // Изменим текст надписи по оси X
  9. pane.XAxis.Title.Text = "Величина";
  10. // Изменим текст заголовка графика
  11. pane.Title.Text = "График";
  12. // Изменим текст по оси Y
  13. pane.YAxis.Title.Text = "Напряжение";
  14. // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
  15. pane.CurveList.Clear();
  16. // Создадим список точек
  17. PointPairList list_1 = new PointPairList();
  18. PointPairList list_2 = new PointPairList();
  19. int n = 30;
  20. double a = -3;
  21. double b = 3;
  22. double h = (b - a) / (n - 1); // расстояние между узлами
  23. // Заполняем список точек
  24. for (double x = a; x <= b; x += h)
  25. {
  26. //добавим в список точку
  27. list_1.Add(x, objClass1.F(x));
  28. }
  29. objClass1.Fill(a, h);
  30. for (double x = a; x <= b; x += h)
  31. {
  32. //добавим в список точку
  33. list_2.Add(x, objClass1.L1(x, objClass1.Node));
  34. }
  35. LineItem myCurve1 = pane.AddCurve("Исходная функция", list_1, Color.Blue, SymbolType.None);
  36. LineItem myCurve2 = pane.AddCurve("Интерполяционный полином", list_2, Color.Red, SymbolType.None);
  37. zedGraphControl1.Invalidate();
  38. }
  39. if (comboBox2.Text == "Бета сплайн")
  40. {
  41. // Получим панель для рисования
  42. GraphPane pane = zedGraphControl1.GraphPane;
  43. // Изменим текст надписи по оси X
  44. pane.XAxis.Title.Text = "Измеряемая величина";
  45. // Изменим текст заголовка графика
  46. pane.Title.Text = "График 2";
  47. // Изменим текст по оси Y
  48. pane.YAxis.Title.Text = "Время";
  49. // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
  50. pane.CurveList.Clear();
  51. // Создадим список точек
  52. PointPairList list = new PointPairList();
  53. double xmin = -50;
  54. double xmax = 50;
  55. // Заполняем список точек
  56. for (double x = xmin; x <= xmax; x += 0.01)
  57. {
  58. // добавим в список точку
  59. list.Add(x, objClass1.interp1(x));
  60. }
  61. // Создадим кривую с названием "Sinc",
  62. // которая будет рисоваться голубым цветом (Color.Blue),
  63. // Опорные точки выделяться не будут (SymbolType.None)
  64. LineItem myCurve = pane.AddCurve("Sinc", list, Color.Blue, SymbolType.None);
  65. // Вызываем метод AxisChange (), чтобы обновить данные об осях.
  66. // В противном случае на рисунке будет показана только часть графика,
  67. // которая умещается в интервалы по осям, установленные по умолчанию
  68. zedGraphControl1.AxisChange();
  69. // Обновляем график
  70. zedGraphControl1.Invalidate();
  71. }
  72. }
Как мы видим часть кода
Листинг программы
  1. // Получим панель для рисования
  2. GraphPane pane = zedGraphControl1.GraphPane;
  3. // Изменим текст надписи по оси X
  4. pane.XAxis.Title.Text = "Величина";
  5. // Изменим текст заголовка графика
  6. pane.Title.Text = "График";
  7. // Изменим текст по оси Y
  8. pane.YAxis.Title.Text = "Напряжение";
  9. // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
  10. pane.CurveList.Clear();
в данном месте повторяется два раза , но меняются подписи к осям. Так вот вопрос куда можно вынести эту часть кода, чтобы потом его можно было вызывать скажем 1-2 строчкой. И при необходимости вносить изменения. Так как в программе много таких мест где начинается строить график , только с разными осями, не хотелось бы везде одно и тоже по 100 раз писать.
или хотя бы без изменений, чтобы можно было просто вызывать эту часть кода...

Решение задачи: «Полиморфизм или убрать повторяющиеся части кода»

textual
Листинг программы
  1. public void GraphControl(string nameXAxis, string nameYAxis, string nameTitle, GraphPane pane)
  2.         {
  3.             pane.XAxis.Title.Text = nameXAxis;
  4.             pane.Title.Text = nameTitle;
  5.             pane.YAxis.Title.Text = nameYAxis;
  6.             pane.CurveList.Clear();
  7.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы