1.11M
Категория: ПрограммированиеПрограммирование

РМП. ООП в Java 2 часть

1.

ООП JAVA

2.

Приведение типов
Восходящее приведение
Вы можете привести экземпляр подкласса к его суперклассу.
Приведение вниз
Приведение объекта
приведением вниз.
суперкласса
к
его
подклассу
называется
Приведение типа вверх никогда не терпит неудачи. Но если у вас есть группа разных
Животных и вы хотите привести их все к Коту, то есть шанс, что некоторые из этих
Животных на самом деле Собаки, поэтому процесс терпит неудачу.

3.

Анонимные классы
Анонимные классы - это способ расширения существующих классов
на лету.
При создании объекта Machine, мы
можем изменять метод start на лету.
Аннотация @Override используется
для того, чтобы сделать ваш код более
понятным, поскольку она делает более
очевидным переопределение методов.

4.

Анонимные классы
Модификация применима только к текущему объекту, а не к самому
классу. Так что если мы создадим другой объект этого класса, реализация
метода start будет той, которая определена в классе.

5.

Задание 12
Вы являетесь управляющим магазина.
Вы предлагаете скидку 10% на все товары в магазине. Сегодня у вас
было всего два клиента. Первому вы предоставили скидку 10% на все
приобретенные товары. Второй клиент, однако, купил много товаров, и вы
хотите предоставить ему большую скидку -- 20% -- чтобы показать свою
признательность.
Напишите класс Purchase и создайте два объекта Purchase - 1 для
обычного клиента, и 1 для особенного, и переопределите метод
totalAmount() для особенного клиента на лету, чтобы установить
правильную скидку 20%.

6.

Внутренние классы
Java поддерживает вложение
классов; класс может быть членом
другого класса.
Создание внутреннего класса
довольно просто. Просто напишите
класс внутри класса. В отличие от
класса, внутренний класс может быть
приватным. Как только вы объявляете
внутренний класс приватным, к нему
нельзя получить доступ из объекта за
пределами класса.

7.

Сравнение классов
Помните, что когда вы создаете объекты,
переменные хранят ссылки на эти объекты.
Таким образом, когда вы сравниваете
объекты с помощью оператора проверки на
равенство (==), он фактически сравнивает
ссылки, а не значения объектов.
Несмотря на наличие двух объектов с
одинаковым именем, проверка на равенство
возвращает false, потому что у нас два
разных объекта (два разных ссылки или
места в памяти).

8.

Сравнение классов
У
каждого
объекта
есть
предопределенный метод equals(), который
используется для семантического сравнения
на равенство.
Но, чтобы он работал для наших классов,
нам нужно переопределить его и проверить
необходимые условия.
Существует простой и быстрый способ
генерации метода equals(), помимо его
ручного написания.
Просто щелкните правой кнопкой мыши
в вашем классе, выберете Generate

9.

Сравнение классов

10.

Перечисления
Перечисление - это специальный тип,
используемый для определения коллекций
констант.
Обратите внимание,
разделены запятыми.
что
значения
Вы можете обращаться к константам в
перечислении выше с помощью точечного
синтаксиса.
В
основном,
Enums
определяют
переменные, которые представляют членов
фиксированного набора.

11.

Перечисления
После объявления Enum, мы можем
проверить соответствующие значения с,
например, оператором switch .
Всегда следует использовать Enums,
когда переменная (особенно параметр
метода) может принимать только одно из
небольшого набора возможных значений.
Если вы используете Enums вместо
целых чисел (или кодов String), вы
увеличиваете проверку на этапе компиляции
и
избегаете
ошибок
при
передаче
недопустимых
констант,
а
также
документируете, какие значения можно
использовать.

12.

Задание 13
У нашей видеоигры-шутера есть 3 варианта сложности - EASY, MEDIUM, HARD.
Для каждого уровня сложности у игрока есть соответствующее количество пуль.
Напишите прогрмму, которая определяет класс Player и Enum Difficulty, и создает 3
объекта Player с разными сложностями в качестве параметров для конструктора.
Дополните конструктор Player, который принимает Enum в качестве параметра,
чтобы проверить количество пуль для каждого варианта сложности и вывести
соответствующее сообщение:
EASY => "You have 3000 bullets"
MEDIUM => "You have 2000 bullets"
HARD => "You have 1000 bullets"

13.

Исключения
Исключение - это проблема, которая возникает во время выполнения программы.
Исключения вызывают ненормальное завершение программы.
Обработка исключений - это мощный механизм, который устраняет ошибки во
время выполнения, чтобы поддерживать нормальное течение приложения.
Исключение может произойти по многим разным причинам. Например:
- пользователь ввел недопустимые данные.
- невозможно найти файл, который нужно открыть.
- сетевое соединение было потеряно во время обмена данными.
- недостаточно памяти и другие проблемы, связанные с физическими ресурсами.

14.

Обработка исключений
Исключения можно отлавливать с
помощью комбинации ключевых слов try и
catch.
Блок try/catch располагается вокруг
кода,
который
может
генерировать
исключение.
Утверждение catch включает в себя
объявление типа исключения, которое вы
пытаетесь перехватить. Если исключение
происходит в блоке try, проверяется блок
catch, который следует за try . Если тип
исключения, который произошел, перечислен
в блоке catch, исключение передается в блок
catch, также, как аргумент передается в
параметр метода.
Тип Exception может быть использован
для перехвата всех возможных исключений.

15.

Задание 14
У интернет-магазина электроники есть 5 категорий товаров - ПК, Ноутбуки,
Планшеты, Телефоны и Аксессуары.
Напишите программу, которая объявляет массив, хранит эти типы в нем и принимает
число N в качестве ввода и выводит элемент массива с индексом N. Если индекс выходит
за пределы диапазона, программа должна выводить "Wrong Option".
Пример ввода
5
Пример вывода
Wrong Option

16.

Обработка исключений throw
Ключевое слово throw позволяет вам вручную
генерировать исключения из ваших методов. К
числу
многочисленных
доступных
типов
исключений относятся IndexOutOfBoundsException,
IllegalArgumentException, ArithmeticException и так
далее.
Например,
мы
можем
сгенерировать
ArithmeticException в нашем методе, когда параметр
равен 0.
Выражение throws в определении метода
определяет тип исключения (или исключений),
которые может сгенерировать метод.
Затем, ключевое слово throw генерирует
соответствующее
исключение,
вместе
с
пользовательским сообщением.
Если мы вызываем метод div со вторым
параметром,
равным
0,
он
сгенерирует
исключение ArithmeticException с сообщением
"Деление на ноль".

17.

Несколько исключений
Один блок try может содержать несколько
блоков catch, которые обрабатывают различные
исключения отдельно.
Все блоки catch должны быть упорядочены от
самых специфических к самым общим.
После конкретных исключений вы можете
использовать тип Exception для обработки всех
остальных исключений в последнем блоке catch.

18.

Задание 15
Вам нужно написать программу делителя, которая будет работать с целыми числами,
Данная программа должна принимать два целых числа на ввод и выполнять деление,
но нам нужно обработать два исключения:
1. делитель не должен быть равен нулю
2. оба ввода должны быть целыми числами.
При первом исключении программа должна выводить "Error: division by zero", а при
втором - "Error: wrong value type".
Пример ввода
1
b
Пример вывода
Error: wrong value type
*Используйте ArithmeticException для первого исключения и InputMismatchException для
второго.
English     Русский Правила