java осень 2014 занятие 3

32
Углубленное программирование на Java Занятие 1.3 «Основы языка» Виталий Чибриков

Upload: technopark

Post on 25-Jun-2015

162 views

Category:

Education


4 download

DESCRIPTION

Java осень 2014 занятие 3

TRANSCRIPT

Page 1: Java осень 2014 занятие 3

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

Java Занятие 1.3

«Основы языка»

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

Page 2: Java осень 2014 занятие 3

План лекции

2

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

2. Object, Class

3. Примитивные типы

4. Массивы и Строки

5. Size of Object

6. Deploy

Page 3: Java осень 2014 занятие 3

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

public abstract class Animal { private int weight;

public Animal(int weight){ this.weight = weight; } public boolean isDangerous(){ return isPredator() || getWeight() > 15; } protected int getWeight(){ return weight; }

abstract boolean isPredator(); }public interface Jumpable { boolean canJump(); }

Animal

<<abstract>>

- int weight

+ boolean isDangerous()

# int getWeight()

boolean isPredator()

Jumpable

<<interface>>

boolean canJump()

3

Page 4: Java осень 2014 занятие 3

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

public class Elefant extends Animal implements Jumpable { private boolean canJump = false;

public Elefant(){ super(200); }

public boolean isPerdator(){ return false; }

public bolean canJump(){ return canJump; } }

Aminal

<<abstract>>

Jumpable

<<interface>>

Elefant

4

Page 5: Java осень 2014 занятие 3

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

public static void main(String[] args) { //Animal animal = new Animal(); Elefant elefant = new Elefant(); boolean isDangerous = elefant.isDangerous(); if(elefant.canJump()) jump(elefant);

Jumpable mouse == null; mouse = new Mouse(); //boolean isMouseDangerous = mouse.isDangerous(); if(mouse.canJump()) jump(mouse); }

public static void jump(Jumpable object){ //Animal animal = object; //boolean isDangerous = object.isDangerous(); - ошибка if(object.canJump()){…} } 5

Page 6: Java осень 2014 занятие 3

Множественное наследование

public class Elefant extends Animal implements Jumpable, Movable{ … }

AnimalMovable

<<interface>>

Elefant

Jumpable

<<interface>>

6

Page 7: Java осень 2014 занятие 3

План лекции

7

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

2. Object, Class

3. Примитивные типы

5. Size of Object

6. Deploy

4. Массивы и Строки

Page 8: Java осень 2014 занятие 3

ClassLoader

8

― часть JVM, которая загружает данные о классахClassloader

Все классы должны быть загружены при старте JVM

При старте JVM работают следующие загрузчики: • Bootstrap class loader (<JAVA_HOME>/jre/lib) • Extensions class loader (<JAVA_HOME>/jre/lib/ext) • System class loader (CLASSPATH)

Page 9: Java осень 2014 занятие 3

java.lang.Class

чертеж самолета на бумаге

Понятие «абстрактный самолет»

Понятие «абстрактный чертеж»

самолет

java.lang.Class

Class clazz = getClass();

class Airplane{…}

Airplane plane = new …

9

Page 10: Java осень 2014 занятие 3

java.lang.Class

10

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

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

static Class<T> forName(String className) String getCanonicalName()  Fields[] getField(String name)  Class[] getInterfaces()  Method[] getMethods()  Constructor[] getConstructors() 

Page 11: Java осень 2014 занятие 3

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

class Object

11

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

public Class<?> getClass()

void myFunction(Object varName) – может «обработать» любой объект

public String toString()

class MyClass{…} == class MyClass extends Object{…}

public boolean equals(Object obj) 

public int hashCode()  

protected Object clone()  

Page 12: Java осень 2014 занятие 3

План лекции

12

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

2. Object, Class

3. Примитивные типы

5. Size of Object

6. Deploy

4. Массивы и Строки

Page 13: Java осень 2014 занятие 3

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

13

bits type type

8 byte boolean

16 short char

32 int float

64 long double

Page 14: Java осень 2014 занятие 3

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

14

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

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

мало памяти

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

Stack

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

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

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

сложные типы

Heap

Page 15: Java осень 2014 занятие 3

Boxing и Unboxing

15

Boxing

Unboxing

Character a = ‘a’;

int a = 1 + new Integer(2);

Page 16: Java осень 2014 занятие 3

План лекции

16

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

2. Object, Class

3. Примитивные типы

5. Size of Object

6. Deploy

4. Массивы и Строки

Page 17: Java осень 2014 занятие 3

[]

17

Массив это объект (наследник от Object) Массив хранит свой размер: (new int[100]).length; Переменная может быть размером массива

int[] arrayInts = new int[100]; String[] arrayStrings = new String[100]; int[] arrayInts = {1, 1, 2, 3, 5};

java.lang.Arrays – класс для работы с массивами

Page 18: Java осень 2014 занятие 3

String

18

char – 16 bit (UTF-16) String – обертка над char[] Immutable: “abc” + “bcd” – создание новой строки

System.out.println("abc"); String cde = "cde"; System.out.println("abc" + cde); String c = "abc".substring(2,3); String d = cde.substring(1, 2);

Page 19: Java осень 2014 занятие 3

План лекции

19

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

2. Object, Class

3. Примитивные типы

5. Size of Objects

6. Deploy

4. Массивы и Строки

Page 20: Java осень 2014 занятие 3

Size of Object

20

Page 21: Java осень 2014 занятие 3

Size of Objects

21

Точный размер объекта зависит от: • Версии java • Издателя (Oracle JDK, open JDK…) • Разрядности ОС • Параметров запуска JVM

Для измерения размера используют «инструменты»

Page 22: Java осень 2014 занятие 3

Size of Objects

22

Размер объекта состоит из: • Object header (8 byte) • Размера примитивных типов • Размера ссылок (32 или 64 бита на ссылку)

+ Гранулярность 8 байт

Page 23: Java осень 2014 занятие 3

Примеры

23

Oracle JVM (HotSpot), 32 разрядная ОС: • Object – 8 байт • Пустая строка – 40 байт • Массив – начиная с 12 байт

Page 24: Java осень 2014 занятие 3

План лекции

24

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

2. Object, Class

3. Примитивные типы

5. Size of Objects

6. Deploy

4. Массивы и Строки

Page 25: Java осень 2014 занятие 3

Администрирование

25

Для уравления сервером создаем страницу admin

admin?shutdown=1000 – stop сервера через секунду

Page 26: Java осень 2014 занятие 3

PORT в параметры

26

Запуск в IDEA:

Конфигурация запуска, «Program arguments»: 8080

Запуск из командной строки:

java –classpath project.jar path.to.Main 8080

Page 27: Java осень 2014 занятие 3

Maven – средство сборки

27

Свойства сборки

<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>

Page 28: Java осень 2014 занятие 3

Maven – средство сборки

28

Инструкции сборки

<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>

Page 29: Java осень 2014 занятие 3

Сборка и запуск

29

mvn compile

mvn assemble:single

cp ./target/project.jar ./

java –classpath project.jar path.to.Main PORT

Page 30: Java осень 2014 занятие 3

Stop server

30

curl http:/localhost:808N/admin?shutdown=1000

Page 31: Java осень 2014 занятие 3

Правила РК

31

В каждом РК каждый студент отвечает:  • теорию по модулю (5 баллов),  • на вопросы по коду (5 баллов)  • на вопросы по тестам к коду модуля (5 баллов).

Для разработки проекта студенты могут объединиться в группы по 2-3 человека.На каждом РК группа:  • проходит ревью кода (5 баллов)  • показывает, что код делает то, что было в задании (5 баллов).

За каждый РК: 15 баллов студент зарабатывает самостоятельно и 10 от групповой работы.

Page 32: Java осень 2014 занятие 3

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

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