ТГУ, программирование на Java (практические задания, часть 1)


Узнать стоимость этой работы
30.03.2026, 19:58

Практическое задание 1

Тема 1. Введение в Java технологию

Задание. Разработать первую программу на Java, применить работу с утилитами.

Рекомендации по выполнению задания

1. Ознакомьтесь с группами утилит: java, javac, jar, appletviewer, представленных в описании источников:

- JDK Tools and Utilities:  http://docs.oracle.com/javase/7/docs/technotes/tools/.

- Lesson: Packaging Programs in JAR Files: http://docs.oracle.com/javase/tutorial/deployment/jar/index.html.

- Создание JAR-файла: http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/jar/basics_build.html.

2. Используя текстовый редактор, наберите текст программы «Hello world».

public class HelloWorld {

     public static void main(String[] args) {

             System.out.println("Hello World!");

         }

}

3. Сохраните файл под именем HelloWorld.java. Откомпилируйте файл и запустите его на выполнение. Запишите в отчет команды и приведите скриншот выполнения.

4. Упакуйте *.class и *.java файлы программы HelloWorld в jar-архив. Запустите программу из jar-архива. Запишите в отчет команды и приведите скриншот выполнения.

5. Используя текстовый редактор, наберите текст двух программ, выводящих соответственно «Hello from first», «Hello from second». Откомпилируйте программы. Упакуйте *.class и *.java файлы программы в jar-архив.

6. Запустите сначала первую, а затем вторую программу из jar-архива. Запишите в отчет команды и приведите скриншот выполнения.

7. Создайте jar-архив из двух-трех файлов. Упакуйте все файлы в архив с сохранением структуры каталогов.

8. Представьте отчет, который содержит: текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные программы по выполнению указанных заданий.

 

Практическое задание 2

Тема 2. Язык программирования Java

Задание. Разработайте программы на языке Java, показывающие стандартные битовые операции.

Рекомендации по выполнению задания

1. Выберите IDE и изучите технологию разработки java-приложений по документации.

2. Напишите программу, которая над двумя числами, заданными в шестнадцатеричной системе, выполняет все арифметические операции, а также операции декремента/инкремента (в префиксной и постфиксной форме). Предусмотрите выполнение всех побитовых операций. Вывод результатов должен быть оформлен в форме, показывающей логику работы операций.

3. Напишите программу, которая считывает с клавиатуры три целых числа и выводит на экран:

a) их среднее арифметическое;

b) максимальное из введенных чисел.

Для считывания чисел можно использовать экземпляр класса java.util.Scanner:

import java.util.Scanner;   //импорт класса

public class CalcAverage {

   public static void main (String args[]) {

     Scanner sc = new Scanner (System.in);

     //некоторый код

     int i1 = sc.nextInt();

//некоторый код

4. Напишите программу, которая генерирует массив из не менее чем 100 чисел, заполненных случайными целыми числами на интервале [0;K]. Константа К задается в «теле» программы. Подсчитайте количество простых чисел и чисел, кратных 3. Отсортируйте массив.

Можно для выполнения использовать метод random класса java.lang.Math и класс Arrays.

5. Представьте отчет, который содержит: текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные программы по выполнению указанных заданий.

Все программы следует оформлять в соответствии с Code Convention, при оформлении кода использование комментариев обязательно

 

Практическое задание 3

Тема 3. Объектно-ориентированное программирование в Java

Задание. Напишите программу на языке Java, в которой продемонстрируйте работу основных принципов ООП.

Рекомендации по выполнению задания

1. Разработайте класс для решения квадратных уравнений. Вычисление дискриминанта должен осуществлять вложенный класс. После компиляции объясните структуру class файлов. Проанализируйте использование вложенного класса.

2. Реализуйте игру в кости. Играют N игроков (компьютер в списке последний). Подкидываются одновременно К кубиков. Выигрывает тот, у кого большая сумма очков. Кто выиграл, тот и кидает первым в следующем кону. Игра идет до 7 выигрышей. Начинаете игру вы.

3. Напишите программу «Адрес человека». Есть сущность Человек, которая связана с сущностью Адрес. Считается, что у каждого человека есть только один адрес. Организовать массив объектов Человек (не менее 4) и по массиву:

· осуществить поиск Человека по фамилии;

· осуществить поиск человека по атрибуту адреса;

· вывести людей, родившихся между определенными датами;

· найти самого старого (молодого);

· найти людей, проживающих на одной улице.

Представьте отчет, который содержит: текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные программы по выполнению указанных заданий.

4. Все программы следует оформлять в соответствии с Code Convention, при оформлении кода использование комментариев обязательно.

 

Практическое задание 4

Тема 4. Java Base Libraries. Библиотеки

Задание. Разработать программу с использованием интерфейсов и переопределить методы Java.

Рекомендации по выполнению задания

Напишите программу, реализующую следующую диаграмму классов:

Переопределяемые методы voice() выводят соответствующую строку на консоль.

1. Переработайте задачу про игру в кости под использование интерфейсов.

Играют N игроков (компьютер в списке последний). Подкидываются одновременно К кубиков. Выигрывает тот, у кого большая сумма очков. Кто выиграл, тот и кидает первым в следующем кону. Игра идет до 7 выигрышей. Начинаете игру вы.

Напишите программу, реализующую изображенный класс:

Выполните задание по варианту. Выбор осуществляется по первой букве фамилии.

Классы, реализуемые в задании, не имеют метода main() и перед использованием должны быть инстанциированы (должен быть создан объект класса) в методе main() основного класса.

№ варианта

Задание

А

Создайте интерфейс UsdRubConverter с методами setRate(), convertRubToUsd() и convertUsdToRub(). Реализуйте интерфейс в классе UsdRubConverterImpl. Метод setRate(double rate) устанавливает курс доллара к рублю (изначально 60) равным rate, методы convert принимают на входе значения в рублях/долларах и возвращают конвертированное в доллары/рубли значение (использовать тип double)

Б

Создайте интерфейс Cat с методами feed() и isHungry(). Реализуйте интерфейс в классе CatImpl. Метод isHungry() должен выводить в консоль «I’m hungry, bro!», если до него не было ни одного вызова метода feed(), и «I just want to sleep for a bit, OK?» в противном случае

В

Создайте интерфейс Sleepyс методами sleep(), wakeUp() и ask(). Реализуйте интерфейс в классе SleepyImpl. Метод sleep() устанавливает флаг awake в false, метод wakeUp() в true. Метод ask() печатает в консоль «BOO!», если флаг установлен в true, и «zzz…» в противном случае

Г

Создайте интерфейс Dice с методами roll() и look(). Реализуйте интерфейс в классе DiceImpl. Метод roll() генерирует случайное число от 1 до 6, метод look() отображает последнее сгенерированное число в консоли

Д

Создайте интерфейс Altitude с методами higher(), lower() и howHigh(). Реализуйте интерфейс в классе AltitudeImpl. Метод higher() прибавляет к текущей высоте (изначально высота равна нулю) единицу. Метод lower() вычитает из текущей высоты единицу. Метод howHigh() печатает в консоль «Flying x meters above the ground», если x > 0, «Swimming x meters below the ground», если x < 0. В оставшемся случае метод печатает «Standing on the ground!»

Е, Ё

Создайте интерфейс Oddity с методами setNumber(int x) и isOdd(). Реализуйте интерфейс в классе OddImpl. Метод setNumber(int x) устанавливает текущее число (изначально равное нулю) в x. Метод isOdd() выводит в консоль «число нечетно» либо «число четно» в зависимости от четности установленного числа

Ж, З

Создайте интерфейс ThreeNumbers с методами setX(int value), setY(int value), setZ(int value), getX(), getY(), getZ(), getLessThan(int value). Реализуйте интерфейс в классе ThreeNumbersImpl. Опишите в нем поля x, y и z, а также сеттеры и геттеры для них. Метод printLessThan(int value) печатает в консоль значения переменных x, y, z, меньших value

И, Й

Создайте интерфейс RNG с методами generate() и anyLuck(). Реализуйте интерфейс в классе RNGImpl. Метод generate() генерирует случайное число от 1 до 9. Метод anyLuck() печатает в консоль «Lucky!», если последнее сгенерированное значение равно 7, иначе печатает «No luck…»

К

Создайте интерфейс Runner с методами run() и getDistance(). Реализуйте интерфейс в классе RunnerImpl. Метод run() должен прибавлять к текущей дистанции (изначально равной нулю) число 1 при первом вызове, число 2 при втором, число 3 при третьем и т. д. Метод getDistance() должен печатать текущую дистанцию на экран

Л

Создайте интерфейс ThePriceIsRight с методами setPrice(int price) и checkPrice(int price). Реализуйте интерфейс в классе ThePriceIsRightImpl. Метод setPrice(int price) устанавливает текущую цену (изначально 1000) в price. Метод checkPrice(int price) выводит в консоль «lower», если текущая цена меньше price, «higher», если текущая цена больше price, и «The price is right!», если текущая цена в точности равна price

М

Создайте интерфейс Magic с методами setNumber(int x), doMagic(), int getNumber(). Реализуйте интерфейс в классе MagicImpl. Метод setNumber(int x) устанавливает текущее число в x. int getNumber() возвращает текущее число. doMagic() переставляет цифры числа в обратном порядке

Н, О

Создайте интерфейс Patience с методом hey(). Реализуйте интерфейс в классе PatienceImpl. Метод hey() должен печатать в консоль «Hey there!» первые три раза, которые он вызван. Во все последующие вызовы метод печатает в консоль «You can stop it now…»

П

Создайте интерфейс Black с методами setColor(String color) и isBlack(). Реализуйте интерфейс в классе BlackImpl. Метод setColor(String color) должен устанавливать текущий цвет в color. Метод isBlack() должен печатать в консоль «It is black», если текущий цвет == «black», и «it isn’t black» в противном случае

Р

Создайте интерфейс MyString с методами addLetter() и show(). Реализуйте интерфейс в классе MyStringImpl. Метод addLetter() добавляет в конец текущей строки (изначально текущая строка пуста) символ «a» или «b» (случайно). Метод show() печатает в текущую строку в консоль

С

Создайте интерфейс TwoNumbers с методами setX(), setY(), getDifference(). Реализуйте интерфейс в классе TheNumbersImpl. setX() должен устанавливать значение поля x, setY() – значение поля y. getDifference() печатает на экран абсолютное значение разности x и y

Т

Создайте интерфейс PointAndSegment с методами setPointX(int value), setX1(int value), setX2(int value), isInside(). Реализуйте интерфейс в классе PointAndSegmentImpl. В нем должны присутствовать поля x1, x2 – координаты начала и конца отрезка на прямой Ox, и pointX – координата точки. Методы set присваивают соответствующим переменным значение value. Метод isInside() проверяет, находится ли точка внутри отрезка, и печатает результат проверки в консоль

У, Ф

Создайте интерфейс RestrictedNumber с методами setValue(int value), getValue(). Реализуйте интерфейс в классе RestrictedNumberImpl. Класс должен содержать поле x. setValue(int value) устанавливает полю x значение value. При этом x не должен становиться > 50 или < −50. Если же это происходит, x следует приравнять к 50, либо −50. Метод getValue() печатает значение x в консоль

Х, Ц, Ч

Создайте интерфейс Palindrome с методами setString(String value), isPalindrome(). Реализуйте интерфейс в классе PalindromeImpl. Метод setString(String value) устанавливает значение текущей строки равным value. Метод isPalindrome() выводит в консоль «Строка является палиндромом», если текущая строка им является, либо «Строка не является палиндромом» в противном случае. Палиндром – строка, читающаяся одинаково как слева направо, так и справа налево

Ш, Щ, Ы

Создайте интерфейс ThreeNumbers с методами setX(int value), setY(int value), setZ(int value), getX(), getY(), getZ(), sort(). Реализуйте интерфейс в классе ThreeNumbersImpl. В нем должны присутствовать поля x, y и z, а также сеттеры и геттеры для них. Метод sort() упорядочивает значения по неубыванию (x – наименьшее, y – среднее, z – наибольшее)

Э, Ю, Я

Создайте интерфейс Accumulate с методами add(int x) и show(). Реализуйте интерфейс в классе AccumulateImpl. Метод add(int x) должен добавлять к текущему числу (изначально равному 0) число x, метод show() выводить текущее число в консоль

Представьте отчет, который содержит: текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные программы по выполнению указанных заданий.

Все программы следует оформлять в соответствии с Code Convention, при оформлении кода использование комментариев обязательно.

 

Практическое задание 5

Тема 5. Обработка строк на Java

Задание. Разработайте программу, демонстрирующую правила обработки строк в java.

Рекомендации по выполнению задания

1. Разработайте программу формирующую инструкцию SQL, которая вставляет строки в таблицу T_GroupSelected <id_Student, firstName, lastName, id_Group> из таблицы T_Student<id_Student, firstName, lastName, id_Group, dolgCount > тех студентов, которые относятся к некоторой группе (строковый параметр) и количество долгов (целочисленный параметр) которых превышает заданное значение.

В инструкции SQL строковые значения должны обрамляться одинарными кавычками.

2. Разработайте класс Person, в котором имеется функция, возвращающая Фамилию И.О. Функция должна учитывать возможность отсутствия значений в полях Имя и Отчество. Программу оптимизируйте с точки зрения быстродействия.

3. Доработайте класс адреса, который из полученной строки формата "Страна[d] Регион[d] Город[d] Улица[d] Дом[d] Корпус[d] Квартира" ([d] – разделитель, например, «запятая») выбирает соответствующие части и записывает их в соответствующие поля класса Address.

Предусмотрите две реализации этого метода:

· разделитель – только запятая (использовать метод split());

· разделитель – любой из символов ,.;- (класс StringTokenizer).

Необходимо помнить, что в начале и конце разобранной части адреса не должно быть пробелов. Все поля адреса строковые.

Разработайте проверочный класс не менее чем на четыре адресных строки.

4. Реализуйте класс Shirt:

Метод toString() выводит объяснение и значение полей построчно.

Дан также строковый массив:

shirts[0] = "S001,Black Polo Shirt,Black,XL";

shirts[1] = "S002,Black Polo Shirt,Black,L";

shirts[2] = "S003,Blue Polo Shirt,Blue,XL";

shirts[3] = "S004,Blue Polo Shirt,Blue,M";

shirts[4] = "S005,Tan Polo Shirt,Tan,XL";

shirts[5] = "S006,Black T-Shirt,Black,XL";

shirts[6] = "S007,White T-Shirt,White,XL";

shirts[7] = "S008,White T-Shirt,White,L";

shirts[8] = "S009,Green T-Shirt,Green,S";

shirts[9] = "S010,Orange T-Shirt,Orange,S";

shirts[10] = "S011,Maroon Polo Shirt,Maroon,S";

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

5. Разработайте класс, который получает строковое представление телефонного номера в одном из двух возможных строковых форматов:

+<Код страны><Номер 10 цифр>, например “+79175655655” или “+104289652211”

или

8<Номер 10 цифр> для России, например “89175655655”

и преобразует полученную строку в формат:

+<Код страны><Три цифры>–<Три цифры>–<Четыре цифры>

6. Предоставьте отчет, который содержит: текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные программы по выполнению указанных заданий.

Все программы следует оформлять в соответствии с Code Convention, при оформлении кода использование комментариев обязательно.

 

Практическое задание 6

Тема 6. Работа с датой и временем в Java

Вопросы для обсуждения:

1. Какие классы и интерфейсы Java используются для работы с датой и временем?

2. Что такое метка времени (timestamp) и как ее представлять в Java?

3. Как получить текущую дату и время в Java?

4. Как создать объект Date и Calendar для определенной даты и времени?

5. Как форматировать дату и время в строку и наоборот с использованием класса SimpleDateFormat?

6. Что такое временные интервалы (durations) и периоды (periods) в Java, и как их использовать с классом Duration и Period?

7. Какие возможности предоставляет Java 8 и выше для работы с датой и временем, включая классы LocalDate, LocalTime и LocalDateTime?

8. Как работать с часовыми поясами и временем в разных часовых поясах с использованием класса ZoneId и ZonedDateTime?

9. Как рассчитать разницу между двумя датами и временем в Java?

10. Как управлять операциями по сравнению и сортировкой дат и времени в Java?

Методические материалы к занятию: 

1. Для изучения данной темы необходимо изучить материалы электронного учебника.

2. Необходимо выполнить тестовые задания, которые закрепят освоения основных вопросов по данной теме.

 

Практическое задание 7

Тема 7. Коллекции в Java. Java Collection

Задание. Разработайте программный код, демонстрирующий применение технологии Java Collection Framework.

Рекомендации по выполнению задания

1. Разработайте класс Person для хранения даты рождения, напишите метод toString(), разработайте метод, возвращающий строковое представление даты рождения по вводимому в метод формату даты (например, короткий, средний и полный формат даты).

2. Напишите код, который формирует объекты Date и Calendar по следующим данным, вводимым пользователем:

<Год><Месяц><Число>

<Часы[1]><минуты>

Напишите проверочный класс.

3. Проведите частотный анализ слов и символов из первой строки (строки выбираются произвольно). Определите символы, которые:

· входят и в первую, и во вторую строку,

· входят в первую и не входят во вторую,

· содержатся хотя бы в одной строке.

Для обозначенных заданий осуществите вывод по следующим параметрам:

· символы должны выводиться в обычном порядке;

· символы должны выводиться в обратном порядке;

· символы должны выводиться в порядке возрастания циклического сдвига влево на n разрядов хеш-функции символа.

4. Разработайте класс, реализующий простое бинарное дерево. Реализуйте прямой, обратный и центрированный обход дерева. Рассчитайте длину дерева. Объясните структуру разработанных классов.

5. Представьте отчет, который содержит: текст программного кода выполненных заданий и скрин результатов работы. Приложите к отчету скомпилированные программы по выполнению указанных заданий.

Все программы следует оформлять в соответствии с Code Convention, при оформлении кода использование комментариев обязательно.



Узнать стоимость этой работы