Основы языка программирования Java

Содержание

Слайд 2

Компилируемые языки программирования

Компиляция – преобразование текста программы, написанного на языке высокого уровня

Компилируемые языки программирования Компиляция – преобразование текста программы, написанного на языке высокого
(C, C++, Pascal), в набор инструкций, которые может выполнять исполнитель
Скомпилированная программа часто называется байт-кодом

Слайд 3

Компилируемые языки программирования

Плюсы:
Высокая скорость исполнения программы
Отсутствие необходимости в дополнительном программном обеспечения для

Компилируемые языки программирования Плюсы: Высокая скорость исполнения программы Отсутствие необходимости в дополнительном
запуска программы
Минусы:
Привязка к исполнителю

Слайд 4

Компилируемые языки программирования

Компилируемые языки программирования

Слайд 5

Интерпретируемые языки программирования

Интерпретация – анализ текста программы, написанного на языке высокого уровня

Интерпретируемые языки программирования Интерпретация – анализ текста программы, написанного на языке высокого
(JavaScript, PHP), и непосредственное исполнение обнаруженных инструкций
Интерпретатор является исполнителем

Слайд 6

Интерпретируемые языки программирования

Плюсы:
Кроссплатформенность
Минусы:
Для запуска необходима дополнительная программа-интерпретатор
Низкая скорость работы

Интерпретируемые языки программирования Плюсы: Кроссплатформенность Минусы: Для запуска необходима дополнительная программа-интерпретатор Низкая скорость работы

Слайд 7

Интерпретируемые языки программирования

Интерпретируемые языки программирования

Слайд 8

Язык программирования Java

Язык программирования Java

Слайд 9

Область применения

Консольные приложения
Настольные приложения (AWT, Swing)
Апплеты
Мидлеты
Сервлеты

Область применения Консольные приложения Настольные приложения (AWT, Swing) Апплеты Мидлеты Сервлеты

Слайд 10

Отличия от C++

Отсутствие указателей и прямого доступа к памяти
Механизм сборки мусора
Отсутствуют деструкторы
Неотделимость

Отличия от C++ Отсутствие указателей и прямого доступа к памяти Механизм сборки
спецификации класса от реализации
Отсутствие перегрузки операторов

Слайд 11

Отличия от C++

Отсутствие структур и объединений
Отсутствуют шаблоны (templates), вместо них используют обобщения

Отличия от C++ Отсутствие структур и объединений Отсутствуют шаблоны (templates), вместо них
(generics)
Отсутствуют беззнаковые целые числа
Отсутствуют аргументы по умолчанию
Не используются goto и const

Слайд 12

Первая программа

// D:\java\proj\by\vsu\HelloWorld.java
package by.vsu;
public class HelloWorld {
public static void main(String[]
args) {
System.out.println(“Hello

Первая программа // D:\java\proj\by\vsu\HelloWorld.java package by.vsu; public class HelloWorld { public static
World”);
}
}

Слайд 13

Компиляция программы
C:\Users\user> _

Компиляция программы C:\Users\user> _

Слайд 14

Компиляция программы
C:\Users\user> D:
D:> _

Компиляция программы C:\Users\user> D: D:> _

Слайд 15

Компиляция программы
C:\Users\user> D:
D:> cd java\proj
D:\java\proj> _

Компиляция программы C:\Users\user> D: D:> cd java\proj D:\java\proj> _

Слайд 16

Компиляция программы
C:\Users\user> D:
D:> cd java\proj
D:\java\proj> javac by\vsu\HelloWorld.java
D:\java\proj> _

Компиляция программы C:\Users\user> D: D:> cd java\proj D:\java\proj> javac by\vsu\HelloWorld.java D:\java\proj> _

Слайд 17

Запуск программы
C:\Users\user> D:
D:> cd java\proj
D:\java\proj> javac by\vsu\HelloWorld.java
D:\java\proj> java by.vsu.HelloWorld
Hello World
D:\java\proj> _

Запуск программы C:\Users\user> D: D:> cd java\proj D:\java\proj> javac by\vsu\HelloWorld.java D:\java\proj> java

Слайд 18

Ввод данных

// ReadChar.java
public class ReadChar {
public static void main(String[]
args) {
int x;
try

Ввод данных // ReadChar.java public class ReadChar { public static void main(String[]
{
x = System.in.read();
char c = (char) x;
} catch(java.io.IOException e) {}
}
}

Слайд 19

Типы данных

Типы данных

Слайд 20

Целочисленные литералы

23 – десятичное число
012 – восьмеричное число
0x7a – шестнадцатеричное число
тип литералов

Целочисленные литералы 23 – десятичное число 012 – восьмеричное число 0x7a –
по умолчанию int
литерал типа long обозначается L
78L

Слайд 21

Дробные литералы

1.234
0.123E-03
литералы типа double
литерал типа float обозначается F
2.34F

Дробные литералы 1.234 0.123E-03 литералы типа double литерал типа float обозначается F 2.34F

Слайд 22

Символьные литералы

‘a’
‘\123’
‘\u9ae8’
‘\n’
‘\t’

Символьные литералы ‘a’ ‘\123’ ‘\u9ae8’ ‘\n’ ‘\t’

Слайд 23

Идентификаторы

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

Идентификаторы Не могут начинаться с цифры Не могут содержать знаки арифметических и
могут содержать символ ‘#’

Слайд 24

Переменные

int a;
char b = ‘#’;

Переменные int a; char b = ‘#’;

Слайд 25

Область видимости

// операторы (1) – x недоступна
while(a < 10) {
// операторы (2)

Область видимости // операторы (1) – x недоступна while(a // операторы (2)
– x недоступна
int x;
// операторы (3)
if(b > 0) {
// операторы (4)
}
// операторы (5)
}
// операторы (6) – x недоступна

Слайд 26

Арифметические операторы

Арифметические операторы

Слайд 27

Операторы сравнения

Операторы сравнения

Слайд 28

Логические операторы

Логические операторы

Слайд 29

Пример логических операторов

int a = 1, b = 0;
int c = 1,

Пример логических операторов int a = 1, b = 0; int c
d = 1;
a == b & c == d++ // d = 2
a == b && c == d++ // d = 1

Слайд 30

Классы-оболочки

Классы-оболочки

Слайд 31

Иерархия классов-оболочек

Иерархия классов-оболочек

Слайд 32

Математические константы

Math.PI
Math.E

Математические константы Math.PI Math.E

Слайд 33

Математические методы

Math.abs(x);
Math.sqrt(x);
Math.cbsr(x);
Math.pow(x, y);
Math.hypot(x, y);

Математические методы Math.abs(x); Math.sqrt(x); Math.cbsr(x); Math.pow(x, y); Math.hypot(x, y);

Слайд 34

Математические методы

Math.cos(x);
Math.sin(x);
Math.tan(x);

Математические методы Math.cos(x); Math.sin(x); Math.tan(x);

Слайд 35

Математические методы

Math.acos(x);
Math.asin(x);
Math.atan(x);
Math.atan2(y, x);

Математические методы Math.acos(x); Math.asin(x); Math.atan(x); Math.atan2(y, x);

Слайд 36

Математические методы

Math.toDegrees(x);
Math.toRadians(x);

Математические методы Math.toDegrees(x); Math.toRadians(x);

Слайд 37

Математические методы

Math.cosh(x);
Math.sinh(x);
Math.tanh(x);

Математические методы Math.cosh(x); Math.sinh(x); Math.tanh(x);

Слайд 38

Математические методы

Math.exp(x);
Math.log(x);
Math.log10(x);

Математические методы Math.exp(x); Math.log(x); Math.log10(x);

Слайд 39

Математические методы

Math.ceil(x);
Math.floor(x);
Math.round(x);

Математические методы Math.ceil(x); Math.floor(x); Math.round(x);

Слайд 40

Математические методы

Math.random();
Math.min(x, y);
Math.max(x, y);

Математические методы Math.random(); Math.min(x, y); Math.max(x, y);

Слайд 41

Массивы. Объявление массива

<тип> <имя переменной>[];
Или
<тип>[] <имя переменной>;

Массивы. Объявление массива []; Или [] ;

Слайд 42

Пример объявления массивов

int a[];
double[] b;
int a[], b, c[], d;
int[] a, b, c[],

Пример объявления массивов int a[]; double[] b; int a[], b, c[], d;
d;

a

?

Слайд 43

Массивы. Создание массива

new <тип>[<размер>];

Массивы. Создание массива new [ ];

Слайд 44

Пример создания массива

int a[];
...
a = new int[5];
int a[] = new int[5];

a

?

Объект типа
«Массив»

Пример создания массива int a[]; ... a = new int[5]; int a[]

Слайд 45

Обращение к элементу массива

System.out.println(a[6]);
a[4] = 234;

Обращение к элементу массива System.out.println(a[6]); a[4] = 234;

Слайд 46

Заполнение массива

double array[] = new double[10];
for(int i = 0; i < 10;

Заполнение массива double array[] = new double[10]; for(int i = 0; i
i++) {
array[i] = 10 * Math.random();
}

Слайд 47

Вывод массива

for(int i = 0; i < 10; i++) {
System.out.print(array[i]);
System.out.print(‘·’);
}

Вывод массива for(int i = 0; i System.out.print(array[i]); System.out.print(‘·’); }

Слайд 48

Инициализация массива

new <тип>[] {<список значений>}

Инициализация массива new [] { }

Слайд 49

Пример инициализации массива

int a[];
a = new int[] {1, 2, 3};
char b[] =

Пример инициализации массива int a[]; a = new int[] {1, 2, 3};
new char[] {‘1’, ‘2’};
function(new double[] {1.2, 3.4});

Слайд 50

Операции с массивами

int a[] = {1, 2, 3};
int b[] = a;
int c[]

Операции с массивами int a[] = {1, 2, 3}; int b[] =
= {1, 2, 3};
int d[] = {2, 3, 4};

a

b

c

d

1, 2, 3

1, 2, 3

2, 3, 4

Слайд 51

Операции с массивами

a == b // true
a == c // false
a ==

Операции с массивами a == b // true a == c //
d // false

a

b

c

d

1, 2, 3

1, 2, 3

2, 3, 4

Слайд 52

Массив как класс

int a[] = new int[N];
...
int b[] = a.clone(); // a

Массив как класс int a[] = new int[N]; ... int b[] =
== b
// false
...
int M = a.length;
...
a = null;

a

1, 2, 3, …

Слайд 53

Сравнение массивов

int a[] = {/* элементы */};
int b[] = {/* элементы */};
boolean

Сравнение массивов int a[] = {/* элементы */}; int b[] = {/*
isEquals =
a.length == b.length;
if(isEquals) {
for(int i = 0; i < a.length; i++) {
if(a[i] != b[i]) {
isEquals = false;
break;
}
}
}
System.out.println(isEquals);

Слайд 54

Массив массивов

int[] array[];

тип

имя переменной

массив

int[][] array;
или
int array[][];

Массив массивов int[] array[]; тип имя переменной массив int[][] array; или int array[][];

Слайд 55

Создание двумерных массивов

int[][] matrix = new int[56][];
for(int i = 0; i <

Создание двумерных массивов int[][] matrix = new int[56][]; for(int i = 0;
matrix.length;
i++) {
matrix[i] = new int[i+1];
}

Слайд 56

Создание и обработка двумерных массивов

int[][] a = new int[N][M];
for(int i = 0;

Создание и обработка двумерных массивов int[][] a = new int[N][M]; for(int i
i < a.length; i++) {
for(int j = 0;
j < a[i].length;
j++) {
System.out.print(a[i][j]);
System.out.print(‘\t’);
}
System.out.println();
}

Слайд 57

Инициализация двумерных массивов

int[][] a = {
{1, 2, 3, 4},
{5, 6,

Инициализация двумерных массивов int[][] a = { {1, 2, 3, 4}, {5,
7, 8},
{9, 10, 11, 12}
};

Слайд 58

Инициализация двумерных массивов

int[][] a = {
{1},
{2, 3},
{4, 5, 6},

Инициализация двумерных массивов int[][] a = { {1}, {2, 3}, {4, 5,
{7, 8, 9, 10},
{11, 12},
{}
};

Слайд 59

Класс

Имя
Атрибуты, Поля, Переменные
Операции, Методы, Функции

Класс Имя Атрибуты, Поля, Переменные Операции, Методы, Функции

Слайд 60

Принципы ООП

Инкапсуляция
Наследование
Абстракция
Полиморфизм
Раннее связывание
Позднее связывание

Принципы ООП Инкапсуляция Наследование Абстракция Полиморфизм Раннее связывание Позднее связывание

Слайд 61

Описание класса

class ArrayAlgorythms {
int[] array;
void sort(boolean reverse) {
// реализация
}
int max() {
// реализация
return

Описание класса class ArrayAlgorythms { int[] array; void sort(boolean reverse) { //
result;
}
}

Слайд 62

Создание экземпляра класса

ArrayAlgorythms aa =
new ArrayAlgorythms();
aa.array = new int[50];
...
aa.sort(true);
...
int m = aa.max();

Создание экземпляра класса ArrayAlgorythms aa = new ArrayAlgorythms(); aa.array = new int[50];

Слайд 63

Создание экземпляра класса

ArrayAlgorythms aa = null;
aa = new ArrayAlgorythms();
aa = null;

Создание экземпляра класса ArrayAlgorythms aa = null; aa = new ArrayAlgorythms(); aa = null;

Слайд 64

Пакеты

package math.geometry;
class Line {
double A, B, C;
Line() { ... }
}

Пакеты package math.geometry; class Line { double A, B, C; Line() { ... } }

Слайд 65

package graphics.paint;
class Line {
int x1, y1, x2, y2;
Line() { ... }
}

Пакеты

package graphics.paint; class Line { int x1, y1, x2, y2; Line() { ... } } Пакеты

Слайд 66

package main.console;
...
Line a = new Line();
Line b = new Line();

Пакеты

package main.console; ... Line a = new Line(); Line b = new Line(); Пакеты

Слайд 67

package main.console;
...
math.geometry.Line a =
new math.geometry.Line();
graphics.paint.Line b =
new graphics.paint.Line();

Пакеты

package main.console; ... math.geometry.Line a = new math.geometry.Line(); graphics.paint.Line b = new graphics.paint.Line(); Пакеты

Слайд 68

package math.analysis;
import math.geometry.*;
class Parabola {
Line tangent(double x) {
// реализация
}
}

Пакеты

package math.analysis; import math.geometry.*; class Parabola { Line tangent(double x) { // реализация } } Пакеты

Слайд 69

package math.analysis;
import math.geometry.Line;
class Parabola {
Line tangent(double x) {
// реализация
}
}

Пакеты

package math.analysis; import math.geometry.Line; class Parabola { Line tangent(double x) { // реализация } } Пакеты

Слайд 70

Имя класса

math.geometry.Line
полное имя класса
Line
краткое имя класса

Имя класса math.geometry.Line полное имя класса Line краткое имя класса

Слайд 71

Можно не импортировать

Классы из того же пакета
Классы из пакета java.lang

Можно не импортировать Классы из того же пакета Классы из пакета java.lang

Слайд 72

Наследование

class Aaa {
void aaa();
}
class Bbb extends Aaa {
void bbb();
}

Наследование class Aaa { void aaa(); } class Bbb extends Aaa { void bbb(); }

Слайд 73

Aaa x = new Aaa();
x.aaa();
//x.bbb(); ОШИБКА
Bbb y = new Bbb();
y.aaa();
y.bbb();

Наследование

Aaa x = new Aaa(); x.aaa(); //x.bbb(); ОШИБКА Bbb y = new Bbb(); y.aaa(); y.bbb(); Наследование

Слайд 74

Aaa z = new Bbb();
z.aaa();
//z.bbb(); ОШИБКА

Наследование

Aaa z = new Bbb(); z.aaa(); //z.bbb(); ОШИБКА Наследование

Слайд 75

Области видимости

// виден везде
public class ClassA {
}
// виден только в своем пакете
class

Области видимости // виден везде public class ClassA { } // виден
ClassB {
}

Слайд 76

Области видимости

Области видимости

Слайд 77

Примеры областей видимости

private int variable1;
void method1() { ... }
public double variable2;
String variable3;
protected

Примеры областей видимости private int variable1; void method1() { ... } public
void method2() { ... }
protected boolean variable4;

Слайд 78

Модификатор final

Класс
Поле
Метод

Модификатор final Класс Поле Метод

Слайд 79

final class TestA {
}
// ОШИБКА
class TestB extends TestA {
}

Модификатор final

final class TestA { } // ОШИБКА class TestB extends TestA { } Модификатор final

Слайд 80

class TestA {
void methodA() {/* 1 */}
final void methodB() {/* 2 */}
}
class

class TestA { void methodA() {/* 1 */} final void methodB() {/*
TestB extends TestA {
void methodA() {/* 1 */}
// ОШИБКА
void methodB() {/* 2 */}
}

Модификатор final

Слайд 81

class TestA {
final int X = 10;
}

Модификатор final

class TestA { final int X = 10; } Модификатор final

Слайд 82

Модификатор static

class Test {
int x;
static int y;
void methodA() {}
static void methodB() {}
}

Модификатор static class Test { int x; static int y; void methodA()

Слайд 83

Test a = new Test();
a.x = 10; a.y = 20;
a.methodA(); a.methodB();
Test.y = 20;
Test.methodB();

Модификатор

Test a = new Test(); a.x = 10; a.y = 20; a.methodA();
static

Слайд 84

Test a = new Test();
Test b = new Test();
a.y = 20;
System.out.println(b.y); //

Test a = new Test(); Test b = new Test(); a.y =
20

Модификатор static

Слайд 85

Test a = new Test();
a.y = 20;
Test b = new Test();
System.out.println(b.y); //

Test a = new Test(); a.y = 20; Test b = new
20

Модификатор static

Слайд 86

Test.y = 20;
Test a = new Test();
System.out.println(a.y); // 20
Test b = new

Test.y = 20; Test a = new Test(); System.out.println(a.y); // 20 Test
Test();
System.out.println(b.y); // 20

Модификатор static

Слайд 87

Test a = new Test();
a.x = 10; a.y = 20;
a.methodA(); a.methodB();
Test.y = 20;
Test.methodB();

Модификатор

Test a = new Test(); a.x = 10; a.y = 20; a.methodA();
static

Слайд 88

Вызов методов суперкласса

class TestA {
void run() {/*1*/}
}
class TestB extends TestA {
void run()

Вызов методов суперкласса class TestA { void run() {/*1*/} } class TestB
{/*2*/}
void test() {
run();
this.run();
super.run();
}
}

Слайд 89

Конструкторы

class Test {
Test() {
...
}
}

Конструкторы class Test { Test() { ... } }

Слайд 90

class Test {
Test(int x) {
...
}
}

Конструкторы

class Test { Test(int x) { ... } } Конструкторы

Слайд 91

class Test {
Test(int x) {
...
}
Test() {
...
}
}

Конструкторы

class Test { Test(int x) { ... } Test() { ... } } Конструкторы

Слайд 92

class SubTest extends Test {
SubTest() {
super();
}
}

Конструкторы

class SubTest extends Test { SubTest() { super(); } } Конструкторы

Слайд 93

class SubTest extends Test {
SubTest() {
super(34);
}
}

Конструкторы

class SubTest extends Test { SubTest() { super(34); } } Конструкторы

Слайд 94

class Test {
Test(int x) {
...
}
Test() {
this(34);
}
}

Конструкторы

class Test { Test(int x) { ... } Test() { this(34); } } Конструкторы

Слайд 95

Класс Object

Базовый для всех классов в Java
Неявно является родителем класса, даже при

Класс Object Базовый для всех классов в Java Неявно является родителем класса,
отсутствии ключевого слова extends
Содержит несколько стандартных методов

Слайд 96

public class Man {
private String surname, name,
patronymic;
public Man(String surname,

public class Man { private String surname, name, patronymic; public Man(String surname,
String name,
String patronymic) {
this.surname = surname;
this.name = name;
this.patronymic = patronymic;
}

Класс Object

Слайд 97

public String toString() {
return surname + ‘ ’ +
name.charAt(0) + ‘.’ +
patronymic.charAt(0)

public String toString() { return surname + ‘ ’ + name.charAt(0) +
+ ‘.’;
}
}

Класс Object

Слайд 98

Man man = new Man(“Пушкин”,
“Александр”,
“Сергеевич”);
System.out.println(man);
// Пушкин А.С.

Класс Object

Man man = new Man(“Пушкин”, “Александр”, “Сергеевич”); System.out.println(man); // Пушкин А.С. Класс Object

Слайд 99

public class Man {
private String surname, name,
patronymic;
public Man(String surname,

public class Man { private String surname, name, patronymic; public Man(String surname,
String name,
String patronymic) {
this.surname = surname;
this.name = name;
this.patronymic = patronymic;
}

Класс Object

Слайд 100

public boolean equals(Object a) {
if(a instanceof Man) {
Man m = (Man) a;
return

public boolean equals(Object a) { if(a instanceof Man) { Man m =
surname.equals(
m.surname);
}
return false;
}
}

Класс Object

Слайд 101

public boolean equals(Object a) {
if(a instanceof Man) {
Man m = (Man) a;
return

public boolean equals(Object a) { if(a instanceof Man) { Man m =
name.equals(m.name) &&
surname.equals(m.surname);
}
return false;
}

Класс Object

Слайд 102

private int age;
public boolean equals(Object a) {
if(a instanceof Man) {
Man m =

private int age; public boolean equals(Object a) { if(a instanceof Man) {
(Man) a;
return name.equals(m.name) &&
age == m.age;
}
return false;
}

Класс Object

Слайд 103

public int hashCode() {
/* реализация */
}

Класс Object

public int hashCode() { /* реализация */ } Класс Object

Слайд 104

Пример полиморфизма

class Stone {
double weight;
double price;
double cost() {
return price * weight;
}
}

Пример полиморфизма class Stone { double weight; double price; double cost() {

Слайд 105

Пример полиморфизма

class Jewel extends Stone {
double transparent;
double cost() {
return super.cost()
* transparent;
}
}

Пример полиморфизма class Jewel extends Stone { double transparent; double cost() {

Слайд 106

Пример полиморфизма

class RareJewel extends Jewel {
double cost() {
return super.cost()
* Math.log(Math.E
+

Пример полиморфизма class RareJewel extends Jewel { double cost() { return super.cost()
weight);
}
}

Слайд 107

Пример полиморфизма

static Stone generate() {
int t = (int)(3*Math.random());
switch(t) {
case

Пример полиморфизма static Stone generate() { int t = (int)(3*Math.random()); switch(t) {
0:
return new Stone();
case 1:
return new Jewel();
case 2:
return new RareJewel();
}
}

Слайд 108

Пример полиморфизма

Stone[] s = new Stone[25];
for(int i = 0; i < s.length;

Пример полиморфизма Stone[] s = new Stone[25]; for(int i = 0; i
i++){
s[i] = generate();
}
for(...) {
if(s[i].cost() > s[j].cost())
}

Слайд 109

Пример абстрактного класса

public class Circle {
private double radius;
public double area() {
return Math.PI

Пример абстрактного класса public class Circle { private double radius; public double
* radius
* radius;
}
}

Слайд 110

public class Rectangle {
private double width;
private double height;
public double area() {
return width

public class Rectangle { private double width; private double height; public double
* height;
}
}

Пример абстрактного класса

Слайд 111

public class Rectangle
extends Figure {
public double area() {/*...*/}
}
public class Circle

public class Rectangle extends Figure { public double area() {/*...*/} } public
extends Figure {
public double area() {/*...*/}
}

Пример абстрактного класса

Слайд 112

public class Figure {
public double area() {
/* ??? */
}
}

Пример абстрактного класса

public class Figure { public double area() { /* ??? */ } } Пример абстрактного класса

Слайд 113

public class Figure {
abstract public double area();
}

Пример абстрактного класса

public class Figure { abstract public double area(); } Пример абстрактного класса

Слайд 114

abstract public class Figure {
abstract public double area();
}

Пример абстрактного класса

abstract public class Figure { abstract public double area(); } Пример абстрактного класса

Слайд 115

abstract public class A {
abstract public void aaa();
abstract public void bbb();
}

Абстрактные методы

abstract public class A { abstract public void aaa(); abstract public void
и классы

Слайд 116

abstract public class B
extends A {
abstract public void aaa();
public void bbb()

abstract public class B extends A { abstract public void aaa(); public
{
/* реализация */
}
}

Абстрактные методы и классы

Слайд 117

public class C extends B {
public void aaa() {
/* реализация */
}
}

Абстрактные методы

public class C extends B { public void aaa() { /* реализация
и классы

Слайд 118

A x = new A(); // ОШИБКА
B y = new B(); //

A x = new A(); // ОШИБКА B y = new B();
ОШИБКА
C z = new C();

Абстрактные методы и классы

Слайд 119

abstract public class A {
public void aaa() {
/* реализация */
}
public void bbb()

abstract public class A { public void aaa() { /* реализация */
{
/* реализация */
}
}

Абстрактные методы и классы

Слайд 120

Пример абстрактного класса без абстрактных методов

public class Author {
private String surname;
private String

Пример абстрактного класса без абстрактных методов public class Author { private String
name;
private String patronymic;
private String degree;
}

Слайд 121

public class Book {
private String title;
private Author author;
private Integer year;
}

Пример абстрактного класса

public class Book { private String title; private Author author; private Integer
без абстрактных методов

Слайд 122

public class Reader {
private String surname;
private String name;
private String patronymic;
private Long phone;
private

public class Reader { private String surname; private String name; private String
String address;
}

Пример абстрактного класса без абстрактных методов

Слайд 123

public class Usage {
private Reader reader;
private Book book;
private Date issueDay;
private Date returnDay;
}

Пример

public class Usage { private Reader reader; private Book book; private Date
абстрактного класса без абстрактных методов

Слайд 124

public class Person {
private String surname;
private String name;
private String patronymic;
}

Пример абстрактного класса

public class Person { private String surname; private String name; private String
без абстрактных методов

Слайд 125

public class Author extends
Person {
private String degree;
}

Пример абстрактного класса без абстрактных

public class Author extends Person { private String degree; } Пример абстрактного класса без абстрактных методов
методов

Слайд 126

public class Reader extends
Person {
private Long phone;
private String address;
}

Пример абстрактного класса

public class Reader extends Person { private Long phone; private String address;
без абстрактных методов

Слайд 127

abstract public class Person {
private String surname;
private String name;
private String patronymic;
}

Пример абстрактного

abstract public class Person { private String surname; private String name; private
класса без абстрактных методов

Слайд 128

Пример чтения данных

public class BookTxtReader {
public Book[] read() {
/* реализация */
}
}

Пример чтения данных public class BookTxtReader { public Book[] read() { /* реализация */ } }

Слайд 129

public class BookDBReader {
public Book[] read() {
/* реализация */
}
}

Пример чтения данных

public class BookDBReader { public Book[] read() { /* реализация */ } } Пример чтения данных

Слайд 130

abstract public class BookReader {
abstract public Book[] read();
}

Пример чтения данных

abstract public class BookReader { abstract public Book[] read(); } Пример чтения данных

Слайд 131

abstract public class BookReader {
abstract public
Book[] readBooks();
abstract public
Author[] readAuthors();
}

Пример

abstract public class BookReader { abstract public Book[] readBooks(); abstract public Author[]
чтения данных

Слайд 132

abstract public class BookReader {
public Book[] read() {
/* readAuthors() */
/* readBooks() */
}
abstract

abstract public class BookReader { public Book[] read() { /* readAuthors() */
public
Book[] readBooks();
abstract public
Author[] readAuthors();
}

Пример чтения данных

Слайд 133

abstract public class BookReader {
public final Book[] read() {
/* readAuthors() */
/* readBooks()

abstract public class BookReader { public final Book[] read() { /* readAuthors()
*/
}
abstract protected
Book[] readBooks();
abstract protected
Author[] readAuthors();
}

Пример чтения данных

Слайд 134

Пример сортировки

public class ReaderSorter {
public Reader[] sort(
Reader[] readers
) {
/* реализация */
}
}

Пример сортировки public class ReaderSorter { public Reader[] sort( Reader[] readers )

Слайд 135

public class ReaderSorter {
public Reader[] sortByName(
Reader[] readers
) {
/* реализация */
}
public Reader[] sortByAddress(
Reader[]

public class ReaderSorter { public Reader[] sortByName( Reader[] readers ) { /*
readers
) {
/* реализация */
}
}

Пример сортировки

Слайд 136

abstract public
class ReaderComparator {
abstract public int compare(
Reader r1,
Reader r2
);
}

Пример сортировки

abstract public class ReaderComparator { abstract public int compare( Reader r1, Reader

Слайд 137

public class ReaderSorter {
public Reader[] sort(
Reader[] readers,
ReaderComparator comparator
) {
/* начало цикла

public class ReaderSorter { public Reader[] sort( Reader[] readers, ReaderComparator comparator )
*/
if(comparator
.compare(reader[i],
reader[j]) > 0) {
/* обмен */
}
/* конец цикла */
}
}

Пример сортировки

Слайд 138

public class ReaderByNameComparator
extends ReaderComparator {
public int compare(Reader r1,
Reader r2) {
/*

public class ReaderByNameComparator extends ReaderComparator { public int compare(Reader r1, Reader r2)
реализация */
}
}

Пример сортировки

Слайд 139

public class ReaderByAddressComparator
extends ReaderComparator {
public int compare(Reader r1,
Reader r2) {
/*

public class ReaderByAddressComparator extends ReaderComparator { public int compare(Reader r1, Reader r2)
реализация */
}
}

Пример сортировки

Слайд 140

Reader[] readers = /* создание массива */
ReaderSorter sorter = new ReaderSorter();
ReaderComparator comparator;
comparator

Reader[] readers = /* создание массива */ ReaderSorter sorter = new ReaderSorter();
= new ReaderByNameComparator();
sorter.sort(readers, comparator);
/* вывод массива readers */
comparator = new ReaderByAddressComparator();
sorter.sort(readers, comparator);
/* вывод массива readers */

Пример сортировки

Слайд 141

abstract public
class ReaderComparator {
abstract public int compare(
Reader r1,
Reader r2
);
}

Пример сортировки

abstract public class ReaderComparator { abstract public int compare( Reader r1, Reader

Слайд 142

public interface ReaderComparator {
int compare(Reader r1, Reader r2);
}

Пример сортировки

public interface ReaderComparator { int compare(Reader r1, Reader r2); } Пример сортировки

Слайд 143

public class ReaderByNameComparator
implements ReaderComparator {
public int compare(Reader r1,
Reader r2) {
/*

public class ReaderByNameComparator implements ReaderComparator { public int compare(Reader r1, Reader r2)
реализация */
}
}

Пример сортировки

Слайд 144

public class ReaderByAddressComparator
implements ReaderComparator {
public int compare(Reader r1,
Reader r2) {
/*

public class ReaderByAddressComparator implements ReaderComparator { public int compare(Reader r1, Reader r2)
реализация */
}
}

Пример сортировки

Слайд 145

Интерфейсы

public interface A {
int x; // public final static
void test(); // abstract

Интерфейсы public interface A { int x; // public final static void
public
}