Міністерство освіти та науки України



страница1/30
Дата22.06.2019
Размер0.63 Mb.
#107252
ТипЛекция
  1   2   3   4   5   6   7   8   9   ...   30

Міністерство освіти та науки України

Дніпропетровський національний університет ім. О. Гончара

Факультет прикладної математики

Кафедра математичного моделювання



Курс лекцій

з курсу «Java»

Дніпропетровськ

2014 р.

Оглавление


Лекция 1. Введение в ООП 2

Инкапсуляция 2

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

Полиморфизм 3

Примеры 3

Лекция 2. Типы 5

Лекция 3. Операторы 12

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

Целочисленные битовые операторы 15

Приоритеты операторов 21

Лекция 4. Управление выполнением программы 22

Условные операторы 22

Циклы 26

Оператор запятая 28

Лекция 5. Работа со строками 30

Специальный синтаксис для работы со строками 30

Лекция 6. Имена. Пакеты 38

Имена 38


Пакеты 40

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

Соглашения по именованию 50

Лекция 7. Объявление классов 52

Модификаторы доступа 52

Объявление классов 60

Дополнительные свойства классов 71

Лекция 8. Исключения 74

Возникновение исключения 75

Обработка исключения 75

Виды исключений 75

Примеры исключений 76

Лекция 9. Многопоточные приложения 79

Создание потоков 80

Расширение java.lang.Thread 81

Реализация интерфейса java.lang.Runnable 81

Инстанцирование потока 82

Запуск потока 83

Объект синхронизации 85

Запуск и выполнение нескольких потоков 86

Планировщик потоков 88

Состояния потоков и переходы между состояниями 89

Аплет «бегущая строка» 90

Лекция 10. Обзор пакетов и классов JDK 93

Разбор строки 93

Класс Runtime 93

Класс System 94

Класс java.util.Calendar 95

Классы-оболочки для примитивных типов (java.lang.Integer) 95

Класс Property 96

Лекция 11. Графический пользовательский интерфейс 97

Лекция 12. Коллекции объектов 101

Общепринятые правила использования Collection 103

Основные преимущества использования коллекций 104

List 105

Set 108


Queue  110

Map  113


Сортировка и упорядочивание. Интерфейсы Comparable и Comparator 117

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

Алгоритмы коллекций 125

Лекция 13. Generics 137

Ограничения 138

Маски 139

Generic-и и исключения 142

Информация о типах и generic-и 142

Generic-и и унаследованный код 143

Как это работает 143

Что в generic-ах не так 144

Лекция 14. Потоки данных 145

Содержимое каталога файловой системы 145

Копирование файла 145

Ввод с клавиатуры 146

Лекция 15. Пакет java.net 146

Интернет-адрес 146

Составные части адреса 147

Пример соединения с удаленным сервером 147

Серверный класс 147

Клиентский класс 148

Содержимое web странички 148

Лекция 16. Как работает сериализация в Java. Метаклассы 149

Метаклассы 152

Аннотации 153







Лекция 1. Введение в ООП




Инкапсуляция



Инкапсуляция (сокрытие данных) - объединение в одной сущности данных и методов работы с ними.

  • Состояние объекта определяется значениями его полей.

  • Сокрытие данных осуществляется с помощью установки модификаторов, влияющих на видимость членов класса.

  • В языке Java используется несколько уровней сокрытия.



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



Наследование – возможность класса-наследника приобретать признаки класса-предка.
abstract class Animal {

abstract void talk();

}

class Frog extends Animal {

void jump() { //прыгать}

}

class Bird extends Animal {

void fly() {//летать }

}
Класс не может приобретать свойства нескольких других классов через механизм наследования:
//ошибка, разрешено наследоваться только от одного класса.

class FlyingFrog extends Frog, Bird{…}



Полиморфизм



Полиморфизмспособность наследников по-другому реализовывать возможности предков. Объект способен проявлять признаки своего предка.
Экземпляр класса может выступать как экземпляр любого класса-предка данного класса.
class Animal {

void talk(){…};

}

class Dog extends Animal {

void talk() { System.out.println("Woof!"); }

}

class Cat extends Animal {

void talk() { System.out.println("Meow!"); }

}
Экземпляр класса Dog или Cat одновременно является экземпляром класса Animal:

Animal myDog = new Dog();

Animal myCat = new Cat();
Ромбическое наследование
Для передачи свойств сразу от нескольких сущностей был введен новый тип данных – интерфейс. Использую дополнительную сущность, можно добиться того же результата как и при множественном наследовании:
interface Flying {

void fly();

}

class Frog {

void jump() { //прыгать}

}

class Bird implements Flying{

void fly() {//летать }

}

class FlyingFrog extends Frog implements Flying{…} //разрешено

Примеры



Наследование и инкапсуляция
Класс Pixel наследует от класса Point. При этом он расширяет базовый класс, инкапсулируя поле color (цвет), а также переопределяет метод предка clear, добавляя обнуление данного поля.
public class Pixel extends Point {

Color color;

public void clear() {

super.clear();

color = null;

}

}



Полиморфизм (точка и пиксель)
В классе-предке (Point) и классе-наследнике (Pixel) определен метод show. При вызове данного метода выполняется разный код – в зависимомти от того, к объекту какого класса идет обращение.
public class PolyDemo {

public static void main(String args[]) {

Point list[] = new Point[3];

list[0] = new Point(0, 0);

list[2] = new Point(2, 2);

list[1] = new Pixel(1, 1);

for (int i = 0; i < list.length; i++) {

list[i].show();

}

}

}
class Point {

int x, y;

Point(int x, int y){

this.x = x;

this.y = y;

}

void show(){

System.out.println("I'm a Point["+x+","+y+"]");

}

}

class Pixel extends Point{

int color;

final static int defaultColor = 0;

Pixel(int x, int y){

super(x, y);

this.color = defaultColor;

}

Pixel(int x, int y, int c){

super(x, y);

this.color = c;

}

void show(){

System.out.println("I'm a Pixel["+x+","+y+"]"+color);

}

}

Интерфейсы


В интерфейсе KeyboardListener определены 2 метода, принимающие код нажатой клавиши. Класс CustomComponent реализует интерфейс – а значит, обязан раелизовать оба метода интерфейса.
interface KeyboardListener {

public void altKeyPressed(int keyCode);

public char getChar(int keyCode);

}

class CustomComponent implements KeyboardListener{

public void altKeyPressed(int keyCode){

// обработка нажатия клавиши

}

public char getChar(int keyCode){

//преобразование кода клавиши в символ

}

}
CustomComponent customComp = new CustomComponent();

customComp.altKeyPressed(27);

customComp.getChar(KeyEvent.VK_Z);
Использование интерфейса в качестве типа
В сигнатуре метода можно указать интерфейс в качестве типа параметра. Тогда при обращении к методу параметром может выступать объект любого класса, реализующего данный интерфейс.
void handleKeyboard(KeyboardListener kbl, int code) {

System.out.println(kbl.getChar(code));

}




Поделитесь с Вашими друзьями:
  1   2   3   4   5   6   7   8   9   ...   30




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница