Полиморфизм или убрать повторяющиеся части кода - C#
Формулировка задачи:
Здравствуйте люди, помогите можно ли как то вынести в отдельный класс\метод\функцию\интерфейс или хоть куда нибудь , часть когда которая повторяется , но в некоторых частях программы немного меняется. Ну например есть такой код:
Как мы видим часть кода в данном месте повторяется два раза , но меняются подписи к осям. Так вот вопрос куда можно вынести эту часть кода, чтобы потом его можно было вызывать скажем 1-2 строчкой. И при необходимости вносить изменения. Так как в программе много таких мест где начинается строить график , только с разными осями, не хотелось бы везде одно и тоже по 100 раз писать.
private void button3_Click(object sender, EventArgs e) { Class1 objClass1 = new Class1(); if (comboBox2.Text == "Полином Лагранжа") { // Получим панель для рисования GraphPane pane = zedGraphControl1.GraphPane; // Изменим текст надписи по оси X pane.XAxis.Title.Text = "Величина"; // Изменим текст заголовка графика pane.Title.Text = "График"; // Изменим текст по оси Y pane.YAxis.Title.Text = "Напряжение"; // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы pane.CurveList.Clear(); // Создадим список точек PointPairList list_1 = new PointPairList(); PointPairList list_2 = new PointPairList(); int n = 30; double a = -3; double b = 3; double h = (b - a) / (n - 1); // расстояние между узлами // Заполняем список точек for (double x = a; x <= b; x += h) { //добавим в список точку list_1.Add(x, objClass1.F(x)); } objClass1.Fill(a, h); for (double x = a; x <= b; x += h) { //добавим в список точку list_2.Add(x, objClass1.L1(x, objClass1.Node)); } LineItem myCurve1 = pane.AddCurve("Исходная функция", list_1, Color.Blue, SymbolType.None); LineItem myCurve2 = pane.AddCurve("Интерполяционный полином", list_2, Color.Red, SymbolType.None); zedGraphControl1.Invalidate(); } if (comboBox2.Text == "Бета сплайн") { // Получим панель для рисования GraphPane pane = zedGraphControl1.GraphPane; // Изменим текст надписи по оси X pane.XAxis.Title.Text = "Измеряемая величина"; // Изменим текст заголовка графика pane.Title.Text = "График 2"; // Изменим текст по оси Y pane.YAxis.Title.Text = "Время"; // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы pane.CurveList.Clear(); // Создадим список точек PointPairList list = new PointPairList(); double xmin = -50; double xmax = 50; // Заполняем список точек for (double x = xmin; x <= xmax; x += 0.01) { // добавим в список точку list.Add(x, objClass1.interp1(x)); } // Создадим кривую с названием "Sinc", // которая будет рисоваться голубым цветом (Color.Blue), // Опорные точки выделяться не будут (SymbolType.None) LineItem myCurve = pane.AddCurve("Sinc", list, Color.Blue, SymbolType.None); // Вызываем метод AxisChange (), чтобы обновить данные об осях. // В противном случае на рисунке будет показана только часть графика, // которая умещается в интервалы по осям, установленные по умолчанию zedGraphControl1.AxisChange(); // Обновляем график zedGraphControl1.Invalidate(); } }
// Получим панель для рисования GraphPane pane = zedGraphControl1.GraphPane; // Изменим текст надписи по оси X pane.XAxis.Title.Text = "Величина"; // Изменим текст заголовка графика pane.Title.Text = "График"; // Изменим текст по оси Y pane.YAxis.Title.Text = "Напряжение"; // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы pane.CurveList.Clear();
или хотя бы без изменений, чтобы можно было просто вызывать эту часть кода...
Решение задачи: «Полиморфизм или убрать повторяющиеся части кода»
textual
Листинг программы
public void GraphControl(string nameXAxis, string nameYAxis, string nameTitle, GraphPane pane) { pane.XAxis.Title.Text = nameXAxis; pane.Title.Text = nameTitle; pane.YAxis.Title.Text = nameYAxis; pane.CurveList.Clear(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д