🗊 Презентация Узагальнене програмування на мові Java (Generics). Лекція 4

Нажмите для полного просмотра!
Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №1 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №2 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №3 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №4 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №5 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №6 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №7 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №8 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №9 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №10 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №11 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №12 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №13 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №14 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №15 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №16 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №17 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №18 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №19 Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №20

Вы можете ознакомиться и скачать презентацию на тему Узагальнене програмування на мові Java (Generics). Лекція 4. Доклад-сообщение содержит 20 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Мова програмування Java та технології J2EE Модуль “Мова програмування Java” Лекція 4. Узагальнене програмування на мові Java (Generics).
Описание слайда:
Мова програмування Java та технології J2EE Модуль “Мова програмування Java” Лекція 4. Узагальнене програмування на мові Java (Generics).

Слайд 2


Приклад без застосування узагальнень Перевантаження коду змінними типу Object public class Box { private Object object; public void add(Object...
Описание слайда:
Приклад без застосування узагальнень Перевантаження коду змінними типу Object public class Box { private Object object; public void add(Object object) { this.object = object; } public Object get() { return object; } } Перевантаження коду приведенням типів public static void main(String[] args) { Box integerBox = new Box(); // домовимося передавати в // Box значення Integer integerBox.add("10"); // увага – це значення типу String ... Integer someInteger = (Integer)integerBox.get();// помилка //часу виконання } Якщо негаразд із типами - помилка часу виконання java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

Слайд 3


Узагальнення (Generics) Основні класи задач, які потребують застосування узагальнень: Розробка функцій-утиліт для колекцій (пошук, max, min, avg, sum...
Описание слайда:
Узагальнення (Generics) Основні класи задач, які потребують застосування узагальнень: Розробка функцій-утиліт для колекцій (пошук, max, min, avg, sum тощо) Розробка контейнерів для об’єктів різних типів (стек, колекція тощо) Мотивація для generics: Отримувати на етапі компіляції помилки приведення типів Обійтись без приведення типів “вручну” Отримати більш безпечний код, який краще пишеться та читається

Слайд 4


Історія появи узагальнень в Java Узагальнення побачили світ в J2SE 5 (2004р.) Задача - розширити систему типів мови, що широко застосовується і до...
Описание слайда:
Історія появи узагальнень в Java Узагальнення побачили світ в J2SE 5 (2004р.) Задача - розширити систему типів мови, що широко застосовується і до якої висуваються вимоги жорсткої зворотної сумісності Роботу розпочато у 1999р. Деякі деталі із проробки задачі: Специфікація “JSR-014: Adding Generics to the Java Programming Language” розроблялася протягом 1999-2004 Розширення системи типів підстановочними типами (wildcards) здійснено у співпраці Sun та університету м.Орхус (Данія) Цікаво – один із відомих уродженців м.Орхус – Бйорн Страуструп, автор мови C++

Слайд 5


Приклад застосування узагальнень Замість Object застосовуємо “типи-параметри” public class Box { private T t; public void add(T t) { this.t = t; }...
Описание слайда:
Приклад застосування узагальнень Замість Object застосовуємо “типи-параметри” public class Box { private T t; public void add(T t) { this.t = t; } public T get() { return t; } } Не потрібно приводити типи public static void main(String[] args) { Box integerBox = new Box(); integerBox.add("10"); // Помилка компіляції Integer someInteger = integerBox.get(); // Не потрібне приведення // типів } Негаразд із типами - помилка компіляції

Слайд 6


Реалізація узагальнень в Java Це елементи мови Це функціональність компілятора, яка дозволяє виявити певні помилки на стадії компіляції Це не...
Описание слайда:
Реалізація узагальнень в Java Це елементи мови Це функціональність компілятора, яка дозволяє виявити певні помилки на стадії компіляції Це не функціональність JVM Type erasure - На стадії виконання (runtime) уся інформація про узагальнення стирається Через вимоги жорсткої зворотної сумісності – старий байт-код повинен працювати на нових JVM Узагальнення не потребують додаткових ресурсів часу виконання

Слайд 7


Елементи мови, які узагальнюються Що може бути узагальнене Класи але не всі, див. нижче Інтерфейси Методи Конструктори Які типи можуть бути...
Описание слайда:
Елементи мови, які узагальнюються Що може бути узагальнене Класи але не всі, див. нижче Інтерфейси Методи Конструктори Які типи можуть бути параметрами для узагальнення Типи-посилання (класи, інтерфейси, масиви) Які типи не можуть бути параметрами для узагальнення Примітивні типи (але класи-оболонки можуть) Які класи не можуть бути узагальнені Enum Чому? Клас Throwable та його нащадки Обмеження викликане тим, що механізм catch у JVM не працює з параметризованими класами

Слайд 8


Узагальнені типи Узагальнені типи – узагальнені класи та узагальнені інтерфейси public class Box { private T t; public void add(T t) { this.t = t; }...
Описание слайда:
Узагальнені типи Узагальнені типи – узагальнені класи та узагальнені інтерфейси public class Box { private T t; public void add(T t) { this.t = t; } public T get() { return t; } } Box – узагальнений клас, який вводить змінну типу T Декілька змінних типу class Suitecase {…} Успадкування для узагальнених класів/інтерфейсів Suitecase extends Box {…}

Слайд 9


Узагальнені типи. Продовження Box - узагальнений клас із змінною типу T Box - параметризований тип, із параметром (аргументом) Integer Приклади...
Описание слайда:
Узагальнені типи. Продовження Box - узагальнений клас із змінною типу T Box - параметризований тип, із параметром (аргументом) Integer Приклади Vector Seq Collection Pair Iterator - параметризація масивом Виклик конструктора Box integerBox = new Box();

Слайд 10


Узагальнені методи Узагальнений метод class Inspector { public void inspect(T t) { System.out.println(t.getClass().getName()); } } Виклик методу...
Описание слайда:
Узагальнені методи Узагальнений метод class Inspector { public void inspect(T t) { System.out.println(t.getClass().getName()); } } Виклик методу Inspector i = new Inspector(); String s = "Hello"; i.inspect(s); // короткий синтаксис i.inspect(s); // повний синтаксис Узагальнення конструкторів відбувається аналогічно

Слайд 11


Обмеження для змінних типу Подібного немає в C++ extends & extends – означає, що параметр типу повинен успадковувати вказаний клас чи реалізовувати...
Описание слайда:
Обмеження для змінних типу Подібного немає в C++ extends & extends – означає, що параметр типу повинен успадковувати вказаний клас чи реалізовувати вказані інтерфейси & - дозволяє вказати декілька типів, які мають бути успадковані або реалізовані (один клас, декілька інтерфейсів). “,” застосувати не можна, оскільки це роздільник між змінними типу class Inspector { public void inspect(T t) {…} } Inspector i = new Inspector(); String s = "Hello"; i.inspect(s); // помилка компіляції, // оскільки s - це не Number & Comparable

Слайд 12


Whildcards (підстановочні типи). Мотивація public void boxTest(Box n) { ...} boxTest(new Box()); // compile error boxTest(new Box()); // compile error
Описание слайда:
Whildcards (підстановочні типи). Мотивація public void boxTest(Box n) { ...} boxTest(new Box()); // compile error boxTest(new Box()); // compile error

Слайд 13


Whildcards (підстановочні типи). Мотивація Опція 1 public void boxTest(Box n) { ... } boxTest(new Box()); // ok boxTest(new Box()); // ok boxTest(new...
Описание слайда:
Whildcards (підстановочні типи). Мотивація Опція 1 public void boxTest(Box n) { ... } boxTest(new Box()); // ok boxTest(new Box()); // ok boxTest(new Box()); // ok? Опція 2 public void boxTest(Box

Слайд 14


Wildcards details Застосування “?” тільки для тих type arguments в полях/локальних змінних/методах/конструкторах/декларації класів
Описание слайда:
Wildcards details Застосування “?” тільки для тих type arguments в полях/локальних змінних/методах/конструкторах/декларації класів

Слайд 15


Bounded wildcards Bounded wildcards
Описание слайда:
Bounded wildcards Bounded wildcards

Слайд 16


Let’s look to java source
Описание слайда:
Let’s look to java source

Слайд 17


Deep dive to java source
Описание слайда:
Deep dive to java source

Слайд 18


Узагальнене програмування на мові Java (Generics). Лекція 4, слайд №18
Описание слайда:

Слайд 19


Real case of java generic constructor
Описание слайда:
Real case of java generic constructor

Слайд 20


Література The Java Tutorial. James Gosling, Bill Joy, Guy Steele. The Java Language Specification. - Addison Wesley. - 3 edition. - 2005. - 688p. -
Описание слайда:
Література The Java Tutorial. James Gosling, Bill Joy, Guy Steele. The Java Language Specification. - Addison Wesley. - 3 edition. - 2005. - 688p. -



Похожие презентации
Mypresentation.ru
Загрузить презентацию