java осень 2014 занятие 3
DESCRIPTION
Java осень 2014 занятие 3TRANSCRIPT
Углубленное программирование на
Java Занятие 1.3
«Основы языка»
Виталий Чибриков
План лекции
2
1. Наследование
2. Object, Class
3. Примитивные типы
4. Массивы и Строки
5. Size of Object
6. Deploy
Наследование в 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
Наследование в 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
Наследование в 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
Множественное наследование
public class Elefant extends Animal implements Jumpable, Movable{ … }
AnimalMovable
<<interface>>
Elefant
Jumpable
<<interface>>
6
План лекции
7
1. Наследование
2. Object, Class
3. Примитивные типы
5. Size of Object
6. Deploy
4. Массивы и Строки
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)
java.lang.Class
чертеж самолета на бумаге
Понятие «абстрактный самолет»
Понятие «абстрактный чертеж»
самолет
java.lang.Class
Class clazz = getClass();
class Airplane{…}
Airplane plane = new …
9
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()
Основные методы класса 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()
План лекции
12
1. Наследование
2. Object, Class
3. Примитивные типы
5. Size of Object
6. Deploy
4. Массивы и Строки
Примитивные типы
13
bits type type
8 byte boolean
16 short char
32 int float
64 long double
Обертки простых типов
14
boolean, byte, char, short, int, float, long, double
Примитивные типы:
мало памяти
простая структура
Stack
Boolean, Byte, Character, Short, Integer, Float, Long, Double
Обертки простых типов:
наследники от Object
сложные типы
Heap
Boxing и Unboxing
15
Boxing
Unboxing
Character a = ‘a’;
int a = 1 + new Integer(2);
План лекции
16
1. Наследование
2. Object, Class
3. Примитивные типы
5. Size of Object
6. Deploy
4. Массивы и Строки
[]
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 – класс для работы с массивами
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);
План лекции
19
1. Наследование
2. Object, Class
3. Примитивные типы
5. Size of Objects
6. Deploy
4. Массивы и Строки
Size of Object
20
Size of Objects
21
Точный размер объекта зависит от: • Версии java • Издателя (Oracle JDK, open JDK…) • Разрядности ОС • Параметров запуска JVM
Для измерения размера используют «инструменты»
Size of Objects
22
Размер объекта состоит из: • Object header (8 byte) • Размера примитивных типов • Размера ссылок (32 или 64 бита на ссылку)
+ Гранулярность 8 байт
Примеры
23
Oracle JVM (HotSpot), 32 разрядная ОС: • Object – 8 байт • Пустая строка – 40 байт • Массив – начиная с 12 байт
План лекции
24
1. Наследование
2. Object, Class
3. Примитивные типы
5. Size of Objects
6. Deploy
4. Массивы и Строки
Администрирование
25
Для уравления сервером создаем страницу admin
admin?shutdown=1000 – stop сервера через секунду
PORT в параметры
26
Запуск в IDEA:
Конфигурация запуска, «Program arguments»: 8080
Запуск из командной строки:
java –classpath project.jar path.to.Main 8080
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>
Maven – средство сборки
28
Инструкции сборки
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
Сборка и запуск
29
mvn compile
mvn assemble:single
cp ./target/project.jar ./
java –classpath project.jar path.to.Main PORT
Stop server
30
curl http:/localhost:808N/admin?shutdown=1000
Правила РК
31
В каждом РК каждый студент отвечает: • теорию по модулю (5 баллов), • на вопросы по коду (5 баллов) • на вопросы по тестам к коду модуля (5 баллов).
Для разработки проекта студенты могут объединиться в группы по 2-3 человека.На каждом РК группа: • проходит ревью кода (5 баллов) • показывает, что код делает то, что было в задании (5 баллов).
За каждый РК: 15 баллов студент зарабатывает самостоятельно и 10 от групповой работы.
Спасибо за внимание
Виталий Чибриков [email protected]