{"id":21391382,"url":"https://github.com/radmitr/java-course","last_synced_at":"2025-04-15T21:52:04.557Z","repository":{"id":176052266,"uuid":"654745267","full_name":"radmitr/java-course","owner":"radmitr","description":"Udemy course \"Java for beginners: from scratch to Oracle certificate\" by Zaur Tregulov","archived":false,"fork":false,"pushed_at":"2023-06-17T09:24:57.000Z","size":65,"stargazers_count":5,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T21:51:51.647Z","etag":null,"topics":["java-basics","oca"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/radmitr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-16T21:06:09.000Z","updated_at":"2025-03-08T22:00:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"cc138f6c-c45f-4ba0-b81f-ba7e6ac53027","html_url":"https://github.com/radmitr/java-course","commit_stats":null,"previous_names":["radmitr/java-course"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radmitr%2Fjava-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radmitr%2Fjava-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radmitr%2Fjava-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radmitr%2Fjava-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/radmitr","download_url":"https://codeload.github.com/radmitr/java-course/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249161130,"owners_count":21222469,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java-basics","oca"],"created_at":"2024-11-22T13:26:17.639Z","updated_at":"2025-04-15T21:52:04.543Z","avatar_url":"https://github.com/radmitr.png","language":"Java","readme":"# Курс \"Java для начинающих: с нуля до сертификата Oracle\" от Заура Трегулова на Udemy\n\n[www.udemy.com/course/java-oca-oracle/](https://www.udemy.com/course/java-oca-oracle/)\n\n**Java basics**\n\n\u003cdetails\u003e\n    \u003csummary\u003eСписок уроков\u003c/summary\u003e\n\n     01. Урок 1 Знакомство с Java. Методы «print» и «println»\n     02. Урок 2 Примитивные типы данных. Понятие «переменная». Системы счисления\n     03. Урок 3 Арифметические и логические операции. Операции сравнения и присваивания\n     04. Урок 4 Понятия «класс» и «объект». Знакомство со ссылочными типами данных\n     05. Урок 5 Создание объектов. Понятие «конструктор». Объявление и вызов методов\n     06. Урок 6 Перезагрузка методов и конструкторов (overloading). Ключевое слово this\n     07. Урок 7 Понятие «package». Модификаторы видимости (access modifiers)\n     08. Урок 8 Модификаторы «final» и «static». Понятие «константа»\n     09. Урок 9 Разновидности переменных и пределы их видимости\n     10. Урок 10 Понятия «import» и «import static». Использование комментариев\n     11. Урок 11 Использование примитивных и ссылочных типов данных при вызове метода\n     12. Урок 12 Конструкции «if» и «if   else». Ternary оператор\n     13. Урок 13 Конструкция «switch»\n     14. Урок 14 Классический цикл «for». Выражения «break» и «continue»\n     15. Урок 15 Циклы «while» и «do while»\n     16. Урок 16 Всё о классе String\n     17. Урок 16 часть 2 Методы String (дополнение)\n     18. Урок 17 Всё о классе StringBuilder\n     19. Урок 18 Понятие «массив». Работа с массивами\n     20. Урок 19 Параметры метода типа varargs. Аргументы типа command line. Цикл «forea\n     21. Урок 20 Всё о классе ArrayList\n     22. Урок 20 часть 2 Методы класса Arrays.\n     23. Урок 20 часть 3 ArrayList (дополнение). Коллекции.\n     24. Урок 21 Понятие «garbage collection»\n     25. Урок 22 Инкапсуляция. Super Protected\n     26. Урок 23 Overriding Hiding Final\n     27. Урок 24 Абстрактные Дефолтные Статические методы\n     28. Урок 24 часть 2 Интерфейсы (дополнение)\n     29. Урок 25 Полиморфизм. Оператор «instanceof»\n     30. Урок 26 Методы «equals» и  «toString». Wrapper классы\n     31. Урок 27 Исключения и Ошибки Часть 1\n     32. Урок 28 Исключения и Ошибки Часть 2\n     33. Урок 29 Классы, отвечающие за работу с датами и временем\n     34. Урок 30 Лямбда выражения\n     35. Урок 31 Рассмотрение 46-ти интересных примеров по пройденному материалу\n\n\u003c/details\u003e\n\n----------------------------------------------------\n\n***Решения для следующих домашних заданий:***\n\n## Homework 1: Знакомство с Java. Методы «print» и «println».\nВывести на дисплей рубаи (четверостишье) соблюдая все отступы.\n\n## Homework 2: Примитивные типы данных. Понятие «переменная». Системы счисления.\n1. Создать по 4 переменных всех целочисленных типов данных в следующем виде и вывести их на экран:\n* все 4 переменные типа byte должны равняться 12 и быть записаны в разных системах счисления;\n* все 4 переменные типа short должны равняться 1300 и быть записаны в разных системах счисления;\n* все 4 переменные типа int должны равняться 0 и быть записаны в разных системах счисления;\n* все 4 переменные типа long должны равняться 123456789 и быть записаны в разных системах счисления;\n2. Создть по 2 переменные типов данных float, double и boolean и вывести их на экран.\n3. Создать n-ное количество переменных типа данные char всеми возможными способами и вывести их на экран.\n\n## Homework 3: Арифметические и логические операции. Операции сравнения и присваивания.\n1. Вычислить следующую часть кода:\n```\nint i1 = 5;\nint i2 = 11;\ndouble d1 = 5.5;\ndouble d2 = 1.3;\nlong l = 20L;\ndouble result1;\nresult1 = i2 / d1 + d2 % i1 - l;\n```\n2. Чему равны выражения:\n* `a-- - --a + ++a + a++ + a`, где a = 5\n* `++b - b++ + ++b - --b`, где b = 8\n\n## Homework 4: Понятия «класс» и «объект». Знакомство со ссылочными типами данных\nСоздайте 2 класса.  \n\n1-ый назовите `Student`. Он должен содержать в себе следующие атрибуты: номер студенческого\nбилета, имя, фамилию, год обучения, средняя оценка по математике, средняя оценка по\nэкономике, средняя оценка по иностранному языку.\n\n2-ой класс назовите `StudentTest`. В нём Вы должны будете создать 3 разных объекта класса\n`Student`, вывести на экран в читабельном виде среднюю арифметическую оценку каждого\nстудента (учитывая все 3 предмета).\n\n## Homework 5: Создание объектов. Понятие «конструктор». Объявление и вызов методов.\n1. В класс `BankAccount` добавьте 2 метода. Первый метод называется `popolnenieScheta`\nи увеличивает баланс на сумму, которая указана в параметре этого метода. Второй метод\nназывается `snyatieSoScheta` и уменьшает баланс на сумму, которая указана в параметре\nэтого метода.\n2. Измените класс `StudentTest` так, чтобы среднюю арифметическую оценку студента\nвыводил на экран метод. Т. е. создайте 1 метод, параметр которого – это объект класса\n`Student`, а в теле метода будет вычисляться средняя арифметическая оценка и выводиться\nна экран.\n3. Создайте класс `Employee` с атрибутами `id`, `surname`, `age`, `salary`, `department`,\nкоторые должны задаваться в конструкторе. В данном классе также создайте метод увеличения\nзар платы вдвое. Создайте второй класс `EmployeeTest`, в котором создайте 2 объекта\nкласса `Employee`. Увеличьте зарплату каждому работнику вдвое с помощью метода и выведите\nна экран значение новой зар платы.\n\n## Homework 6: Перегрузка методов и конструкторов (overloading). Ключевое слово this\n1. Создайте класс, в котором будут 5 overloaded методов, которые вычисляют сумму нуля,\nодного, двух, трёх и четырёх  целых чисел соответственно, передают эту сумму в output и\nвыводят её на экран. В случае, когда слагаемые отсутствуют (т.е. когда параметров нет)\nсумма пусть равняется 0.\n2. Измените класс `Student` так, чтобы он имел 3 конструктора. 1-ый принимает все параметры.\n2-ой – только `id`, `name`, `surname`, `course`. 3-ий не принимает значений. Создайте в\nклассе `StudentTest` 3 объекта с помощью разных констукторов.\n\n## Homework 7: Понятие «package». Модификаторы видимости (access modifiers).\nПересоздайте класс `Employee` таким образом, чтобы переменная `salary` была\nнедоступна вне класса, переменная `surname` была доступна отовсюду, а переменная\n`id` только внутри пакета.\n\nТакже создайте 3 `public` метода, которые будут показывать на дисплее значения\nэтих переменных. Создайте для данного класса 3 разных конструктора с `public`,\n`default` и `private` access modifier-ами. В констукторах присваивайте переменным\nкласса значения из параметров.\n\nСоздайте новые классы в том же и в другом пакете. Попытайтесь в них создать объекты\nкласса `Employee` и вывести на экран значения переменных данного объекта с помощью\nметода `println` и методов самого класса.\n\n## Homework 8: Модификаторы «final» и «static». Понятие «константа».\n1. В первом классе создайте 2 `static` метода. 1-ый пусть умножает 3 числа из\nпараметра метода и возвращает их произведение; 2-ой – делит первое\nчисло из параметра на второе и ничего не возвращает, лишь выводит на\nдисплей в читабельном виде целое частное и остаток. Во втором классе\nпо два раза используйте данные методы.\n2. В первом классе создайте `static` `final` переменную Пи = 3,14. Используйте\nданную константу в non-static методе, который принимает в параметре\nзначение радиуса и вычисляет площадь круга по формуле: `Площадь = Пи * радиус * радиус`.\nТакже используйте данную константу в `static` методе,\nкоторый принимает в параметре значение радиуса и вычисляет длину\nокружности по формуле: `Площадь = 2 * Пи * радиус`. Создайте ещё один\nnon-static метод, который принимает в параметре значение радиуса и \nвыводит на экран информацию о радиусе, площади круга и длине\nокружности. Используйте все 3 метода во 2-м классе.\n\n## Homework 9: Разновидности переменных и пределы их видимости.\n1. Напишите программу, в которой будет созданно 8 объектов, но к\nпоследней строке метода main останется всего 2.\n2. Вычислите устно output-ы данных программ, а затем проверьте в среде разработки:\n\n```java\nclass Test1 {\n    int a = 1;\n    static int a = 2;\n    \n    void abc(int a) {\n        System.out.println(a);\n        System.out.println(this.a);\n    }\n    \n    public static void main(String[] args) {\n        Test1 t = new Test1();\n        t.abc(3);\n    }\n}\n   ```\n\n```java\nclass Test2 {\n    int a = 1;\n    static int b = 2;\n    \n    static void abc(final int a) {\n        System.out.println(a);\n        System.out.println(Test2.b);\n    }\n    \n    public static void main(String[] args) {\n        abc(5);\n    }\n}\n```\n\n```java\nclass Test3 {\n    int a = 1;\n    static int b = 2;\n    \n    void abc(int a) {\n        System.out.println(b);\n        System.out.println(a);\n        System.out.println(this.a);\n        System.out.println(Test3.b);\n    }\n    \n    public static void main(String[] args) {\n        Test3 t = new Test3();\n        t.abc(4);\n    }\n}\n```\n\n## Homework 10: Понятия «import» и «import static». Использование комментариев.\nСоздайте пакет `p1`, в нём класс `А`. В пакете `p1` создайте подпакет `p2`, в нём\nкласс `B` со `static` элементами. В подпакете `p2` создайте подпакет `p3`, в нём\nкласс `C`. Создайте новый пакет `p4`, в нём класс `D`. В пакете `p4` создайте\nподпакет `p5`, в нём класс `E`. Внутри класса `D` напишите код, который\nбудет задействовать любые элементы классов `A`, `C`, `E`, а также `static`\nэлементы класса `B`. Используя выражения `import` и `import static`,\nработайте с не полными именами классов.\n\n## Homework 11: Использование примитивных и ссылочных типов данных при вызове метода.\nСоздайте класс `Car` с тремя переменными: цвет, мотор и количество\nдверей. Затем создайте класс `CarTest`, в котором должны быть 2 метода.\n1-ый изменяет количество дверей объекта класса `Car` на количество,\nпрописанное в параметре метода. 2-ой принимает в параметры 2 объекта\nкласса Car и меняет их цвета местами. Примените оба метода в `main` и\nвыведите на экран атрибуты всех объектов.\n\n## Homework 12: Конструкции «if» и «if else». Ternary оператор.\nВ классе `StudentTest` написать 2 метода, которые принимают 2 input\nпараметра – 2 объекта класса `Student`. Первый метод сравнивает 2-х студентов,\nиспользуя 1 `if` и логические операторы внутри него и выводит на экран информацию о том, равны ли\nстуденты. Второй метод использует nested `if` statement, сравнивает все\nатрибуты студента по отдельности, выводит на экран информацию о том,\nравны ли студенты, а если не равны, то в чём именно было обнаруженно\nпервое неравенство.\n\n## Homework 13: Конструкция «switch».\nВ классе `Month` создайте метод, у которого 1 параметр типа данных `int`.\nЭтот параметр будет указывать порядковый номер месяца. Используя\nфункционал `switch`, выведите на экран количество дней этого месяца.\nПроверьте работу данного метода в `main`.\n\n## Homework 14: Классический цикл «for». Выражения «break» и «continue».\nСоздать класс. В классе создать статичный метод, который будет\nвыводить на экран время в формате «час:минута:секунда» в интервале от\n0 до 6 часов. Если час больше единицы и минута кратна 10-ти, то метод\nнужно закончить. Если же (секунда умноженная на час) больше минуты,\nто пора переходить на другую минуту. Продемонстрировать данный\nметод в действии.\n\n## Homework 15: Циклы «while» и «do while».\nПереписать домашнее задание 14 так, чтобы outer и\ninner циклы представляли собой `while` loop, а middle цикл\nпредставлял собой `do while` loop.\n\n## Homework 16: Всё о классе String.\nСоздайте класс, в котором создайте метод email. Данный\nметод должен принимать в инпут 1 `String` параметр. Данный\nпараметр должен содержать в себе email-ы в следующем\nвиде: ya@yahoo.com; on@mail.ru; ona@gmail.com.\nПосле каждого e-mail должен стоять знак препинания “;”. Ваш\nметод должен выводить на экран информацию о том, какой\nпочтой пользуются, исходя из параметра, т.е. оутпут должен\nбыть следующего вида: \n\n**yahoo**  \n**mail**  \n**gmail**  \n\nПродемонстрируйте данный метод.\n\n## Homework 17: Всё о классе StringBuilder.\nСоздайте класс, в котором создайте метод `equality`. Инпут\nпараметрами данного метода будут 2 объекта класса\n`StringBuilder`. Метод должен иметь `boolean` return type,\nвозвращать `true`, если значения объектов совпадают, `false` –\nесли не совпадают.  \nПродемонстрируйте данный метод.\n\n## Homework 18: Понятие «массив». Работа с массивами.\n1. Создайте класс, в котором создайте метод `sort`. Инпут\nпараметром данного метода будет одномерный массив типа\n`int`. Метод должен возвращать уже отсортированный по\nвозрастанию массив. Продемонстрируйте данный метод.\n2. Создайте класс, в котором создайте метод `showArray`. Инпут\nпараметром данного метода будет двумерный массив типа\n`String`. Метод должен выводить на экран данный массив в\nследующем виде:\n\n**{ {элемент00, элемент01}, {элемент10}, {элемент10, элемент11} }**\n\nСодержимое, естественно, будет зависеть от Вашего массива.  \nПродемонстрируйте данный метод.\n\n## Homework 19: Параметры метода типа varargs. Аргументы command line. Цикл foreach\nСоздайте метод `abc`, инпут параметр которого – N-ое\nколичество массивов типа `String`. В методе создайте новый\nмассив, который будет состоять из элементов массивов-\nпараметров и будет оутпутом данного метода. В методе `main`\nвызовите метод abc и его элементам, которые равны\nзначениям command line параметров, присвойте значение\n`null`. Выведите элементы обновлённого массива на экран.\nВезде, где возможно, используйте `foreach loop`.\nЗапустите приложение с командной строки.\n\n## Homework 20: Всё о классе ArrayList.\nСоздайте класс, в котором создайте метод `abc`. Инпут\nпараметром данного метода будет N-ое количество\nпараметров типа `String`. Метод должен возвращать уже\nотсортированный объект `ArrayList` из неповторяющихся\nобъектов типа `String`, взятых из параметра метода и выводить\nданный объект на экран.\nПродемонстрируйте данный метод.\n\n## Homework 21: Инкапсуляция. Super. Protected\n1. Создайте класс `Student` со следующими переменными: `name` (используйте\n`StringBuilder`), `course`, `grade`. Примените инкапсуляцию к данному классу.\nДлина имени объектов не должна быть менее 3-х символов, оценки должны\nбыть числами в интервале от 1 до 10, курс должен быть числом от 1 до 4\nвключительно. Создайте метод `showInfo`, который будет выводить всю\nинформацию о студенте, не используя переменные класса напрямую.\nСоздайте класс `TestStudent`, в котором создайте объект класса `Student`,\nпридайте его переменным значения. Произведите вызов метода `showInfo`.\n\n\n2. Создайте класс `Animal`. При вызове его конструктора пусть на экран выводится _\"I\nam animal\"_. В классе пусть будут переменная `eyes`, характеризующая количество глаз;\nметоды `eat` (выводящий на экран _\"Animal eats\"_) и `drink` (выводящий на экран _\"Animal\ndrinks\"_). \n\n   Создайте класс `Pet`, который является child классом класса `Animal`. При вызове его\nконструктора пусть на экран выводится _\"I am pet\"_ и переменной `eyes` придаётся\nзначение 2. В классе пусть будут переменные `name`; `tail`, характеризующая\nколичество хвостов и равная 1; `paw`, характеризующая количество лап и равная 4;\nметоды `run` (выводящий на экран _\"Pet runs\"_) и `jump` (выводящий на экран _\"Pet jumps\"_).   \n\n   Создайте класс `Dog`, который является child классом класса `Pet`. При вызове его\nконструктора с параметром, который будет передавать имя, пусть на экран\nвыводится _\"I am dog and my name is: \"_ + имя питомца. В класс добавьте метод `play`\n(выводящий на экран _\"Dog plays\"_). \n\n   Создайте класс `Cat`, который является child классом класса `Pet`. При вызове его\nконструктора с параметром, который будет передавать имя, пусть на экран\nвыводится _\"I am cat and my name is: \"_ + имя питомца. В класс добавьте метод `sleep`\n(выводящий на экран _\"Cat sleeps\"_).   \n\n   Создайте класс `Test`, в методе `main` которого выведите на экран количество лап\nобъекта класса `Dog` и вызовите метод `sleep` объекта класса `Cat`.\n\n## Homework 22: Overriding. Hiding. Final.\n**Test 1**   \nКаков будет результат компиляции и запуска класса `Y`?\n```java\npackage p1;\n\npublic class X {\n    X() {}\n\n    public void abc() {\n        System.out.println('X');\n    }\n}\n```\n```java\npackage p2;\nimport p1.*;\n\npublic class Y extends X {\n   Y() {}\n\n   public void abc() {\n      System.out.println('Y');\n   }\n\n   public static void main(String[] args) {\n      Y y = new Y();\n      y.abc();\n   }\n}\n```\n**Test 2**   \nКаков будет результат компиляции и запуска класса `Y`?\n```java\npackage p1;\n\npublic class X {\n    protected void abc() {\n        System.out.println('X');\n    }\n}\n```\n```java\npackage p2;\nimport p1.*;\n\npublic class Y extends X {\n   public void abc() {\n      System.out.println('Y');\n   }\n\n   public void def() {\n      Y y = new Y();\n      y.abc();\n   }\n\n   public void ghi() {\n      X x = new Y();\n      x.abc();\n   }\n\n   public static void main(String[] args) {\n      Y a = new Y();\n      a.abc();\n      a.def();\n      a.ghi();\n   }\n}\n```\n**Test 3**   \nКаков будет результат компиляции и запуска классов `X` и `Y`?\n```java\npublic class X {\n    public X() {\n        System.out.println(\"X\");\n    }\n\n    public X(int i) {\n        System.out.println(\"X\" + i);\n    }\n\n    private boolean abc() {\n        return false;\n    }\n\n    public static void main(String[] args) {\n        X x = new Y(18);\n        System.out.println(x.abc());\n    }\n}\n\nclass Y extends X {\n    public Y(int i) {\n        System.out.println(\"Y\");\n    }\n\n    public boolean abc() {\n        return true;\n    }\n}\n```\n**Test 4**   \nКаков будет результат компиляции и запуска класса `Test`?\n```java\npublic class Test {\n    public static void abc(X x, Y y) {\n        System.out.println(\"privet\");\n    }\n\n    public static void abc(Y y, X x) {\n        System.out.println(\"poka\");\n    }\n\n    public static void main(String[] args) {\n        Y a = new Y();\n        abc(a, a);\n    }\n}\n\nclass X {\n}\n\nclass Y extends X {\n}\n```\n**Test 5**    \nКаков будет результат компиляции и запуска класса `Test`?\n```java\npublic class Test {\n    public static void main(String[] args) {\n        X x = new Y ();\n        System.out.println(x.s1 + \" \" + x.bool);\n    }\n}\n\nclass X{\n    String s1 = \"privet\";\n}\n\nclass Y extends X {\n    boolean bool = false;\n}\n```\n\n## Homework 23: Абстрактные классы и интерфейсы.\nСоздайте абстрактный класс `Animal`, его конструктор пусть имеет параметр, значение которого\nназначается переменной `String name`. В классе `Animal` создайте абстрактные методы `eat` и `sleep`.\n\nСоздайте абстрактный класс `Fish`, который является дочерним классом класса `Animal`, его конструктор\nпусть имеет параметр, значение которого назначается переменным `name` данного и родительского\nкласса. В классе `Fish` перезапишите метод `sleep` так, чтобы он выводил на экран _\"Всегда интересно\nнаблюдать, как спят рыбы\"_. Также здесь создайте абстрактный метод `swim`.\n\nСоздайте абстрактный класс `Bird`, который является дочерним классом класса `Animal`, его конструктор\nпусть имеет параметр, значение которого назначается переменным `name` данного и родительского\nкласса. Также здесь создайте абстрактный метод `fly`.\n\nСоздайте абстрактный класс `Mammal`, который является дочерним классом класса `Animal`, его\nконструктор пусть имеет параметр, значение которого назначается переменным `name` данного и\nродительского класса. Также здесь создайте абстрактный метод `run`.\n\nСоздайте интерфейс `Speakable`, в котором пусть будет дефолтный метод `speak`, который выводит на\nэкран _\"Somebody speaks\"_ . Пусть класс `Mammal` имплементирует этот интерфейс. Также пусть класс `Bird`\nимплементирует этот интерфейс и перезаписывает его метод так, чтоб он выводил на экран `name` + _\"\nsings\"_.\n\nСоздайте класс `Mechenosec`, который является дочерним классом класса `Fish`, его конструктор пусть\nимеет параметр, значение которого назначается переменным `name` данного и родительского класса. В\nклассе `Mechenosec` перезапишите метод `swim` так, чтобы он выводил на экран _\"Меченосец красивая\nрыба, которая быстро плавает!\"_. Также перезапишите метод `eat` так, чтобы он выводил на экран\n_\"Меченосец не хищная рыба, и она ест обычный рыбий корм!\"_.\n\nСоздайте класс `Pingvin`, который является дочерним классом класса `Bird`, его конструктор пусть имеет\nпараметр, значение которого назначается переменным `name` данного и родительского класса. В классе\n`Pingvin` перезапишите метод `eat` так, чтобы он выводил на экран _\"Пингвин любит есть рыбу!\"_. Также\nперезапишите метод `sleep` так, чтобы он выводил на экран _\"Пингвины спят прижавшись друг к другу!\"_. Также\nперезапишите метод `fly` так, чтобы он выводил на экран _\"Пингвины не умеют летать!\"_. Также перезапишите\nметод `speak` так, чтобы он выводил на экран \"_Пингвины не умеют петь как соловьи!\"_.\n\nСоздайте класс `Leo`, который является дочерним классом класса `Mammal`, его конструктор пусть имеет\nпараметр, значение которого назначается переменным `name` данного и родительского класса. В классе\n`Leo` перезапишите метод `eat` так, чтобы он выводил на экран _\"Лев, как любой хищник, любит мясо!\"_. Также\nперезапишите метод `sleep` так, чтобы он выводил на экран _\"Большую часть дня лев спит!\"_. Также\nперезапишите метод `run` так, чтобы он выводил на экран _\"Лев - это не самая быстрая кошка!\"_.\n\nВ классе `Homework23` создайте `main` метод, в котором:\n\n1. Создайте объект класса `Mechenosec`, на который ссылается переменная типа `Mechenosec`, выведите\n   переменную `name` данного объекта и вызовите все методы, которые сможете вызвать с помощью\n   данной переменной;\n2. Создайте объект класса `Pingvin`, на который ссылается переменная типа `Speakable`, вызовите все\n   методы, которые сможете вызвать с помощью данной переменной;\n3. Создайте объект класса `Leo`, на который ссылается переменная типа `Animal`, выведите переменную\n   name данного объекта и вызовите все методы, которые сможете вызвать с помощью данной\n   переменной;\n4. Создайте ещё один объект класса `Lev`, на который ссылается переменная типа `Mammal`, выведите\n   переменную `name` данного объекта и вызовите все методы, которые сможете вызвать с помощью\n   данной переменной.\n\n## Homework 24: Исключения и ошибки\nСоздайте 2 исключения.\n\nПервое пусть является дочерним классом класса `RuntimeException` и называется\n`NeMyasoException`; в нём создайте конструктор, который принимает 1 `String`\nпараметр и передаёт его конструктору `super` класса.\n\nВторое пусть является дочерним классом\nкласса `Exception` и называется `NeVodaException`; в нём создайте конструктор, который\nпринимает 1 `String` параметр и передаёт его конструктору `super` класса.\n\nСоздайте класс `Tiger`. Первый метод класса - метод `eat` будет иметь return type `void` и\nпринимать 1 `String` параметр. Если данный параметр не равен “мясо”, то пусть\nметод выбрасывает объект `NeMyasoException` с параметром \"Тигр не ест \" + параметр\nметода. Если данный параметр равен String “мясо”, то пусть на экран выводится “Тигр ест мясо”.\nВторой метод класса - метод `drink` будет иметь return type `void` и принимать 1 `String`\nпараметр. Если данный параметр не равен `String` “вода”, то пусть метод выбрасывает\nобъект `NeVodaException` с параметром \"Тигр не пьет \" + параметр метода. Если данный\nпараметр равен `String` “вода”, то пусть на экран выводится “Тигр пьет воду”.\n\nВ классе `Homework24` внутри метода `main` создайте объект класса `Tiger`. Вызовите метод `eat` с\nпараметром “мясо”. Затем в блоке `try` вызовите метод `drink` с параметром \"вода\". В данном\nблоке `try` создайте ещё один блок `try`, где вызовите метод `drink` с параметром \"пиво\". Во\nвнешнем блоке `try` пусть также размещаются блок `catch`, который ловит исключения типа\n`Exception` и в своем теле выводит на экран мессаж данного исключения; блок `catch`, который\nловит исключения типа `NeVodaException` и в своем теле выводит на экран мессаж данного\nисключения; блок `finally`, который в своем теле выводит на экран \"Это inner finally блок“. К\nвнешнему `try` блоку пусть относятся блок `catch`, который ловит исключения типа `Exception` и\nв своем теле выводит на экран мессаж данного исключения; блок `catch`, который ловит\nисключения типа `RuntimeException` и в своем теле выводит на экран мессаж данного\nисключения.\n\n## Homework 25: Классы, отвечающие за работу с датами и временем.\nСоздайте класс. Внутри класса создайте 2 шаблона с помощью класса\n`DateTimeFormatter`.\n\n1-ый шаблон подгоните под вид _«2016, января-01 !! 09:00»_, \n\n2-ой - под вид _«09:00, 03/фев/16»_.\n\nСоздайте метод `smena`, который принимает в\nпараметры объекты следующих классов: 2 объекта `LocalDateTime`, 1 объект\n`Period`, 1 объект `Duration`. До тех пор, пока 1-ый объект `LocalDateTime` меньше\n(раньше) 2-го проделывайте все следующие действия (даже если во время\nданных действий 1-ый объект `LocalDateTime` уже не меньше 2-го) раз за разом:\n1. Выводите на экран «Работаем с: » + дата и время 1-го объекта с\n   использованием 1-го шаблона;\n2. Увеличивайте данный (1-ый) объект на период и выводите на экран « До: » +\n   дата и время изменённого 1-го объекта с использованием 1-го шаблона;\n3. Выводите на экран «Отдыхаем с: » + дата и время изменённого 1-го объекта с\n   использованием 2-го шаблона;\n4. Увеличивайте данный (1-ый) объект на продолжительность и выводите на\n   экран « До: » + дата и время изменённого 1-го объекта с использованием 2-го\n   шаблона.\n\n   Старайтесь, чтобы вывод был читабельным.\n\n   В методе `main` создайте все необходимые объекты и запустите с их помощью\n   метод `smena`.\n\n## Homework 26: Лямбда выражения.\nСоздайте класс `Employee`, у которого будут переменные `name`, `department` и\n`salary`. Задавайте значения этим переменным при создании объекта.\n\nВ классе `TestEmployee` создайте метод `printEmployee`, который принимает в\nпараметр объект класса `Employee` и выводит на экран всю информацию о данном\nработнике. Используя интерфейс `Predicate`, создайте в классе `TestEmployee` метод\n`employeeFilter`, который помимо объекта `Predicate` принимает в параметр\n`ArrayList` работников и выводит на экран информацию о всех работниках из\n`ArrayList` , которые подходят под определённые условия.\n\nВ методе `main` класса `TestEmployee` создайте `ArrayList` работников и заполните его\nобъектами класса `Employee`. Затем, используя данный `ArrayList` и лямбда\nвыражения, трижды вызовете метод `employeeFilter` таким образом, чтобы\nвыведенные на экран работники подходили под следующие условия:\nВ первый раз: департамент работника должен быть \"IT\", а з/п больше 200;\nВо второй раз: имя работника должно начинаться с \"E\", а з/п не должна быть 450;\nВ третий раз: имя работника должно быть такое же, что и у его департамента.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradmitr%2Fjava-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fradmitr%2Fjava-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradmitr%2Fjava-course/lists"}