🗊 Презентация Generics. Классы-оболочки

Нажмите для полного просмотра!
Generics. Классы-оболочки, слайд №1 Generics. Классы-оболочки, слайд №2 Generics. Классы-оболочки, слайд №3 Generics. Классы-оболочки, слайд №4 Generics. Классы-оболочки, слайд №5 Generics. Классы-оболочки, слайд №6 Generics. Классы-оболочки, слайд №7 Generics. Классы-оболочки, слайд №8 Generics. Классы-оболочки, слайд №9 Generics. Классы-оболочки, слайд №10 Generics. Классы-оболочки, слайд №11 Generics. Классы-оболочки, слайд №12 Generics. Классы-оболочки, слайд №13 Generics. Классы-оболочки, слайд №14 Generics. Классы-оболочки, слайд №15 Generics. Классы-оболочки, слайд №16 Generics. Классы-оболочки, слайд №17 Generics. Классы-оболочки, слайд №18 Generics. Классы-оболочки, слайд №19 Generics. Классы-оболочки, слайд №20 Generics. Классы-оболочки, слайд №21 Generics. Классы-оболочки, слайд №22 Generics. Классы-оболочки, слайд №23 Generics. Классы-оболочки, слайд №24 Generics. Классы-оболочки, слайд №25 Generics. Классы-оболочки, слайд №26 Generics. Классы-оболочки, слайд №27 Generics. Классы-оболочки, слайд №28 Generics. Классы-оболочки, слайд №29 Generics. Классы-оболочки, слайд №30 Generics. Классы-оболочки, слайд №31 Generics. Классы-оболочки, слайд №32 Generics. Классы-оболочки, слайд №33 Generics. Классы-оболочки, слайд №34 Generics. Классы-оболочки, слайд №35 Generics. Классы-оболочки, слайд №36 Generics. Классы-оболочки, слайд №37 Generics. Классы-оболочки, слайд №38 Generics. Классы-оболочки, слайд №39 Generics. Классы-оболочки, слайд №40 Generics. Классы-оболочки, слайд №41 Generics. Классы-оболочки, слайд №42 Generics. Классы-оболочки, слайд №43 Generics. Классы-оболочки, слайд №44 Generics. Классы-оболочки, слайд №45 Generics. Классы-оболочки, слайд №46 Generics. Классы-оболочки, слайд №47 Generics. Классы-оболочки, слайд №48 Generics. Классы-оболочки, слайд №49 Generics. Классы-оболочки, слайд №50 Generics. Классы-оболочки, слайд №51

Содержание

Вы можете ознакомиться и скачать презентацию на тему Generics. Классы-оболочки. Доклад-сообщение содержит 51 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1


Generics
Описание слайда:
Generics

Слайд 2


Классы-оболочки В языке Java существуют классы-оболочки, которые являются объектным представлением восьми примитивных типов. Все классы-оболочки...
Описание слайда:
Классы-оболочки В языке Java существуют классы-оболочки, которые являются объектным представлением восьми примитивных типов. Все классы-оболочки являются immutable. Автоупаковка и распаковка позволяют легко конвертировать примитивные типы в их соответствующие классы-оболочки и наоборот.

Слайд 3


Пример упаковки и распаковки int a = 5; Integer b = a; // автоупаковка Integer c = new Integer(a); // упаковка int d = b; // распаковка int e =...
Описание слайда:
Пример упаковки и распаковки int a = 5; Integer b = a; // автоупаковка Integer c = new Integer(a); // упаковка int d = b; // распаковка int e = (int)c; // необязательно System.out.println(c); // 5

Слайд 4


Примитивные типы и обёртки
Описание слайда:
Примитивные типы и обёртки

Слайд 5


Зачем нужны оболочки Разработчиками языка Java было принято решение отделить примитивные типы и классы-оболочки, указав при этом следующее:...
Описание слайда:
Зачем нужны оболочки Разработчиками языка Java было принято решение отделить примитивные типы и классы-оболочки, указав при этом следующее: Используйте классы-обёртки, когда работаете со стандартными коллекциями Используйте примитивные типы для того, чтобы ваши программы были максимально просты Ещё одним важным моментом является то, что примитивные типы не могут быть null, а классы-оболочки — могут. Также классы-оболочки могут быть использованы для достижения полиморфизма.

Слайд 6


Практика Создайте объект типа Double, и изучите список методов, предоставляемых этим классом. Создайте объект на основе целого числа, вещественного...
Описание слайда:
Практика Создайте объект типа Double, и изучите список методов, предоставляемых этим классом. Создайте объект на основе целого числа, вещественного числа, строки. Попытайтесь изменить состояние объекта.

Слайд 7


Обобщения (generics) Нередко, создаваемые разработчиками алгоритмы и коллекции могут быть успешно использованы для разных типов данных без...
Описание слайда:
Обобщения (generics) Нередко, создаваемые разработчиками алгоритмы и коллекции могут быть успешно использованы для разных типов данных без какого-либо изменения. Например, не зависят от типа данных алгоритмы поиска и сортировки, а класс List пригодился бы как для хранения целых чисел, так и для хранения объектов типа Student. Чтобы не создавать однообразные реализации для каждого типа данных, в языке Java начиная с версии SE5.0 были введены обобщения, или обобщённые типы, которые позволяют создавать более безопасный и при этом универсальный код.

Слайд 8


Безопасность int x = 44; String s = "hello"; ArrayList array = new ArrayList(); array.add(x); // упаковка (boxing) array.add(s); //...
Описание слайда:
Безопасность int x = 44; String s = "hello"; ArrayList array = new ArrayList(); array.add(x); // упаковка (boxing) array.add(s); // упаковки нет! int y = (int) array.get(0); // unboxing int z = (int) array.get(1); // упс!!!

Слайд 9


Упаковка и распаковка В примере используется стандартный класс ArrayList из пакета java.util, который представляет коллекцию объектов. Чтобы...
Описание слайда:
Упаковка и распаковка В примере используется стандартный класс ArrayList из пакета java.util, который представляет коллекцию объектов. Чтобы поместить объект в коллекцию, применяется метод add. И хотя в коллекцию добавляются число и строка, по существу ArrayList содержит коллекцию значений типа Object. Таким образом, в вызове array.add(x); значение переменной x вначале "упаковывается" в объект типа Integer и апкастится до типа Object, а потом при получении элементов из коллекции - наоборот, "распаковывается" в нужный тип.

Слайд 10


Устройство ArrayList ArrayList устроен как массив ссылок типа Object, что позволяет добавлять в коллекцию переменные любого типа. Такая гибкость в...
Описание слайда:
Устройство ArrayList ArrayList устроен как массив ссылок типа Object, что позволяет добавлять в коллекцию переменные любого типа. Такая гибкость в некоторых случаях удобна, однако чаще всего в коллекции хранятся переменные одного и того же типа. Можно легко допустить ошибку приведения при извлечении данных из коллекции, т.е. поместить в коллекцию переменную одного типа, а при извлечении выполнить приведение к другому типу…

Слайд 11


Проблемы Упаковка и распаковка (boxing и unboxing) ведут к снижению производительности, поскольку система должна выполнить необходимые...
Описание слайда:
Проблемы Упаковка и распаковка (boxing и unboxing) ведут к снижению производительности, поскольку система должна выполнить необходимые преобразования. Существует и другая проблема, связанная с упаковкой-распаковкой, - проблема безопасности типов. Например, во время выполнения последней строки возникает ошибка.

Слайд 12


Хранение ссылок Следует отметить, что если хранить в коллекции объекты ссылочных (не примитивных) типов, то снижения производительности происходить...
Описание слайда:
Хранение ссылок Следует отметить, что если хранить в коллекции объекты ссылочных (не примитивных) типов, то снижения производительности происходить не будет, так как выполняется не упаковка-распаковка, а лишь формальное преобразование пользовательского типа в Object или наоборот.

Слайд 13


Решение Обе проблемы смогут решить обобщённые типы. Они позволяют указать конкретный тип данных, который будет использоваться для коллекции или...
Описание слайда:
Решение Обе проблемы смогут решить обобщённые типы. Они позволяют указать конкретный тип данных, который будет использоваться для коллекции или алгоритма (поддерживаются обобщённые классы, интерфейсы и методы). Например, в Java также существует обобщённая версия класса ArrayList:

Слайд 14


Обобщённая версия int x = 44; String s = "hello"; ArrayList ar = new ArrayList(); ar.add(x); // упаковка не нужна ar.add(s); // ошибка...
Описание слайда:
Обобщённая версия int x = 44; String s = "hello"; ArrayList ar = new ArrayList(); ar.add(x); // упаковка не нужна ar.add(s); // ошибка компиляции! int y = ar.get(0); // распаковка не нужна

Слайд 15


Комментарии к примеру Так как теперь используется обобщённая версия класса ArrayList, то нужно будет задать определённый тип данных, для которого...
Описание слайда:
Комментарии к примеру Так как теперь используется обобщённая версия класса ArrayList, то нужно будет задать определённый тип данных, для которого этот класс будет применяться. Далее добавляется число и строка в коллекцию. Но если число будет добавлено в коллекцию без проблем, так как коллекция типизирована типом int, то на строке ar.add(s); возникнет ошибка времени компиляции, и придётся удалить эту строку. Таким образом, при применении обобщённого варианта класса снижается как количество потенциальных ошибок, так и время на выполнение программы.

Слайд 16


Пример generic-класса (Point)
Описание слайда:
Пример generic-класса (Point)

Слайд 17


Два параметра типа
Описание слайда:
Два параметра типа

Слайд 18


Raw types (сырые типы) Forest f = new Forest(); f.setInhabitant1(new Fairy()); f.setInhabitant2(new Elf()); f.setInhabitant2(new Fairy()); Fairy...
Описание слайда:
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 f2 = f; Forest f3 = new Forest();

Слайд 19


Определение Сырой тип — это имя обобщённого класса или интерфейса без аргументов типа. Можно часто увидеть использование сырых типов в старом коде,...
Описание слайда:
Определение Сырой тип — это имя обобщённого класса или интерфейса без аргументов типа. Можно часто увидеть использование сырых типов в старом коде, поскольку многие классы (например, коллекции), до Java 5 были необобщёнными. При использовании сырых типов получается то же самое поведение, которое было до введения обобщений в Java.

Слайд 20


Пример с котиками
Описание слайда:
Пример с котиками

Слайд 21


Ограниченный тип В некоторых случаях имеет смысл ограничить типы, которые можно использовать в качестве аргументов в параметризованных типах....
Описание слайда:
Ограниченный тип В некоторых случаях имеет смысл ограничить типы, которые можно использовать в качестве аргументов в параметризованных типах. Например, в Термос можно будет наливать только ГорячиеНапитки. Подобное ограничение можно сделать с помощью ограниченного параметра типа (bounded type parameters). Чтобы объявить ограниченный параметр типа, нужно после имени параметра указать ключевое слово extends, а затем указать верхнюю границу (upper bound). В этом контексте extends означает как extends, так и implements.

Слайд 22


Ограничение параметра типа class AverageCalculator {
Описание слайда:
Ограничение параметра типа class AverageCalculator {

Слайд 23


Соглашение об именовании Переменные типа именуются одной буквой в верхнем регистре. Это позволяет легко отличить переменную типа от класса или...
Описание слайда:
Соглашение об именовании Переменные типа именуются одной буквой в верхнем регистре. Это позволяет легко отличить переменную типа от класса или интерфейса. Наиболее часто используемые имена для параметров типа: E — элемент (Element, широко используется в Java Collections Framework) K — Ключ N — Число T — Тип V — Значение S, U, V и т. п. — 2-й, 3-й, 4-й типы

Слайд 24


Generic method
Описание слайда:
Generic method

Слайд 25


Generic constructor Конструкторы могут быть обобщёнными как в обобщённых, так и в необобщённых классах.
Описание слайда:
Generic constructor Конструкторы могут быть обобщёнными как в обобщённых, так и в необобщённых классах.

Слайд 26


Generic interface Iterable Comparable
Описание слайда:
Generic interface Iterable Comparable

Слайд 27


Обобщения и наследование Можно присвоить объекту одного типа объект другого типа, если эти типы совместимы. Например, можно присвоить объект типа...
Описание слайда:
Обобщения и наследование Можно присвоить объекту одного типа объект другого типа, если эти типы совместимы. Например, можно присвоить объект типа Integer переменной типа Object, так как Object является одним из супертипов Integer: Object someObject = new Object(); Integer someInteger = new Integer(10); someObject = someInteger; // OK

Слайд 28


Обобщения и наследование В объектно-ориентированной терминологии это называется связью «является» (“is a”). Так как Integer является Object -ом, то...
Описание слайда:
Обобщения и наследование В объектно-ориентированной терминологии это называется связью «является» (“is a”). Так как Integer является Object -ом, то такое присвоение разрешено. Но Integer также является и Number-ом, поэтому следующий код тоже корректен: public void someMethod(Number n) { /* ... */ } someMethod(new Integer(10)); // OK someMethod(new Double(10.1)); // OK

Слайд 29


Обобщения и наследование Это также верно для обобщений. Можно осуществить вызов обобщённого типа, передав Number в качестве аргумента типа, и любой...
Описание слайда:
Обобщения и наследование Это также верно для обобщений. Можно осуществить вызов обобщённого типа, передав Number в качестве аргумента типа, и любой дальнейший вызов будет разрешён, если аргумент совместим с Number: Box box = new Box(); box.add(new Integer(10)); // OK box.add(new Double(10.1)); // OK

Слайд 30


Обобщения и наследование void boxTest(Box n) { /* ... */ } Можно ли будет передать в этот метод объект типа Box или Box? Нет, так как Box и Box не...
Описание слайда:
Обобщения и наследование void boxTest(Box n) { /* ... */ } Можно ли будет передать в этот метод объект типа Box или Box? Нет, так как Box и Box не являются потомками Box!

Слайд 31


Важно запомнить! Для двух типов A и B (например, Number и Integer), MyClass не имеет никакой связи или родства с MyClass , независимо от того, как A...
Описание слайда:
Важно запомнить! Для двух типов A и B (например, Number и Integer), MyClass не имеет никакой связи или родства с MyClass , независимо от того, как A и B связаны между собой. Общий родитель MyClass и MyClass — это Object.

Слайд 32


Неизвестный тип (wildcard) В обобщённом коде иногда встречается знак вопроса (?), называемый подстановочным символом, и означает это «неизвестный...
Описание слайда:
Неизвестный тип (wildcard) В обобщённом коде иногда встречается знак вопроса (?), называемый подстановочным символом, и означает это «неизвестный тип». Подстановочный символ может использоваться в разных ситуациях: как параметр типа, поля, локальной переменной, иногда в качестве возвращаемого типа.

Слайд 33


Unbounded wildcard Если просто использовать подстановочный символ , то получится подстановочный символ без ограничений. Например, List означает...
Описание слайда:
Unbounded wildcard Если просто использовать подстановочный символ , то получится подстановочный символ без ограничений. Например, List означает список неизвестного (т.е., почти любого) типа.

Слайд 34


Зачем нужен wildcard
Описание слайда:
Зачем нужен wildcard

Слайд 35


Зачем нужен wildcard
Описание слайда:
Зачем нужен wildcard

Слайд 36


Upper bounded wildcard Можно использовать подстановочный символ, ограниченный сверху, чтобы ослабить ограничения для переменной класса. Например,...
Описание слайда:
Upper bounded wildcard Можно использовать подстановочный символ, ограниченный сверху, чтобы ослабить ограничения для переменной класса. Например, если хочется написать метод, который работает только с List, List и List, этого можно достичь с помощью ограниченного сверху подстановочного символа.

Слайд 37


Пример на UBW
Описание слайда:
Пример на UBW

Слайд 38


Lower bounded wildcard Ограниченный снизу подстановочный символ ограничивает неизвестный тип так, чтобы он был либо указанным типом, либо одним из...
Описание слайда:
Lower bounded wildcard Ограниченный снизу подстановочный символ ограничивает неизвестный тип так, чтобы он был либо указанным типом, либо одним из его предков. Допустим, хочется написать метод, который добавляет объекты Mops в список. Чтобы максимизировать гибкость, в список можно будет добавлять ещё и Dog с Animal-ом — всё, что может хранить экземпляры класса Mops.

Слайд 39


Почему обобщения не работают с примитивными типами? Generics in Java are an entirely compile-time construct - the compiler turns all generic uses...
Описание слайда:
Почему обобщения не работают с примитивными типами? 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


Стирание типа Обобщения были введены в язык программирования Java для обеспечения более жёсткого контроля типов во время компиляции и для поддержки...
Описание слайда:
Стирание типа Обобщения были введены в язык программирования Java для обеспечения более жёсткого контроля типов во время компиляции и для поддержки обобщённого программирования. Для реализации обобщения компилятор: Заменяет все параметры типа в обобщённых типах их границами или Object-ами, если параметры типа не ограничены. Сгенерированный байт-код содержит только обычные классы, интерфейсы и методы! Вставляет приведение типов где необходимо, чтобы сохранить безопасность типа.

Слайд 41


Стирание типа
Описание слайда:
Стирание типа

Слайд 42


Стирание типа
Описание слайда:
Стирание типа

Слайд 43


Стирание типа
Описание слайда:
Стирание типа

Слайд 44


На тему стирания типов
Описание слайда:
На тему стирания типов

Слайд 45


Чего делать нельзя
Описание слайда:
Чего делать нельзя

Слайд 46


Чего делать нельзя
Описание слайда:
Чего делать нельзя

Слайд 47


Чего делать нельзя
Описание слайда:
Чего делать нельзя

Слайд 48


Чего делать нельзя
Описание слайда:
Чего делать нельзя

Слайд 49


Чего делать нельзя
Описание слайда:
Чего делать нельзя

Слайд 50


Что почитать про обобщения
Описание слайда:
Что почитать про обобщения

Слайд 51


Практика Переделать классы-коллекции ArrayList, SLL, DLL, BinaryTree таким образом, чтобы они стали обобщёнными. Реализовать интерфейс Iterable для...
Описание слайда:
Практика Переделать классы-коллекции ArrayList, SLL, DLL, BinaryTree таким образом, чтобы они стали обобщёнными. Реализовать интерфейс Iterable для ваших реализаций типов ArrayList и BinaryTree.



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