Семинар #1 - Введение в Java - Факультета информационных

advertisement
Факультет Информационных Технологий, 2-й курс, II семестр
Курс: Объектно-ориентированное программирование
Семинар №1. Вводное занятие
План
1. Организационные вопросы, обзор заданий, критерии выставления оценок
2. Введение в Java: JVM, JRE, JSDK
3. IDE Eclipse, запуск и интерфейс
4. Создание и настройка Java проекта в Eclipse
5. “Hello world!” на Java в Eclipse
6. Режим отладки в Eclipse
7. Документация Java и помощь в Eclipse
8. Правила оформления кода на языке Java
9. Введение в Java объекты
10. Примитивные типы и wrapper-классы для примитивных типов
11. Полное и короткое имя класса, import/package
12. Класс java.lang.String
13. Класс java.util.Scanner
14. Класс java.lang.Math
Hello world!
public class HelloWorld {
public static void main (String[] args) {
System.out.println("Hello, world");
}
}
Чтение с консоли
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("You inputted: "+scanner.next());
}
}
}
Пример класса
package
ru.nsu.ccfit.anoykin.seminar1;
import java.util.Scanner;
public class Summator {
private static final int SIZE = 5;
private int sum;
public Summator() {
this(0);
}
1
Факультет Информационных Технологий, 2-й курс, II семестр
Курс: Объектно-ориентированное программирование
public Summator(int sum) {
this.sum = sum;
}
public void add(int number) {
sum += number;
}
public int getSum() {
return sum;
}
public static void main(String args[]) {
System.out.println("Input " + SIZE + " numbers:");
Summator summator = new Summator();
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < SIZE; i++) {
System.out.print("Number #"+(i+1)+": ");
summator.add(scanner.nextInt());
}
System.out.println("\nSum is " + summator.getSum());
}
}
Задание 1-1: Создание перспективы в Eclipse
Сделать перспективу с именем Universal, чтобы она выглядела так:
Примечания:
2
Факультет Информационных Технологий, 2-й курс, II семестр
Курс: Объектно-ориентированное программирование
1. Создание перспективы через Window -> Save Perspective As …
2. Поиск нужного View через Window -> Show View -> Other …
Задание 1-2: Решение системы квадратных уравнений
Написать программу решения квадратного уравнения. Коэффициенты уравнения вводятся
с консоли. Программа пишет корни уравнения, либо пишет, что система неразрешима.
Корни уравнения вычисляются как:
X1 = (-b + sqrt(b*b – 4ac)) / 2a
X2 = (-b - sqrt(b*b – 4ac)) / 2a
Примечания:
1. Для ввода/вывода данных с консоли использовать Window -> Show View -> Console
(открывается специальное view)
2. Для вычисления квадратного корня java.lang.Math.sqrt()
3. Для вывода на экран использовать класс System
4. Для считывания данных использовать класс java.util.Scanner
5. Приложение должно лежать в пакете /ru/nsu/ccfit/ФАМИЛИЯ/seminar1/
Задание 1-3: Программа GuessNumber
Реализовать игру “угадай число”. Программа загадывает случайное число в пределах от 1
до 100. Задача игрока - отгадать это число не более чем за восемь попыток. После каждой
попытки программа подсказывает больше загаданное число или меньше предполагаемого.
При проигрыше программа показывает загаданное число.
Примечания:
1. Для генерации случайного числа использовать java.lang.Math.random()
2. Для вывода на экран использовать класс System
3. Для считывания данных использовать класс java.util.Scanner
4. Приложение должно лежать в пакете /ru/nsu/ccfit/ФАМИЛИЯ/seminar1/
FAQ & Best Practices
Как оформить задание для отсылки по e-mail?
1. Отформатировать код:
a. Выбираете проект в Package Explorer (самый верхний элемент в виде
открытой папки)
b. Нажимаете правую клавишу мыши и выбираете Source -> Format
c. Можно отформатировать отдельно один редактируемый файл, используя
Ctr+Shift+F
Не забудьте записать файл после форматирования, например через Ctrl+S
2. Сделать архив (ZIP или RAR) с вашим проектом. Из Eclipse это делается так:
a. Выбираете проект в Package Explorer (самый верхний элемент в виде
открытой папки)
b. Нажимаете правую клавишу мыши и выбираете пункт Export
c. Выбираете General->Archive File и нажимаете Next
d. Задаете путь до файла и параметры экспорта. Затем нажимаете Finish
e. Проверьте, что созданный архив содержит все нужные файлы проекта.
3. Послать письмо на адрес преподавателя
4. Заголовок письма должен соответствовать такому шаблону:
3
Факультет Информационных Технологий, 2-й курс, II семестр
Курс: Объектно-ориентированное программирование
ГРУППА, ФАМИЛИЯ, НОМЕР ЗАДАНИЯ
Например:
Группа 5203, Иванов, Задание 1-2
Group 5203, Ivanov Ivan, Task 1-2
Как настроить Eclipse, чтобы он сразу указывал весь пакет в
директиве import, а не один класс
1. Зайти в Window->Preferences->Java->Code Style->Organize Imports
2. Установить параметр «Number of imports needed for .*» как 1 (вместо 99)
3. Установить параметр «Number of static imports needed for .*» как 1 (вместо 99)
Как правильно оформить конструктор?
Пример правильного оформления (используйте this):
public class Summator {
private int sum;
private int num;
public Summator(int sum, int num) {
this.sum = sum;
this.num = num;
}
}
В Eclipse можно автоматически сгенерить конструктор:
1. В редакторе нажать правую клавишу мыши
2. Выбрать Source -> Generate Constructor Using Fields …
Используйте if else вместо нескольких if
Вот такой код:
if (discriminant < 0) {
System.out.println("There are no solutions");
}
if (discriminant == 0) {
System.out.println("One solution");
}
if (discriminant > 0) {
System.out.println("Two solutions");
}
Лучше оформлять так:
if (discriminant < 0) {
System.out.println("There are no solutions");
} else if (discriminant == 0) {
System.out.println("One solution");
} else {
System.out.println("Two solutions");
}
В Java можно использовать метки (labels) для выхода во
внешний цикл
public class Test {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
4
Факультет Информационных Технологий, 2-й курс, II семестр
Курс: Объектно-ориентированное программирование
TOP: while (true) {
System.out.println("Summator of 10 numbers. Input -1 to
reset. Input -10 to exit.");
int sum = 0;
for (int i = 0; i < 10; i++) {
int tmp = scanner.nextInt();
if (tmp == -1) {
continue TOP; // start external cycle again
} else if (tmp ==-10) {
break TOP; // stop external cycle
} else {
sum += tmp;
}
}
System.out.println("Sum is: " + sum);
}
}
}
Именование методов класса для доступа к полям
Обычно класс содержит только private поля. Для доступа к ним пишут так называемые
setters и getters. Например:
public class Test {
private int fieldOne;
private boolean fieldTwo;
private String str;
public int getFieldOne() {
return fieldOne;
}
public void setFieldOne(int fieldOne) {
this.fieldOne = fieldOne;
}
public boolean isFieldTwo() {
return fieldTwo;
}
public void setFieldTwo(boolean fieldTwo) {
this.fieldTwo = fieldTwo;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
Эти методы надо генерить АВТОМАТИЧЕСКИ через Eclipse:
1. Находясь в редакторе, нажать правую клавишу мыши
2. Выбрать Source -> Generate Getters and Setters …
Обратите внимание, что для boolean переменных создается метод isX(), а не getX().
5
Download