java весна 2014 лекция 1

41
Углубленное программирование на Java Лекция 1 «Введение» Виталий Чибриков

Upload: technopark

Post on 29-Jun-2015

366 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Java весна 2014 лекция 1

Углубленное программирование

на JavaЛекция 1

«Введение»

Виталий Чибриков

Page 2: Java весна 2014 лекция 1

Java для всех!

2

Инструменты каждый пишет сам

100 баллов = отлично = сданы все инструменты

модуль = лекция + лекция и семинар + РК

Ревью кода на github

Последние 4 занятия – разработка игры, по желанию

Углубленное программирование на Java

Особенности курса

Page 3: Java весна 2014 лекция 1

Skype tully_at_work «Кружок любителей Java»

Освой Java за 24 часа

3

SCORM http://www.intuit.ru/studies/courses/3711/953/info

Видео https://tech-mail.ru/learn

Дополнительные материалы и ресурсы

Page 4: Java весна 2014 лекция 1

План лекции

4

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. abstract, interface

6. Object

7. Generics

Page 5: Java весна 2014 лекция 1

История Java

Java ― ОО язык программирования разработанный в 1995г.

Изначально ― платформа для программирования бытовых приборов

Компилляция в байт код и исполнение байт кода в виртуальной машине

Встроенный сборщик мусора

Платформа .Net от Microsoft осована на идеях Java

5

Page 6: Java весна 2014 лекция 1

История успеха

1995 - 2000 ― скрипты для браузера

2000 - 2005 ― приложения для телефонов

6

2005 - 2014 ― сервера

1995 - 2014 ― приложения для бытовых приборов

Page 7: Java весна 2014 лекция 1

Cross-platform

7

Компиллятор ― поставляем исходники, перед стартом сибираем

Интерпретатор ― поставляем скрипты, не эффективное выполнение

«Классические» варианты решения

Собираем в byte-code, интерпретируем «на месте»

Гибридное решение

Page 8: Java весна 2014 лекция 1

JVM для Windows JVM для Linux

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

Приложение

Задумка Java платформы

8

Page 9: Java весна 2014 лекция 1

Написанно один раз – работает везде

Встроенный сборщик мусора

Безопасность исполнения

Ключевые идеи

Результат

Задачи и результат

+ «Переносимые» программисты

- Программы все равно зависят от архитектуры

+ Сборщик мусора устраняет утечки памяти

- Сборщик мусора «всегда» работает в ненужное время

9

Page 10: Java весна 2014 лекция 1

Постоянные улучшения и доработки

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

Большое количество специалистов со знанием Java

Легкость перехода с С++

Большое количество библиотек

Прекрасная документация

Почему Java?

10

Page 11: Java весна 2014 лекция 1

План лекции

11

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. abstract, interface

6. Object

7. Generics

Page 12: Java весна 2014 лекция 1

Углубленное значит «глубже чем»

«Углубленное»

12

Примитивные типы, переполнение примитивных типов

Объекты, классы, наследование, полиморфизм, инкапсуляция

Область видимости переменной, статические переменные

Ветвления и циклы

Преобразования примитивных типов

Интерфейс, реализация интерфейса

Операторы

Стек, куча

private, protected, public

Page 13: Java весна 2014 лекция 1

Платформа Java. Java editions. Java Virtual Machine.

Контейнеры и алгоритмы (Hash, Map, Set, List, Array), Generics.

Многопоточность. Thread Object. Concurrency.

Message System. Address. Abonent.

Frontend. Game Mechanics.

Serialization. I/O. Stream.

Reflection. Annotation.

JDBC. DataSet. DAO. Hibernate.

QA. Tests. Автоматизация тестрования.

Исключение, обработка исключений

«Углубленное»

13

Page 14: Java весна 2014 лекция 1

План лекции

14

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. abstract, interface

6. Object

7. Generics

Page 15: Java весна 2014 лекция 1

Модули учебного сервера

utils

gameMechanics

base

messageSystem

frontend

main

resourceSystem

1.

1.

3.

*.

2. 3.

4.

dbService2.

15

Page 16: Java весна 2014 лекция 1

План лекции

16

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. abstract, interface

6. Object

7. Generics

Page 17: Java весна 2014 лекция 1

Обзор платформы Java

Java Runtime Environment (JRE)

Java Virtual Machine(JVM)

Class Libraries

Запуск приложений

Java Development Kit (JDK)

JRE

Java compiler

IDE ― в состав Java не входит

Создание приложений

17

Page 18: Java весна 2014 лекция 1

Обзор платформы Java

Interpreter

Just-In-Time (JIT) compiler

Byte code verifier

Garbage collector (GC)

JVM

Превращает *.java в *.class

*.class можно собрать в *.jar (zip архив)

Javac

18

Page 19: Java весна 2014 лекция 1

Сборщик мусора

Stack HeapПоиск ненужных объектов

Освобождение памяти

Garbage collector (GC)

19

Page 20: Java весна 2014 лекция 1

Java editions

Стандартная редакция

JVM + библиотека классов

Java SE (Standard Edition)

Java SE

Спецификация

API + runtime environment services

Java EE (Enterprise Edition)

Мобильные телефоны, бытовые приборы

Java ME (Micro Edition)

20

Page 21: Java весна 2014 лекция 1

Класс может быть однозначно идетифицирован по полному имени packageName.directoryName.ClassName

Классы в Java собирают в пакеты (packages)

Пакеты обычно собирают в *.jar файлы (zip архивы)

Имена пакетов и директорий принято начинать с маленькой буквы

Имена классов: MySuperClassName

Имена функций: getMyVariable()

Имена переменных: myVariable

Пакеты не могут иметь циклических зависимостей

Наименования

21

Page 22: Java весна 2014 лекция 1

Анонимный тест

22

Page 23: Java весна 2014 лекция 1

План лекции

23

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. abstract, interface

6. Object

7. Generics

Page 24: Java весна 2014 лекция 1

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

Animal

<<abstract>>

- int weight

+ boolean isDangerous()

# int getWeight()

boolean isPredator()

Jumpable

<<interface>>

boolean canJump()

24

Page 25: Java весна 2014 лекция 1

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

Aminal

<<abstract>>

Jumpable

<<interface>>

Elefant

25

Page 26: Java весна 2014 лекция 1

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

ошибка

26

Page 27: Java весна 2014 лекция 1

AnimalMovable

<<interface>>

Elefant

Jumpable

<<interface>>

27

Page 28: Java весна 2014 лекция 1

План лекции

28

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. abstract, interface

6. Object

7. Generics

Page 29: Java весна 2014 лекция 1

java.lang.Class

29

Page 30: Java весна 2014 лекция 1

java.lang.Class

30

― объект, который представляет в runtime данные о классе объектаClass

Основные методы класса Class

static Class<T> forName(String className)

String getCanonicalName()

Fields[] getField(String name)

Class[] getInterfaces()

Method[] getMethods()

Constructor[] getConstructors()

Page 31: Java весна 2014 лекция 1

Основные методы класса Object

class Object

31

― класс от которого унаследованны все остальные классыclass Object

public Class<?> getClass()

public String toString()

public boolean equals(Object obj)

public int hashCode()

protected Object clone()

Page 32: Java весна 2014 лекция 1

Обертки простых типов

32

boolean, byte, char, short, int, float, long, double

Примитивные типы:

мало памяти

простая структура

Stack

Boolean, Byte, Character, Short, Integer, Float, Long, Double

Обертки простых типов:

наследники от Object

сложные типы

Heap

Page 33: Java весна 2014 лекция 1

Простые типы

33

bits type type

8 byte boolean

16 short char

32 int float

64 long double

Page 34: Java весна 2014 лекция 1

План лекции

34

1. Java

2. Углубленное

4. Платформа Java

3. Программирование

5. abstract, interface

6. Object

7. Generics

Page 35: Java весна 2014 лекция 1

generics (templates)

Generic programming

N алгоритмов, M типов данных. N * M реализаций?

Алгоритмы работают с шаблонами => N реализаций

Универсальные алгоритмы

Примеры синтаксиса

― аглоритмы для типов, которые будут указыны позже

35

Page 36: Java весна 2014 лекция 1

generics vs inheritance

принцип «разновидность чего-то» (is a)

class Ветеринар<T extends Животное> extends Человек

T: Слон, Собака, Мышь

принцип «специализируется на» (of something)

В случае Т: Человек, получаем ветеринара по людям – врача

36

Пример

Шаблон

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

Page 37: Java весна 2014 лекция 1

generics (templates)

37

Типизация значений

Page 38: Java весна 2014 лекция 1

Класс с шаблонным типом

38

Page 39: Java весна 2014 лекция 1

Метод с шаблонным типом

39

Page 40: Java весна 2014 лекция 1

class LongId<T>

40

Page 41: Java весна 2014 лекция 1

Спасибо за внимание

Виталий Чибриков[email protected]