Пример первой части

Формулировка первой части задания

  1. создайте файл Фамилия_группа_1.java, подставив свою фамилию и номер группы (например, Ivanov_525_1.java).
  2. напишите там публичный класс Фамилия_группа_1, содержащий указанный ниже статический метод.
  3. напишите в классе Фамилия_группа_1 заголовок этого метода.
  4. напишите в классе Фамилия_группа_1 предусловие и постусловие этого метода, точно следуя приведенным ниже требованиям.
  5. напишите в файле Фамилия_группа_1.java непубличный класс Stage1Tests.
  6. напишите в классе Stage1Tests заголовки, тела и контракты указанных ниже методов, вызывающих статический метод класса Фамилия_группа_1.
  7. проверьте, что инструмент Krakatoa успешно доказывает корректность методов класса Stage1Tests относительно контракта статического метода класса Фамилия_группа_1. Исправьте найденные ошибки.

Вариант

public static void reverse(int[] data, int n, int m);

Требования на метод reverse:

  1. принимает на вход не-null ссылку на массив и два индекса.

  2. индекс n не должен быть больше индекса m.

  3. массив не должен быть пустым.

  4. метод reverse должен инвертировать порядок элементов массива data от n до m включительно.

  5. остальные элементы массива data метод reverse не должен менять.

Методы класса Stage1Tests:

  1. метод public void test01(int[] data) получает на вход не-null ссылку на массив, причем длина массива равна 1. Метод test01 вызывает reverse(data, 0, 0) и заканчивается. Постусловием test01 является требование, что массив data не изменился.

  2. метод public void test02(int[] data, int n) получает на вход не-null ссылку на непустой массив и индекс n в этом массиве. Метод test02 вызывает reverse(data, n, n) и заканчивается. Постусловием test02 является требование, что массив data не изменился.

  3. метод public void test03(int[] data) получает на вход не-null ссылку на массив, причем длина массива больше 1. Метод test03 вызывает reverse(data, 0, 1) и заканчивается. Постусловием test03 является требование, что нулевой элемент массива data после метода равно первому элементу до вызова, а первый элемент после вызова - нулевому элементу до вызова.

  4. метод public void test04(int[] data, int n, int m) получает на вход не-null ссылку на массив, причем длина массива больше m, а n больше 0 и меньше m. Метод test04 вызывает reverse(data, n, m) и заканчивается. Постусловием test04 является требование, что нулевой элемент массива data после метода равен нулевому элементу до вызова и последний элемент массива data после метода равен последнему элементу до вызова.

Одно из возможных решений этого задания можно найти в этом файле (крайне рекомендуется сначала сделать это задание самостоятельно, а потом сравнить свое решение с указанным здесь).

Последнее изменение: среда, 20 ноября 2013, 21:29