Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 32 Ad
Advertisement

More Related Content

Slideshows for you (18)

Viewers also liked (20)

Advertisement

Similar to Java осень 2014 занятие 3 (20)

More from Technopark (20)

Advertisement

Recently uploaded (20)

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

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

×