Хелпикс

Главная

Контакты

Случайная статья





Паттерн «Стратегия». public void sort(int[] numbers);. Override. int i, j, first, temp;. if (compare(numbers[j],numbers[first])). temp = numbers[first];. numbers[first] = numbers[i];. numbers[i] = temp;. private SortingStrategy strategy;



Паттерн «Стратегия»

Условие задачи.

Проблема. Необходимо выполнить сортировку массива по выбранному пользователем алгоритму.

Требуется создать программу, которая выполняет сортировку массива чисел/символов/объектов по одному из предложенных алгоритмов.

 

Пояснение к решению задачи

1. Определите интерфейс , включающий метод сортировки

public interface SortingStrategy {

    public void sort(int[] numbers);

boolean compare(int a, int b) {

if(a < b) return true;

else return false; }

}

2. Реализуйте классы конкретных стратегий для различных методов сортировки, например,

public class SelectionSort implements SortingStrategy {

@Override

public void sort(int[] numbers) {

int i, j, first, temp;

for (i = numbers.length - 1; i > 0; i--) {

first = 0;

for (j = 1; j <= i; j++) {

   if (compare(numbers[j],numbers[first]))

     first = j; }

temp = numbers[first];

numbers[first] = numbers[i];

numbers[i] = temp;

}

}

}

 

3. Создайте класс Context для управления выбором конкретной стратегии

public class SortingContext {

private SortingStrategy strategy;

public void setSortingMethod(SortingStrategy strategy) {

this.strategy = strategy; }

public SortingStrategy getStrategy() {

return strategy; }

public void sortNumbers(int[] numbers){

strategy.sort(numbers); }

}

4. Реализуйте графический интерфейс пользователя, отражающий исходный и отсортированный массив, а также кнопки "Заполнить", "Сортировать", "Найти". Для выбора метода сортировки и критерия поиска используйте Переключатели. Включите использование объекта SortingContext в обработчик кнопки "Сортировать".



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.