Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
0 / 0 / 0
Регистрация: 08.04.2020
Сообщений: 12

Задача реализовать интерфейс и его наследников

15.12.2023, 07:36. Показов 3049. Ответов 41
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
Создайте интерфейс FastFood(), его наследников Sandwich и Hamburger.
Реализуйте методы приготовления и методы, позволяющим вывести
на экран информацию о товаре (состав фастфуда), а также определить, соответствует ли она сроку годности на текущую дату.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2023, 07:36
Ответы с готовыми решениями:

Реализовать интерфейс IDictionary с его методами
Здравствуйте. Помогите, пожалуйста, показать на примере, как работает интерфейс IDictionary с основными его методами.

Реализовать интерфейс, описывающий нахождение площади квадрата по его стороне
Реализовать интерфейс, описывающий нахождение площади квадрата по его стороне.

Создать функциональный интерфейс Pow с методом pow() для возведения числа в степень. Реализовать его через lambda
Создать функциональный интерфейс Pow с методом pow(int number, int pow), который принимает 2 параметра: 1 - число которое возводится в...

41
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1744 / 432
Регистрация: 14.03.2022
Сообщений: 4,435
21.12.2023, 17:19
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Обрати внимание - какого типа список? Какие объекты там лежат?
Т.е. нам для двух классов Sandwich и Hamburger нужно было делать список?

Ты читал само задание от ТСа?

Добавлено через 2 минуты
Цитата Сообщение от iSmokeJC Посмотреть сообщение
в твоем примере ты с помощью интерфейса инжектишь в классы один и тот же метод. Исключительно бестолковое использование интерфейса.
В книжке я прочитал иное...
Де это как раз путевое его предназначение. Если какому-то классу не нравится эго дефолтный подход - пусть переопределяет.

Потому я его и предложил.

Добавлено через 23 секунды
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Дефолтный метод не для этого предназначен
Расскажи для чего?
0
 Аватар для DOKTOP_JIEKTEP
75 / 64 / 25
Регистрация: 22.04.2017
Сообщений: 418
21.12.2023, 17:19
iSmokeJC, Я не сомневаюсь, что ты знаешь о чем пишешь и это, безусловно, правда. В условии задачи есть интерфейс и 2 его реализации, поэтому они есть в коде. Видимо, ты пытаешься объяснить то, что для меня некст левел пока что.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1744 / 432
Регистрация: 14.03.2022
Сообщений: 4,435
21.12.2023, 17:32
iSmokeJC, мне это реально интересно, потому и спрашиваю.

Я как раз надеялся что кто-то путевый увидит наши примеры и подкинет нам больше теории по этому вопросу с интерфейсом...

Добавлено через 1 минуту
iSmokeJC, и до списков я еще не дочитал.
Я пока читаю про многозадачность...

Добавлено через 10 минут
Цитата Сообщение от DOKTOP_JIEKTEP Посмотреть сообщение
Java
1
2
3
Sandwich sandwich1 = Sandwich.cookHamburger(13, 12, 2023, 2);
// ...
Hamburger hamburger1 = Hamburger.cookHamburger(13, 12, 2023, 2);
Возможно вот такая замена устроила бы камрада iSmokeJC

Java
1
2
3
FastFood sandwich1 = Sandwich.cookHamburger(13, 12, 2023, 2);
// ...
FastFood hamburger1 = Hamburger.cookHamburger(13, 12, 2023, 2);
Это еще один из вариантов использования интерфейсов...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.12.2023, 17:32
Цитата Сообщение от krvsa Посмотреть сообщение
И в книжке про это так же не написали.
Какая-то совсем уж галимая книга )))
Попробую объяснить со своей колокольни, простыми словами.
Интерфейс предназначен для объединения объектов различных типов (классов) по определенным критериям. Например по поведению, которое описывается методами в интерфейсе. Если мы определяем объект, реализующий данный интерфейс (implements), это говорит нам о том, что в данном объекте обязательно реализованы методы из интерфейса. Причем, как именно реализованы, и что делают - нам неважно. Мы знаем, что такие методы есть, принимают именно такие аргументы и возвращают именно тот тип данных.

Например. Замутим интерфейс Пердящий с методом пердеть().
Теперь мы в один массив типа Пердящий, можем собрать кучу объектов различных классов, которые реализуют этот интерфейс. Ака Человек, Корова, Подушка-пердушка и т.д. В последствии, перебирая этот массив циклом forEach, мы можем вызвать у каждого элемента метод пердеть(). Причем, мы можем даже и не знать, что за объекты лежат в данном массиве. Для нас важно, что любой из его элементов таки может пердеть()!!!

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

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

Блин, проще не объясню наверно. Не умею я объяснять
0
 Аватар для DOKTOP_JIEKTEP
75 / 64 / 25
Регистрация: 22.04.2017
Сообщений: 418
21.12.2023, 17:33
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Обрати внимание - какого типа список?
Интерфейсный тип
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Какие объекты там лежат?
Реализующие интерфейс, которым обобщена коллекция
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.12.2023, 17:38
DOKTOP_JIEKTEP, вот-вот!
0
 Аватар для DOKTOP_JIEKTEP
75 / 64 / 25
Регистрация: 22.04.2017
Сообщений: 418
21.12.2023, 17:43
iSmokeJC, но я все равно не понимаю суть проблемы. В задании просят описать интерфейс и 2 его реализации. Сделано. Да криво, да косо, но строго по условию.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.12.2023, 17:49
DOKTOP_JIEKTEP, задача - посчитать 1+2+3+4+5. Использовать цикл.
Решение -
Code
1
2
3
for(int i=0; i<1; i++){}
 
System.out.println(1+2+3+4+5);
Задача решена? Решена. Цикл есть? Есть. Все норм, строго по условию.
Впрочем, дело хозяйское.
0
 Аватар для DOKTOP_JIEKTEP
75 / 64 / 25
Регистрация: 22.04.2017
Сообщений: 418
21.12.2023, 17:54
Цитата Сообщение от iSmokeJC Посмотреть сообщение
System.out.println(1+2+3+4+5);
ну тут и мне смешно тоже.
Видимо, это и вправду некст левел, а понимание придет с опытом.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.12.2023, 17:57
DOKTOP_JIEKTEP, krvsa, придет безусловно. Потому как вы действительно учитесь и вникаете (в отличие от ТСа, которому любое ваше решение сойдет). Потому я и пнул вас, чтоб задумались и в книжки полезли. Своей цели я таки добился
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1744 / 432
Регистрация: 14.03.2022
Сообщений: 4,435
21.12.2023, 18:46
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Какая-то совсем уж галимая книга ))
Книжка для начинающих...

Добавлено через 1 минуту
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Если мы определяем объект, реализующий данный интерфейс (implements), это говорит нам о том, что в данном объекте обязательно реализованы методы из интерфейса. Причем, как именно реализованы, и что делают - нам неважно. Мы знаем, что такие методы есть, принимают именно такие аргументы и возвращают именно тот тип данных.
Примерно так и начинается описание что такое интерфейс... Потом там далее объясняется что методы еще можно и дефолтно определить, Де это бывает очень полезно. Что я и сделал.

Добавлено через 2 минуты
Цитата Сообщение от iSmokeJC Посмотреть сообщение
вот-вот!
Так что у нас не так?

Добавлено через 2 минуты
iSmokeJC, вот эта книжка - Java. Руководство для начинающих. 9 изд. Герберт Шилдт (2023) на русском.
Довольно свежая, на 750 страниц. Я посчитал что для начала вполне подойдет, поскольку следующая более чем на 1000 страниц.

Добавлено через 9 минут
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Например. Замутим интерфейс Пердящий с методом пердеть().
В чем будет преимущество по сравнении с использованием абстрактного класса?

В других ЯП с классами и наследованием все делалось без интерфейсов. Теперь же хотелось бы придумать некое мнемоническое правило, которое бы позволило быстро определить - тут будет интерфейс, а тут уже абстрактный класс.

Я специально гуглил на тему "интерфейс или класс"...
Но в статьях что читал нашел только сравнения что есть или чего нет в том или другом, но не более того. Т.ч. когда и что применять сказать с уверенностью пока не могу.
0
 Аватар для DOKTOP_JIEKTEP
75 / 64 / 25
Регистрация: 22.04.2017
Сообщений: 418
21.12.2023, 18:53
Цитата Сообщение от krvsa Посмотреть сообщение
следующая более чем на 1000 страниц.
Эккель?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1744 / 432
Регистрация: 14.03.2022
Сообщений: 4,435
21.12.2023, 19:20
DOKTOP_JIEKTEP, все по Java же - Java. Полное руководство 12-е издание (2023г.)
0
 Аватар для DOKTOP_JIEKTEP
75 / 64 / 25
Регистрация: 22.04.2017
Сообщений: 418
21.12.2023, 19:52
Цитата Сообщение от krvsa Посмотреть сообщение
Java. Полное руководство 12-е издание (2023г.)
на русском такого нет, насколько я знаю. В оригинале, возможно, есть. Я имею в виду издание 23 года.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1744 / 432
Регистрация: 14.03.2022
Сообщений: 4,435
22.12.2023, 12:44
Цитата Сообщение от Arsegg Посмотреть сообщение
Почему не enum?
Я начал читать про перечисления.
Теперь можно обсудить и это.

Используя массив (как я предлагал ранее), можно использовать любые строки. У камрада DOKTOP_JIEKTEP был использованы латинские буквы, их я и скопировал. Но можно те буквы заменить на русские и проблем с этим не будет, строки и строки...
В перечислениях же используются "именованные константы" и пока в примерах из книги я не заметил использование русского алфавита в именах тех именованных констант.
Java
1
2
3
4
// Перечисление транспортных средств,
enum Transport {
   CAR, TRUCK, AIRPLANE, TRAIN, BOAT
}
Т.ч. это, вроде как, плюс в сторону массива.

Добавлено через 27 минут
Мой вариант с массивом...

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * Test
 */
public class Test {
    public static void main(String[] args) {
        String[] s = new String[] {
            "Один", "Два", "Три"
        };
        System.out.println("Перечень элементов:");
        for (String v: s) {
            System.out.println(v);
        }
    }
}
Вроде как аналог с перечислением...

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * Test
 */
public class Test {
    public static void main(String[] args) {
        enum Primer {
            ONE("Один"), TWO("Два"), THREE("Три");
            private String v;
            Primer(String val) {
                v = val;
            }
            String getName() {
                return v;
            }
        };
        System.out.println("Перечень элементов:");
        for (Primer v: Primer.values()) {
            System.out.println(v.getName());
        }
    }
}
Если я все верно написал - то я все еще за массив, не перечисление.
0
230 / 199 / 71
Регистрация: 21.10.2016
Сообщений: 449
22.12.2023, 13:34
Цитата Сообщение от krvsa Посмотреть сообщение
В перечислениях же используются "именованные константы" и пока в примерах из книги я не заметил использование русского алфавита в именах тех именованных констант.
Java
Выделить код
1
2
3
4
// Перечисление транспортных средств,
enum Transport {
CAR, TRUCK, AIRPLANE, TRAIN, BOAT
}
Т.ч. это, вроде как, плюс в сторону массива.
Java
1
2
3
4
5
6
enum Пример {
 
    один,
    два,
    три
}
Java
1
2
3
4
5
6
7
8
class Тестирование_Примера {
 
    public static void main(String[] args) {
        for (Пример значение : Пример.values()) {
            System.out.println(значение.name());
        }
    }
}
Bash
1
2
3
4
5
asam@mc:~/java/temp$ javac Тестирование_Примера.java
asam@mc:~/java/temp$ java Тестирование_Примера
один
два
три
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1744 / 432
Регистрация: 14.03.2022
Сообщений: 4,435
22.12.2023, 13:52
Хм, насколько востребовано использование кириллицы в программировании на Java?
0
230 / 199 / 71
Регистрация: 21.10.2016
Сообщений: 449
22.12.2023, 14:04
Цитата Сообщение от krvsa Посмотреть сообщение
Хм, насколько востребовано использование кириллицы в программировании на Java?
м.б. только для демонстрации возможностей.
А так, особо не припоминаю.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1744 / 432
Регистрация: 14.03.2022
Сообщений: 4,435
22.12.2023, 14:52
Хм, а то так начну перечисления с русскими словами делать, а на меня начнут не так смотреть...
Я ведь на тебя начну ссылаться, что это ты так меня научил.

Добавлено через 17 минут
Если опять же вернуться к ингредиентам... В их названии могут быть и пробелы.
Как тогда поведет себя перечисление?
0
230 / 199 / 71
Регистрация: 21.10.2016
Сообщений: 449
24.12.2023, 14:32
Цитата Сообщение от krvsa Посмотреть сообщение
Если опять же вернуться к ингредиентам...
Я бы использовал коллекции, например:
Java
1
2
3
4
public class Humburger {
 
    private List<Ingridient> ingridients = new ArrayList<>();
}
------------------------------------------------------------------------------------------------------------------
Вообще-то, по-моему, это дурацкая задача.
1) Гамбургер не может приготовить гамбургер.
Он может испортиться, протухнуть, но приготовить он себя не может.
Поэтому методу prepare() не место в интерфейсе FastFood.
Нужна ещё одна абстракция - кухня, повар или ресторан для метода prepare();
Например:
Java
1
2
3
4
public class Kitchen {
 
    public FastFood prepare(String fastFood) {}
}
2) Метод, позволяющий определить, соответствует ли информация о товаре сроку годности на текущую дату.
Обычно товар содержит дату изготовления и срок годности.
Но проверяет на соответствие текущей дате обычно клиент(покупатель).
Где вы видели, чтобы товар сам объявлял, что он годен или не годен?
Поэтому методу check() не место в интерфейсе FastFood.
Нужна ещё одна абстракция, например:
Java
1
2
3
4
public class Client {
 
    public boolean check(FastFood fastFood) {}
}
Добавлено через 1 минуту
Могу ошибаться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2023, 14:32

В зависимости от выбора пользователя, инициализировать один из классов-наследников и использовать только его
Всем здрасьте. У меня такая ситуация: Есть класс-родитель: Main Есть много классов-наследников: One, Two, Three, Four .... и т.д. ...

Создать класс-родитель точка, его наследника - класс отрезок, наследников отрезка «квадрат», «параллелограмм» (нарисоват
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; #include &lt;Windows.h&gt; using...

Реализовать класс для матриц. В этом классе реализовать интерфейс, содержащий методы для выполнения операций
Реализовать класс для матриц. В этом классе реализовать интерфейс, содержащий методы для выполнения следующих операций: - сложение -...

реализовать интерфейс
Помогите пожалуйста реализовать интерфейс IComparable и перегрузить операции отношения для реализации значимой семантики сравнения 2ух...

Реализовать интерфейс IEnumerable
Добрый день. Никак не могу понять как реализовать IEnumerable в собственном классе. Допустим, я имею класс: using System; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru