[Skillbox] Java-разработчик - модуль 13 - Наследование. 2023 год.
Состав работы
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дополнительная информация
Необходимые программы
Работа представляет собой zip архив с файлами (распаковать онлайн), которые открываются в программах:
- Программа для просмотра изображений
Описание
[Skillbox] Java-разработчик - модуль 13 - Наследование. 2023 год.
Задача 1 - BankAccount
Задача 2 - BankAccount(модификаторы доступа).
Задача 3 - Client
Задача 4 - Company
Задача 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<Employee> getTopSalaryStaff(int count),
List<Employee> 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, превышающие количество сотрудников в компании, или отрицательные.
Цель
Освоить на практике наследование классов.
Что нужно сделать
Выполните задание в директории 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<Employee> getTopSalaryStaff(int count),
List<Employee> 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-разработчик - модуль 10 - массивы и коллекции. 2023 год.
StudentHelp
: 18 апреля 2023
[Skillbox] Java-разработчик - модуль 10 - массивы и коллекции. 2023 год.
Задача 1 - ReverseArray
Задача 2 - Hospital
Задача 3 - TwoDimensionalArray
Задача 4 - TodoList
Задача 5 - EmailList
Задача 6 - PhoneBook
Задача 7 - CoolNumbers
850 руб.
[Skillbox] Java-разработчик - ВСЕ РЕШЕНИЯ НА ВСЕ МОДУЛИ !!!
StudentHelp
: 20 декабря 2021
[Skillbox] Java-разработчик - ВСЕ РЕШЕНИЯ НА ВСЕ МОДУЛИ
Представлены все решения на все модули курса Java - разработчик . Сдано в 2021 году!
Модули:
03_ObjectsAndClasses
04_NumbersStringsAndDates
05_ArraysAndCollections
05_StaticFinal
06_InheritanceAndPolymorphism
07_AdvancedOOPFeatures
07_NumbersAndDates
08_ExceptionsDebuggingAndTesting
09_FilesAndNetwork
10_SQLAndHibernate
11_Multithreading
12_SpringBootWebDevelopment
13_NoSQL
15_BigData
16_Performance
18_Algorithms
19_Data
2000 руб.
[Skillbox] Java-разработчик - модуль 9 - Строки
StudentHelp
: 11 апреля 2023
[Skillbox] Java-разработчик - модуль 9 - Строки
Задание 1 - SequentialWordsNumbers
Задание 2 - SplitText
Задание 3 - PhoneCleanerRegex
Задание 4 - TotalEarningsCalculator
Задание 5 - FullNameFormatter
Задание 6 -TotalEarningsCalculatorRegex
Задание 7 - FullNameFormatterRegex
720 руб.
[Skillbox] Java-разработчик - модуль 7 - Примитивы
StudentHelp
: 5 апреля 2023
[Skillbox] Java-разработчик - модуль 7 - Примитивы
Задача 1 - Запустите код проекта IntOrInteger, найдите ошибку и исправьте класс Container.
Задача 2 - Напишите в этом же проекте код, который с помощью цикла и преобразования чисел в символы найдёт все числовые коды букв русского алфавита — заглавных и строчных, в том числе буквы Ё.
390 руб.
[Skillbox] Java-разработчик - модуль 8 - числа и строки
StudentHelp
: 8 апреля 2023
[Skillbox] Java-разработчик - модуль 8 - числа и строки
Задача 1 - TrucksAndContainers
Задача 2 - Birthdays
Задача 3 - GeometryCalculator
Задача 4 - Periods
750 руб.
Skillbox. Итоговый проект курса «Поисковый движок». Java-разработчик.
StudentHelp
: 25 марта 2025
Skillbox. Java-разработчик. Итоговый проект курса «Поисковый движок»
Данный проект сдан в 2021 году, но актуален по сей день.
Проект включает описание самого, проекта, техническую спецификацию, Т.З, критерий оценивания, а также описание подключение и создание базы и таблиц, а также скрипт для создания самих таблиц.
В стоимость входит поддержка и исправление замечаний от куратора на всем пути до сдачи проекта.
4000 руб.
[Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.18 - MovementsList
StudentHelp
: 24 декабря 2023
[Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.18 - MovementsList
Цель задания
Научиться читать файл CSV и анализировать его.
Что нужно сделать
Задание выполняйте в проекте
FilesAndNetwork/homework_3
Напишите код, который будет читать файл csv банковской выписки movementsList.csv и парсить полученные строки. Путь к файлу выписки храните в константе. Получение суммы расхода и дохода по всем операциями реализуйте в классе Movements, в методах getExpenseSum() и getIncomeSu
400 руб.
[Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.19 - Lenta
StudentHelp
: 24 декабря 2023
[Skillbox] Java-разработчик - модуль 19 - Практическая работа 19.19 - Lenta
Цель задания
Научиться получать изображения с сайта парсингом, используя библиотеку jsoup.
Что нужно сделать
Напишите программу, которая:
получает с помощью библиотеки jsoup HTML-код страницы
находит в HTML-коде теги img и получает абсолютные ссылки на изображения из атрибута src;
скачивает изображения в папку images проекта, при этом сохраняя оригинальные названия файлов;
выводит в консоль список c названиями скача
400 руб.
Другие работы
Социология и право. Вариант №12
IT-STUDHELP
: 14 июня 2021
Вариант №12
ТЕМА!!!Право как социальный институт
Содержание
Введение 3
1. Понятие право как социальный институт 4
2. Основные функции права 10
Заключение 18
Список использованных источников 19
200 руб.
Построение диаграмм с помощью процессора Microsoft Excel
Саша78
: 9 апреля 2020
УЧЕБНЫЕ ЦЕЛИ
Эта лабораторная работа поможет Вам:
• научиться строить графики на основе данных, содержащихся на рабочем листе;
• настраивать формат диаграммы;
• задавать отображаемые данные и оформлять получающуюся диаграмму.
100 руб.
Информатика. 5-й билет
Philosoph
: 8 октября 2019
1. Основы алгоритмического языка Си: Операторы цикла с условием.
При решении различных задач часто приходится выполнять многократно повторяющиеся вычисления. Для эффективной организации подобного рода действий служат циклические конструкции.
2. Написать подпрограмму-функцию, которая находит в целочисленном массиве любого размера количество отрицательных чисел;
Оценка:Отлично
250 руб.
Экзаменационная работа по математическому анализу. Билет № 9. (2-й семестр)
Jack
: 26 марта 2013
Вопрос №1: Скалярное поле, линии и поверхности уровня, производная по направлению.
Задача №2: Вычислить объём тела, ограниченного поверхностями:
x+y=4, x=корень(2y), z=(3/5)x, z=0
Задача №3: Вычислить градиент скалярного поля U(x,y)=(1/4)x^(2)-y+1 в точке M(2;2). Построить градиент и линию уровня поля, проходящую через точку M.
Задача №4: Вычислить поток векторного поля a=x^(2)i+xyj+3zk через поверхность G:
x^(2)+y^(2)=z^(2), z=4
Задача №5: Применяя формулу Стокса, вычислить циркуляцию вект
450 руб.