Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Готовые отчеты (2020) / Java. Лабораторная работа 1.pdf
Скачиваний:
81
Добавлен:
29.01.2021
Размер:
925.27 Кб
Скачать

Федеральное агентство связи ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

Факультет инфокоммуникационных сетей и систем Кафедра программной инженерии и вычислительной техники

ЛАБОРАТОРНАЯ РАБОТА №1

по дисциплине «Разработка Java-приложений управления телекоммуникациями»

Выполнил: студент 3-го курса дневного отделения группы ИКПИ-85

Коваленко Леонид Александрович Преподаватель:

доцент кафедры ПИиВТ Белая Татьяна Иоанновна

Санкт-Петербург

2020

Цель работы

Ознакомиться со структурой исходного кода на Java, изучить особенности областей видимости и использования пакетов.

Ход работы

Задание №1.

Запустим компилятор javac без параметров и ознакомимся с форматом задания его опций (рис. 1, табл. 1).

Рисунок 1 — Вывод javac в консоли при запуске без параметров

Использование: javac [<опции>] <файл(-ы) с расширением .java>.

Таблица 1 — Опции javac

Опция

 

Описание опции

 

-g

Создать всю отладочную информацию.

-g:none

Не генерировать отладочную информацию.

-g:{lines,vars,source}

Создавать только некоторую отладочную информацию.

-nowarn

Не генерировать предупреждений.

 

-verbose

Выводить сообщения о том, что делает компилятор.

-deprecation

Отобразить расположения областей исходных файлов,

в которых используются устаревшие API.

 

-classpath <path>

Где найти файлы классов пользователей и обработчики

-cp <path>

аннотаций.

 

 

-sourcepath <path>

Где искать исходные файлы ввода.

 

-bootclasspath <path>

Переопределить

расположение

файлов классов

начальной загрузки.

 

-extdirs <dirs>

Переопределить

расположение

установленных

расширений.

 

 

 

 

 

-endorseddirs <dirs>

Переопределить путь к одобренным стандартам.

-proc:{none,only}

Выполняется обработка и / или компиляция аннотаций.

-processor

Имена запускаемых обработчиков аннотаций; обходит

<class1>[,<class2>,<cla

ss3>...]

процесс обнаружения по умолчанию.

 

2

-processorpath <path>

Где искать обработчики аннотаций.

 

 

-parameters

Создание

метаданных для

отражения

параметров

метода.

 

 

 

 

 

 

 

 

 

 

 

 

 

-d <directory>

Где разместить сгенерированные файлы классов.

-s <directory>

Где разместить сгенерированные исходные файлы.

-h <directory>

Где разместить сгенерированные файлы собственных

заголовков.

 

 

 

 

 

 

 

 

 

 

 

-implicit:{none,class}

Следует ли создавать файлы классов для файлов с

неявной ссылкой.

 

 

 

 

 

-encoding <encoding>

Указание кодировки символов, используемой в

исходных файлах.

 

 

 

 

 

-source <release>

Обеспечить совместимость

исходного

кода с

указанным выпуском.

 

 

 

 

 

 

 

 

 

-target <release>

Создание

файлов

классов

для конкретной

версии

виртуальной машины.

 

 

 

 

 

 

 

 

 

-profile <profile>

Указание профиля, в котором доступен используемый

API.

 

 

 

 

 

 

 

 

 

 

 

 

 

-version

Информация о версии.

 

 

 

 

-help

Вывод краткого обзора стандартных опций.

 

 

-Akey[=value]

Параметры для передачи обработчикам аннотаций.

-X

Вывод краткого обзора нестандартных опций.

 

-J<flag>

Установка

флага

<flag>

непосредственно

системе

времени выполнения.

 

 

 

 

 

 

 

 

 

-Werror

Прекращение

компиляции

при

появлении

предупреждений.

 

 

 

 

 

 

 

 

 

 

 

@<filename>

Чтение параметров и имен файлов из файла.

 

 

Запустим программу java без параметров и ознакомимся с форматом

задания опций запуска виртуальной машины Java — JVM (рис. 2, табл. 2).

Рисунок 2 — Вывод java в консоли при запуске без параметров

Использование: java [<опции>] <файл с расширением .class> [<args>]. Также: java [<опции>] -jar <файл с расширением .jar> [<args>].

3

Таблица 2 — Опции java

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Опция

 

 

Описание опции

 

 

 

-d32

Использовать

32-битную

модель

данных,

если

она доступна.

 

 

 

 

 

 

 

 

 

 

 

 

 

-d64

Использовать

64-битную

модель

данных,

если

она доступна.

 

 

 

 

 

 

 

 

 

 

 

 

 

-server

Выбрать «серверную» ВМ (по умолчанию).

 

-zero

Выбрать «нулевую» ВМ.

 

 

 

 

 

-dcevm

Выбрать виртуальную машину «dcevm».

 

 

-cp <class search path of

 

 

 

 

 

 

 

 

directories and zip/jar

Разделенный список каталогов, архивов JAR и

files>

-classpath <class search

архивов ZIP для поиска файлов классов.

 

 

path of directories and

 

 

 

 

 

 

 

 

zip/jar files>

 

 

 

 

 

 

 

 

-D<name>=<value>

Установить системное свойство.

 

 

 

-verbose:[class|gc|jni]

Включить подробный вывод.

 

 

 

-version

Вывод версии продукта и выход.

 

 

 

 

Предупреждение: эта функция устарела и будет

-version:<value>

удалена в следующем выпуске.

 

 

 

 

Требование указанной версии для запуска.

 

-showversion

Вывод версии продукта и продолжение.

 

 

 

Предупреждение: эта функция устарела и будет

-jre-restrict-search | -

удалена в следующем выпуске.

 

 

 

no-jre-restrict-search

Включить / исключить частные JRE пользователя

 

в поиске версий.

 

 

 

 

 

-? -help

Вывод этого справочного сообщения.

 

 

-X

Вывод справки по нестандартным опциям.

 

-

 

 

 

 

 

 

 

 

ea[:<packagename>...|:<cla

Включить

утверждения

с

заданной

степенью

ssname>]

-

детализации.

 

 

 

 

 

 

enableassertions[:<package

 

 

 

 

 

 

name>...|:<classname>]

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

da[:<packagename>...|:<cla

Отключить

утверждения

с

указанной

степенью

ssname>]

-

детализации.

 

 

 

 

 

 

disableassertions[:<packag

 

 

 

 

 

 

ename>...|:<classname>]

 

 

 

 

 

 

 

 

-esa | -

Включить системные assertions.

 

 

 

enablesystemassertions

 

 

 

-dsa | -

Отключить системные assertions.

 

 

 

disablesystemassertions

 

 

 

-

Загрузить

собственную

 

библиотеку

агента

agentlib:<libname>[=<optio

 

ns>]

<libname>.

 

 

 

 

 

 

 

-

Загрузить собственную библиотеку агента по

agentpath:<pathname>[=<opt

ions>]

полному пути.

 

 

 

 

 

 

-

Загрузить агент языка программирования Java,

javaagent:<jarpath>[=<opti

ons>]

см. java.lang.instrument.

 

 

 

 

 

4

 

 

 

 

 

-splash:<imagepath>

Отображение

заставки

с

указанным

изображением.

 

 

 

 

 

 

 

Задание №2.

Создадим файл MyFirstProgram.java, содержащий исходный код пустого класса с именем MyFirstClass. Откомпилируем его с помощью компилятора javac. Запустим полученный файл класса MyFirstClass.class (рис. 3).

Рисунок 3 — Компиляция и запуск с ошибкой На вход компилятора нужно подавать имя файла с расширением, а на

вход JVM — без расширения.

Ошибка, описанная в выводе, указывает на то, что главный метод не был найден в классе MyFirstClass. Его нужно добавить как «public static void main(String[] s)». Внутри этого метода добавим команду вывода строки «Hello world!!!», используя статический метод println статического экземпляра out класса PrintStream в классе System (рис. 4).

Рисунок 4 — Компиляция и запуск без ошибки, вывод «Hello world!!!» Задание №3.

Заменим код метода main() на следующий:

for (int i = 0; i < args.length(); ++i) System.out.println(args[i]);

Откомпилируем и запустим программу, добавив в командную строку ряд аргументов (рис. 5).

5

Рисунок 5 — Компиляция и запуск программы, выводящей аргументы командной строки

Как видно, каждый аргумент выводится с новой строки. Задание №4.

В том же файле MyFirstProgram.java после определения класса MyFirstClass добавим определение второго класса MySecondClass, реализующего следующую функциональность:

два приватных поля типа int;

методы для получения (геттеры) и модификации (сеттеры) значений;

конструктор, создающий объект и инициализирующий его поля;

методы с возвращающим типом int, реализующие над этими числами действия.

Список действий над числами: 1. Сложение; 2. Вычитание; 3. Умножение; 4. Деление;

5. Взятие остатка от деления;

6. Побитовое «И»;

7. Побитовое «ИЛИ»;

8. Побитовое «Исключающее ИЛИ»;

9. Выбор максимального из чисел;

10. Выбор минимального из чисел. Код программы представлен в табл. 3.

6

Таблица 3 — Код MyFirstProgram.java

class MyFirstClass { // Точка входа

public static void main(String[] args) { MySecondClass obj = new MySecondClass(0, 0); for (int i = 1; i <= 4; ++i) {

obj.setA(i);

for (int j = 1; j <= 4; ++j) { obj.setB(j);

System.out.println("Numbers: " + obj.getA() + ", " +

obj.getB());

System.out.println("Add: " + obj.add()); System.out.println("Sub: " + obj.sub()); System.out.println("Mul: " + obj.mul()); System.out.println("Div: " + obj.div()); System.out.println("Mod: " + obj.mod()); System.out.println("And: " + obj.and()); System.out.println("Or: " + obj.or() ); System.out.println("Xor: " + obj.xor()); System.out.println("Max: " + obj.max()); System.out.println("Min: " + obj.min() + "\n");

}

}

}

}

class MySecondClass {

// Конструктор с параметрами

public MySecondClass(int operandA, int operandB) { this.operandA = operandA;

this.operandB = operandB;

}

//Метод для получения значения первого операнда public int getA() {

return operandA;

}

//Метод для получения значения второго операнда public int getB() {

return operandB;

}

//Метод для модификации значения первого операнда public void setA(int operandA) {

this.operandA = operandA;

}

//Метод для модификации значения второго операнда public void setB(int operandB) {

this.operandB = operandB;

}

//Сложение двух операндов

public int add() {

return operandA + operandB;

}

//Вычитание двух операндов public int sub() {

return operandA - operandB;

}

//Умножение двух операндов public int mul() {

return operandA * operandB;

}

//Деление двух операндов public int div() {

return operandA / operandB;

}

7

//Взятие остатка от деления public int mod() {

return operandA % operandB;

}

//Побитовое "И"

public int and() {

return operandA & operandB;

}

//Побитовое "ИЛИ" public int or() {

return operandA | operandB;

}

//Побитовое "Исключающее ИЛИ" public int xor() {

return operandA ^ operandB;

}

//Выбор максимального из чисел public int max() {

return operandA > operandB ? operandA : operandB;

}

//Выбор минимального из чисел

public int min() {

return operandA < operandB ? operandA : operandB;

}

// Два приватных поля: операнды private int operandA, operandB;

}

Вывод программы представлен в табл. 4 (слева-направо, сверху-вниз). Таблица 4 — Вывод программы

Numbers: 1, 1

Numbers: 1, 2

Numbers: 1, 3

Numbers: 1, 4

Add: 2

Add: 3

Add: 4

Add: 5

Sub: 0

Sub: -1

Sub: -2

Sub: -3

Mul: 1

Mul: 2

Mul: 3

Mul: 4

Div: 1

Div: 0

Div: 0

Div: 0

Mod: 0

Mod: 1

Mod: 1

Mod: 1

And: 1

And: 0

And: 1

And: 0

Or: 1

Or: 3

Or: 3

Or: 5

Xor: 0

Xor: 3

Xor: 2

Xor: 5

Max: 1

Max: 2

Max: 3

Max: 4

Min: 1

Min: 1

Min: 1

Min: 1

Numbers: 2, 1

Numbers: 2, 2

Numbers: 2, 3

Numbers: 2, 4

Add: 3

Add: 4

Add: 5

Add: 6

Sub: 1

Sub: 0

Sub: -1

Sub: -2

Mul: 2

Mul: 4

Mul: 6

Mul: 8

Div: 2

Div: 1

Div: 0

Div: 0

Mod: 0

Mod: 0

Mod: 2

Mod: 2

And: 0

And: 2

And: 2

And: 0

Or: 3

Or: 2

Or: 3

Or: 6

Xor: 3

Xor: 0

Xor: 1

Xor: 6

Max: 2

Max: 2

Max: 3

Max: 4

Min: 1

Min: 2

Min: 2

Min: 2

Numbers: 3, 1

Numbers: 3, 2

Numbers: 3, 3

Numbers: 3, 4

Add: 4

Add: 5

Add: 6

Add: 7

Sub: 2

Sub: 1

Sub: 0

Sub: -1

Mul: 3

Mul: 6

Mul: 9

Mul: 12

Div: 3

Div: 1

Div: 1

Div: 0

Mod: 0

Mod: 1

Mod: 0

Mod: 3

And: 1

And: 2

And: 3

And: 0

Or: 3

Or: 3

Or: 3

Or: 7

Xor: 2

Xor: 1

Xor: 0

Xor: 7

Max: 3

Max: 3

Max: 3

Max: 4

8