[Skillbox] Java-разработчик - модуль 13 - Наследование. 2023 год. (Решение → 56812)

Описание

[Skillbox] Java-разработчик - модуль 13 - Наследование. 2023 год.

Задача 1 - BankAccount

Задача 2 - BankAccount(модификаторы доступа).

Задача 3 - Client

Задача 4 - Company

Оглавление

Задача №1ЦельОсвоить на практике наследование классов.Что нужно сделатьВыполните задание в директории master/src/main/java/practice. В проекте найдите класс BankAccount и унаследованные от него классы CardAccount и DepositAccount.Реализуйте методы классов, при необходимости переопределите

Задача №1

Цель

Освоить на практике наследование классов.

Что нужно сделать

Выполните задание в директории master/src/main/java/practice.

  • В проекте найдите класс BankAccount и унаследованные от него классы CardAccount и DepositAccount.
  • Реализуйте методы классов, при необходимости переопределите методы в наследниках так, чтобы выполнялись условия пополнения и снятия:
  • BankAccount — пополнение и списание происходит без комиссии. Если передать в метод пополнения отрицательное значение, сумма на счёте не должна измениться. При попытке снять большую сумму, чем есть на счёте, сумма не списывается со счёта, сумма на счёте не изменяется.
  • CardAccount — карточный счёт, в дополнение к условиям BankAccount — при снятии денег должна взиматься комиссия 1% от суммы списания. Пример: при попытке снять со счёта 100 рублей должен списаться 101 рубль.
  • DepositAccount — депозитный расчётный счёт, в дополнение к условиям BankAccount — нельзя снимать деньги в течение одного месяца после последнего пополнения. Переменную, в которой хранится дата последнего внесения, назовите lastIncome. Тип переменной используйте Calendar или LocalDate.


  • Запустите в проекте тесты и убедитесь в том, что они выполняются успешно. Если тесты не выполняются и выдают информацию об ошибках, постарайтесь самостоятельно исправить эти недочёты и добиться успешного выполнения тестов перед отправкой результатов куратору.


Задача №2

Цель

Научиться выбирать подходящие модификаторы доступа.

Что нужно сделать

Используйте код предыдущего задания. Установите в коде проекта подходящие модификаторы доступа у методов и переменных классов BankAccount, CardAccount и DepositAccount.

Критерии оценки работы

Принято:

  • для всех переменных и методов установлены подходящие модификаторы доступа.

На доработку:

  • задание не выполнено


Задача № 3

Цель

Освоить работу с наследованием, используя абстрактный класс.

Что нужно сделать

Выполните задание в директории src/main/java/practice

  1. В проекте найдите абстрактный класс Client и его наследников IndividualBusinessman, LegalPerson и PhysicalPerson.
  2. Реализуйте методы классов, при необходимости переопределите методы в наследниках так, чтобы выполнялись условия пополнения и снятия:

У каждого клиента есть сумма денег на счету (число). Деньги можно положить на счёт, снять и вернуть остаток на счёте. Каждый класс должен содержать метод, который выводит информацию в консоль о счёте: условие пополнения, условие снятия и баланс.

  • У PhysicalPerson пополнение и списание происходит без комиссии. Если передать в метод пополнения отрицательное значение, сумма на счёте не должна измениться. При попытке снять сумму больше, чем есть на счете, сумма не списывается со счёта, сумма на счёте не изменяется.
  • У LegalPerson — все условия PhysicalPerson и дополнительно снятие с комиссией 1%.
  • У IndividualBusinessman — все условия PhysicalPerson и дополнительно, пополнение с комиссией 1%, если сумма меньше 1 000 рублей. И пополнение с комиссией 0,5%, если сумма больше либо равна 1 000 рублей.


Задача № 4

Цель

Научиться работать с интерфейсами, абстрактными классами и взаимодействием классов.

Что нужно сделать

  • создать новый проект в папке InheritanceAndPolymorphism/homework_4 и написать все требуемые классы

1. Создайте класс компании Company, содержащей сотрудников и реализующей методы:

  • найм одного сотрудника — hire(),
  • найм списка сотрудников – hireAll(),
  • увольнение сотрудника – fire(),
  • получение значения дохода компании – getIncome().

Аргументы и возвращаемое значение методов выберите на основании логики работы вашего приложения.

2. Создайте два метода, возвращающие список указанной длины (count). Они должны содержать сотрудников, отсортированных по убыванию и возрастанию заработной платы:

  • List<Employee> getTopSalaryStaff(int count),
  • List<Employee> getLowestSalaryStaff(int count).

3. Создайте классы сотрудников с информацией о зарплатах и условиями начисления зарплаты:

  • Manager — зарплата складывается из фиксированной части и бонуса в виде 5% от заработанных для компании денег. Количество заработанных денег для компании генерируйте случайным образом от 115 000 до 140 000 рублей.
  • TopManager — зарплата складывается из фиксированной части и бонуса в виде 150% от заработной платы, если доход компании более 10 млн рублей.
  • Operator — зарплата складывается только из фиксированной части.

Каждый класс сотрудника должен имплементировать интерфейс Employee. В интерфейсе Employee должен быть объявлен метод, возвращающий зарплату сотрудника:

  • getMonthSalary()

Аргументы и возвращаемое значение метода выберите в соответствии с логикой начисления зарплат. В интерфейсе при необходимости объявляйте необходимые методы.


Для демонстрации и тестирования работы ваших классов:

  1. Создайте и наймите в компанию: 180 операторов Operator, 80 менеджеров по продажам Manager, 10 топ-менеджеров TopManager.
  2. Распечатайте список из 10–15 самых высоких зарплат в компании.
  3. Распечатайте список из 30 самых низких зарплат в компании.
  4. Увольте 50% сотрудников.
  5. Распечатайте список из 10–15 самых высоких зарплат в компании.
  6. Распечатайте список из 30 самых низких зарплат в компании.


Примеры вывода списка зарплат

Список из пяти зарплат по убыванию:

  • 230 000 руб.
  • 178 000 руб.
  • 165 870 руб.
  • 123 000 руб.
  • 117 900 руб.

Рекомендации

  • Сделайте возможным создавать разные экземпляры компании со своим списком сотрудников и доходом.
  • Чтобы получить данные компании внутри класса сотрудника, настройте хранение ссылки на Company и передавайте объект Company с помощью конструктора или сеттера.
  • Учтите, в методы получения списков зарплат могут передаваться значения count, превышающие количество сотрудников в компании, или отрицательные.
    
            Описание
            [Skillbox] Java-разработчик - модуль 13 - Наследование. 2023 год.Задача 1 - BankAccountЗадача 2 - BankAccount(модификаторы доступа).Задача 3 - ClientЗадача 4 - Company 
            Оглавление
            Задача №1ЦельОсвоить на практике наследование классов.Что нужно сделатьВыполните задание в директории master/src/main/java/practice. В проекте найдите класс BankAccount и унаследованные от него классы CardAccount и DepositAccount.Реализуйте методы классов, при необходимости переопределите методы в наследниках так, чтобы выполнялись условия пополнения и снятия:BankAccount — пополнение и списание происходит без комиссии. Если передать в метод пополнения отрицательное значение, сумма на счёте не должна измениться. При попытке снять большую сумму, чем есть на счёте, сумма не списывается со счёта, сумма на счёте не изменяется.CardAccount — карточный счёт, в дополнение к условиям BankAccount — при снятии денег должна взиматься комиссия 1% от суммы списания. Пример: при попытке снять со счёта 100 рублей должен списаться 101 рубль.DepositAccount — депозитный расчётный счёт, в дополнение к условиям BankAccount — нельзя снимать деньги в течение одного месяца после последнего пополнения. Переменную, в которой хранится дата последнего внесения, назовите lastIncome. Тип переменной используйте Calendar или LocalDate.Запустите в проекте тесты и убедитесь в том, что они выполняются успешно. Если тесты не выполняются и выдают информацию об ошибках, постарайтесь самостоятельно исправить эти недочёты и добиться успешного выполнения тестов перед отправкой результатов куратору.Задача №2ЦельНаучиться выбирать подходящие модификаторы доступа.Что нужно сделатьИспользуйте код предыдущего задания. Установите в коде проекта подходящие модификаторы доступа у методов и переменных классов BankAccount, CardAccount и DepositAccount.Критерии оценки работыПринято:для всех переменных и методов установлены подходящие модификаторы доступа.На доработку:задание не выполненоЗадача № 3Цель Освоить работу с наследованием, используя абстрактный класс.Что нужно сделатьВыполните задание в директории src/main/java/practice В проекте найдите абстрактный класс Client и его наследников IndividualBusinessman, LegalPerson и PhysicalPerson.Реализуйте методы классов, при необходимости переопределите методы в наследниках так, чтобы выполнялись условия пополнения и снятия:У каждого клиента есть сумма денег на счету (число). Деньги можно положить на счёт, снять и вернуть остаток на счёте. Каждый класс должен содержать метод, который выводит информацию в консоль о счёте: условие пополнения, условие снятия и баланс.У PhysicalPerson пополнение и списание происходит без комиссии. Если передать в метод пополнения отрицательное значение, сумма на счёте не должна измениться. При попытке снять сумму больше, чем есть на счете, сумма не списывается со счёта, сумма на счёте не изменяется.У LegalPerson — все условия PhysicalPerson и дополнительно снятие с комиссией 1%.У IndividualBusinessman — все условия PhysicalPerson и дополнительно, пополнение с комиссией 1%, если сумма меньше 1 000 рублей. И пополнение с комиссией 0,5%, если сумма больше либо равна 1 000 рублей.Задача № 4Цель Научиться работать с интерфейсами, абстрактными классами и взаимодействием классов. Что нужно сделатьсоздать новый проект в папке InheritanceAndPolymorphism/homework_4 и написать все требуемые классы1. Создайте класс компании Company, содержащей сотрудников и реализующей методы:найм одного сотрудника — hire(),найм списка сотрудников – hireAll(),увольнение сотрудника – fire(),получение значения дохода компании – getIncome().Аргументы и возвращаемое значение методов выберите на основании логики работы вашего приложения.2. Создайте два метода, возвращающие список указанной длины (count). Они должны содержать сотрудников, отсортированных по убыванию и возрастанию заработной платы:List&lt;Employee&gt; getTopSalaryStaff(int count),List&lt;Employee&gt; getLowestSalaryStaff(int count).3. Создайте классы сотрудников с информацией о зарплатах и условиями начисления зарплаты:Manager — зарплата складывается из фиксированной части и бонуса в виде 5% от заработанных для компании денег. Количество заработанных денег для компании генерируйте случайным образом от 115 000 до 140 000 рублей.TopManager — зарплата складывается из фиксированной части и бонуса в виде 150% от заработной платы, если доход компании более 10 млн рублей.Operator — зарплата складывается только из фиксированной части.Каждый класс сотрудника должен имплементировать интерфейс Employee. В интерфейсе Employee должен быть объявлен метод, возвращающий зарплату сотрудника:getMonthSalary()Аргументы и возвращаемое значение метода выберите в соответствии с логикой начисления зарплат. В интерфейсе при необходимости объявляйте необходимые методы.Для демонстрации и тестирования работы ваших классов:Создайте и наймите в компанию: 180 операторов Operator, 80 менеджеров по продажам Manager, 10 топ-менеджеров TopManager.Распечатайте список из 10–15 самых высоких зарплат в компании.Распечатайте список из 30 самых низких зарплат в компании.Увольте 50% сотрудников.Распечатайте список из 10–15 самых высоких зарплат в компании.Распечатайте список из 30 самых низких зарплат в компании.Примеры вывода списка зарплатСписок из пяти зарплат по убыванию:230 000 руб.178 000 руб.165 870 руб.123 000 руб.117 900 руб. РекомендацииСделайте возможным создавать разные экземпляры компании со своим списком сотрудников и доходом.Чтобы получить данные компании внутри класса сотрудника, настройте хранение ссылки на Company и передавайте объект Company с помощью конструктора или сеттера.Учтите, в методы получения списков зарплат могут передаваться значения count, превышающие количество сотрудников в компании, или отрицательные.  
            
            
            [Skillbox] Java-разработчик. Модуль 11 Особенности ООП в Java. Решение задач домашней работы №11.1 и №11.2[Skillbox] Java-разработчик - модуль 13 - Наследование.  2023 год.[Skillbox] Java-разработчик - модуль 14 - Абстрактные классы и интерфейсы -  Практическая работа 14.9 - Company[Skillbox] Java-разработчик - модуль 15 - Практическая работа 15.14 - Airport.[Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.13 - DataCollector[Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.16 -  calculateFolderSize() класса FileUtils[Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.17 - calculateFolderSize() класса FileUtilsSince the start of the new millennium, British households ….. more than they earn. Выберите один ответ: a.had been spending b.are spending c.have been spending d.spendSinergya. Ответы по дисциплине: Профессиональная деятельность в условиях неопределённостиSit down, Peter. … mark is “good”. Выберите один или несколько ответов: 1.His 2.Your 3.You 4.MySIT транзисторы производятся с каналами[Skillbox] Java-разработчик - ВСЕ РЕШЕНИЯ НА ВСЕ МОДУЛИ !!! - 1200[Skillbox] Java-разработчик - модуль - 09_FilesAndNetwork[Skillbox] Java-разработчик - модуль 10 - массивы и коллекции. 2023 год.