[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 руб.
Другие работы
Теория вероятностей математическая статистика и случайные процессы (2 сем.) Контрольная работа №1 Вариант 5
Keeper
: 8 мая 2018
Вариант: 5
Задача 1 (текст 2): вероятность появления поломок на каждой из соединительных линий равна . Какова вероятность того, что хотя бы две линии исправны?
Задача 2 (текст 3): в одной урне белых шаров и черных шара, а в другой - белых и черных. Из первой урны случайным образом вынимают шара и опускают во вторую урну. После этого из второй урны также случайно вынимают шара. Найти вероятность того, что все шары, вынутые из второй урны, белые.
Задача 3 (текст 4): в типографии им
100 руб.
Разработка комбинированного агрегата для предпосевной обработки почвы на базе культиватора (дипломный проект)
Shloma
: 11 июля 2025
Дипломный проект
на тему «Разработка комбинированного агрегата для предпосевной обработки почвы на базе культиватора» 4 записи формата А4 на 135 страницах и 11 листов графической части формата А1. В П3 приведены 19 рисунков, 19 таблиц и 30 источников информационных ресурсов.
Представлено следующее: обзор существующих в настоящее время технологий предпосевной обработки, бенчмаркинг современных агрегатов и машин для предпосевной обработки, описана суть разрабатываемого агрегата для предпосевной
1590 руб.
Сутність впливу глобалізації на стратегії розвитку національних економік
evelin
: 16 ноября 2013
Зміст
Вступ
1. Сутність процесу глобалізації, її позитивні та негативні наслідки
2. Вплив глобалізації на економічну політику
3. Основні напрями стратегії розвитку національної економіки України
Висновки
Список використаної літератури
Вступ
Процес глобалізації є однією з найактуальніших проблем на сьогодні оскільки характеризує стан і розвиток сучасної економічної системи. Все більш гострим стає питання розвитку країн з перехідною економікою та тих, що розвиваютьс
5 руб.
Задачи по облигациям
Sannet78
: 21 октября 2020
1. Инвестор приобрел две облигации номиналом 500руб. каждая. Процентный доход по одной составляет 5,5%, по другой – 5,3%. Какова разность годового дохода между ними?
2. Облигация номиналом 1000руб, процентным доходом 20% и сроком обращения 1год, продается через 120 дней после ее приобретения у эмитента. Какова цена облигации при прочих равных рыночных условиях?
200 руб.