Презентация Generics. Классы-оболочки онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Generics. Классы-оболочки абсолютно бесплатно. Урок-презентация на эту тему содержит всего 51 слайд. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Generics. Классы-оболочки
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:51 слайд
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:846.00 kB
- Просмотров:54
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№2 слайд
![Классы-оболочки В языке Java](/documents_6/83cebb264921925ce7109099ea24180f/img1.jpg)
Содержание слайда: Классы-оболочки
В языке Java существуют классы-оболочки, которые являются объектным представлением восьми примитивных типов. Все классы-оболочки являются immutable. Автоупаковка и распаковка позволяют легко конвертировать примитивные типы в их соответствующие классы-оболочки и наоборот.
№5 слайд
![Зачем нужны оболочки](/documents_6/83cebb264921925ce7109099ea24180f/img4.jpg)
Содержание слайда: Зачем нужны оболочки
Разработчиками языка Java было принято решение отделить примитивные типы и классы-оболочки, указав при этом следующее:
Используйте классы-обёртки, когда работаете со стандартными коллекциями
Используйте примитивные типы для того, чтобы ваши программы были максимально просты
Ещё одним важным моментом является то, что примитивные типы не могут быть null, а классы-оболочки — могут. Также классы-оболочки могут быть использованы для достижения полиморфизма.
№7 слайд
![Обобщения generics Нередко,](/documents_6/83cebb264921925ce7109099ea24180f/img6.jpg)
Содержание слайда: Обобщения (generics)
Нередко, создаваемые разработчиками алгоритмы и коллекции могут быть успешно использованы для разных типов данных без какого-либо изменения. Например, не зависят от типа данных алгоритмы поиска и сортировки, а класс List пригодился бы как для хранения целых чисел, так и для хранения объектов типа Student. Чтобы не создавать однообразные реализации для каждого типа данных, в языке Java начиная с версии SE5.0 были введены обобщения, или обобщённые типы, которые позволяют создавать более безопасный и при этом универсальный код.
№9 слайд
![Упаковка и распаковка В](/documents_6/83cebb264921925ce7109099ea24180f/img8.jpg)
Содержание слайда: Упаковка и распаковка
В примере используется стандартный класс ArrayList из пакета java.util, который представляет коллекцию объектов. Чтобы поместить объект в коллекцию, применяется метод add. И хотя в коллекцию добавляются число и строка, по существу ArrayList содержит коллекцию значений типа Object. Таким образом, в вызове array.add(x); значение переменной x вначале "упаковывается" в объект типа Integer и апкастится до типа Object, а потом при получении элементов из коллекции - наоборот, "распаковывается" в нужный тип.
№10 слайд
![Устройство ArrayList](/documents_6/83cebb264921925ce7109099ea24180f/img9.jpg)
Содержание слайда: Устройство ArrayList
ArrayList устроен как массив ссылок типа Object, что позволяет добавлять в коллекцию переменные любого типа. Такая гибкость в некоторых случаях удобна, однако чаще всего в коллекции хранятся переменные одного и того же типа. Можно легко допустить ошибку приведения при извлечении данных из коллекции, т.е. поместить в коллекцию переменную одного типа, а при извлечении выполнить приведение к другому типу…
№11 слайд
![Проблемы Упаковка и](/documents_6/83cebb264921925ce7109099ea24180f/img10.jpg)
Содержание слайда: Проблемы
Упаковка и распаковка (boxing и unboxing) ведут к снижению производительности, поскольку система должна выполнить необходимые преобразования. Существует и другая проблема, связанная с упаковкой-распаковкой, - проблема безопасности типов. Например, во время выполнения последней строки возникает ошибка.
№12 слайд
![Хранение ссылок Следует](/documents_6/83cebb264921925ce7109099ea24180f/img11.jpg)
Содержание слайда: Хранение ссылок
Следует отметить, что если хранить в коллекции объекты ссылочных (не примитивных) типов, то снижения производительности происходить не будет, так как выполняется не упаковка-распаковка, а лишь формальное преобразование пользовательского типа в Object или наоборот.
№13 слайд
![Решение Обе проблемы смогут](/documents_6/83cebb264921925ce7109099ea24180f/img12.jpg)
Содержание слайда: Решение
Обе проблемы смогут решить обобщённые типы. Они позволяют указать конкретный тип данных, который будет использоваться для коллекции или алгоритма (поддерживаются обобщённые классы, интерфейсы и методы). Например, в Java также существует обобщённая версия класса ArrayList:
№15 слайд
![Комментарии к примеру Так как](/documents_6/83cebb264921925ce7109099ea24180f/img14.jpg)
Содержание слайда: Комментарии к примеру
Так как теперь используется обобщённая версия класса ArrayList, то нужно будет задать определённый тип данных, для которого этот класс будет применяться. Далее добавляется число и строка в коллекцию. Но если число будет добавлено в коллекцию без проблем, так как коллекция типизирована типом int, то на строке ar.add(s); возникнет ошибка времени компиляции, и придётся удалить эту строку. Таким образом, при применении обобщённого варианта класса снижается как количество потенциальных ошибок, так и время на выполнение программы.
№18 слайд
![Raw types сырые типы Forest f](/documents_6/83cebb264921925ce7109099ea24180f/img17.jpg)
Содержание слайда: Raw types (сырые типы)
Forest f = new Forest();
f.setInhabitant1(new Fairy());
f.setInhabitant2(new Elf());
f.setInhabitant2(new Fairy());
Fairy fairy = (Fairy) f.getInhabitant1();
Elf elf = (Elf) f.getInhabitant2(); // упс!
Forest<Fairy, Elf> f2 = f;
Forest f3 = new Forest<Fairy, Elf>();
№19 слайд
![Определение Сырой тип это имя](/documents_6/83cebb264921925ce7109099ea24180f/img18.jpg)
Содержание слайда: Определение
Сырой тип — это имя обобщённого класса или интерфейса без аргументов типа. Можно часто увидеть использование сырых типов в старом коде, поскольку многие классы (например, коллекции), до Java 5 были необобщёнными. При использовании сырых типов получается то же самое поведение, которое было до введения обобщений в Java.
№21 слайд
![Ограниченный тип В некоторых](/documents_6/83cebb264921925ce7109099ea24180f/img20.jpg)
Содержание слайда: Ограниченный тип
В некоторых случаях имеет смысл ограничить типы, которые можно использовать в качестве аргументов в параметризованных типах. Например, в Термос можно будет наливать только ГорячиеНапитки. Подобное ограничение можно сделать с помощью ограниченного параметра типа (bounded type parameters).
Чтобы объявить ограниченный параметр типа, нужно после имени параметра указать ключевое слово extends, а затем указать верхнюю границу (upper bound). В этом контексте extends означает как extends, так и implements.
№23 слайд
![Соглашение об именовании](/documents_6/83cebb264921925ce7109099ea24180f/img22.jpg)
Содержание слайда: Соглашение об именовании
Переменные типа именуются одной буквой в верхнем регистре. Это позволяет легко отличить переменную типа от класса или интерфейса. Наиболее часто используемые имена для параметров типа:
E — элемент (Element, широко используется в Java Collections Framework)
K — Ключ
N — Число
T — Тип
V — Значение
S, U, V и т. п. — 2-й, 3-й, 4-й типы
№27 слайд
![Обобщения и наследование](/documents_6/83cebb264921925ce7109099ea24180f/img26.jpg)
Содержание слайда: Обобщения и наследование
Можно присвоить объекту одного типа объект другого типа, если эти типы совместимы. Например, можно присвоить объект типа Integer переменной типа Object, так как Object является одним из супертипов Integer:
Object someObject = new Object();
Integer someInteger = new Integer(10);
someObject = someInteger; // OK
№28 слайд
![Обобщения и наследование В](/documents_6/83cebb264921925ce7109099ea24180f/img27.jpg)
Содержание слайда: Обобщения и наследование
В объектно-ориентированной терминологии это называется связью «является» (“is a”). Так как Integer является Object -ом, то такое присвоение разрешено. Но Integer также является и Number-ом, поэтому следующий код тоже корректен:
public void someMethod(Number n) { /* ... */ }
someMethod(new Integer(10)); // OK
someMethod(new Double(10.1)); // OK
№29 слайд
![Обобщения и наследование Это](/documents_6/83cebb264921925ce7109099ea24180f/img28.jpg)
Содержание слайда: Обобщения и наследование
Это также верно для обобщений. Можно осуществить вызов обобщённого типа, передав Number в качестве аргумента типа, и любой дальнейший вызов будет разрешён, если аргумент совместим с Number:
Box<Number> box = new Box<Number>();
box.add(new Integer(10)); // OK
box.add(new Double(10.1)); // OK
№32 слайд
![Неизвестный тип wildcard В](/documents_6/83cebb264921925ce7109099ea24180f/img31.jpg)
Содержание слайда: Неизвестный тип (wildcard)
В обобщённом коде иногда встречается знак вопроса (?), называемый подстановочным символом, и означает это «неизвестный тип». Подстановочный символ может использоваться в разных ситуациях: как параметр типа, поля, локальной переменной, иногда в качестве возвращаемого типа.
№36 слайд
![Upper bounded wildcard Можно](/documents_6/83cebb264921925ce7109099ea24180f/img35.jpg)
Содержание слайда: Upper bounded wildcard
Можно использовать подстановочный символ, ограниченный сверху, чтобы ослабить ограничения для переменной класса. Например, если хочется написать метод, который работает только с List<Integer>, List<Double> и List<Number>, этого можно достичь с помощью ограниченного сверху подстановочного символа.
№38 слайд
![Lower bounded wildcard](/documents_6/83cebb264921925ce7109099ea24180f/img37.jpg)
Содержание слайда: Lower bounded wildcard
Ограниченный снизу подстановочный символ ограничивает неизвестный тип так, чтобы он был либо указанным типом, либо одним из его предков. Допустим, хочется написать метод, который добавляет объекты Mops в список. Чтобы максимизировать гибкость, в список можно будет добавлять ещё и Dog с Animal-ом — всё, что может хранить экземпляры класса Mops.
№39 слайд
![Почему обобщения не работают](/documents_6/83cebb264921925ce7109099ea24180f/img38.jpg)
Содержание слайда: Почему обобщения не работают с примитивными типами?
http://stackoverflow.com/questions/2721546/why-dont-java-generics-support-primitive-types
Generics in Java are an entirely compile-time construct - the compiler turns all generic uses into casts to the right type. This is to maintain backwards compatibility with previous JVM runtimes.
№40 слайд
![Стирание типа Обобщения были](/documents_6/83cebb264921925ce7109099ea24180f/img39.jpg)
Содержание слайда: Стирание типа
Обобщения были введены в язык программирования Java для обеспечения более жёсткого контроля типов во время компиляции и для поддержки обобщённого программирования. Для реализации обобщения компилятор:
Заменяет все параметры типа в обобщённых типах их границами или Object-ами, если параметры типа не ограничены. Сгенерированный байт-код содержит только обычные классы, интерфейсы и методы!
Вставляет приведение типов где необходимо, чтобы сохранить безопасность типа.
№50 слайд
![Что почитать про обобщения](/documents_6/83cebb264921925ce7109099ea24180f/img49.jpg)
Содержание слайда: Что почитать про обобщения
https://urvanov.ru/2016/04/28/java-8-%D0%BE%D0%B1%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F/
http://rsdn.ru/article/java/genericsinjava.xml
http://developer.alexanderklimov.ru/android/java/generic.php
http://www.k-press.ru/cs/2008/3/generic/generic.asp
http://www.quizful.net/post/java-generics-tutorial
http://javarevisited.blogspot.com/2011/09/generics-java-example-tutorial.html
https://uk.wikipedia.org/wiki/%D0%A3%D0%B7%D0%B0%D0%B3%D0%B0%D0%BB%D1%8C%D0%BD%D0%B5%D0%BD%D0%BD%D1%8F_%D0%B2_Java
http://docs.oracle.com/javase/tutorial/extra/generics/morefun.html
Скачать все slide презентации Generics. Классы-оболочки одним архивом:
Похожие презентации
-
Классы-оболочки в Java. (Лекция 7)
-
Циклические алгоритмы. 9 класс
-
Язык разметки гипертекста HTML. 8 класс
-
Нелинейные алгоритмы. Язык программирования Паскаль. 8 класс
-
Основные конструкции языка программирования. Турбо Паскаль (тестирование). 10 -11 класс
-
Классификация структур данных. Лекция 2
-
Классификация машинных команд
-
Информационные модели на графах. 7 класс
-
Структуры и классы
-
Шаблонизация функций и классов