Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 08.12.2020
Сообщений: 23

Доработать класс по заданию

04.04.2022, 16:20. Показов 1241. Ответов 3

Студворк — интернет-сервис помощи студентам
Доработайте функцию addFilling так, чтобы она для начала проверяла, сколько раз уже была переданная начинка добавлена в массив начинок.
Доработайте функцию расчёта стоимости и калорийности так, чтобы для маленького гамбургера стоимость и калорийность начинок была уменьшена на 30%.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
class Hamburger {
        static get BIG () {
            return {name: "Большой гамбургер", cost: 50, kkal: 180, type: "hamType"}
        }
 
        static get SMALL () {
            return {name: "Маленький гамбургер", cost: 30, kkal: 100, type: "hamType"}
        }
 
        static get CHEESE () {
            return {name: "Сыр", cost :30, kkal: 70, type: "fillingType", maxUse: 3}
        }
 
        static get CUTLETS () {
            return {name: "Котлеты", cost: 90, kkal: 200, type: "fillingType", maxUse: 2}
        }
 
        static get SALAD () {
            return {name: "Салат", cost: 50, kkal: 20, type: "fillingType", maxUse: 4}
        }
 
        static get POTATO () {
            return {name: "Картошка", cost: 80, kkal: 130, type: "fillingType", maxUse: 2}
        }
 
        static get MAYONNAISE () {
            return {name: "Майонез", cost: 20, kkal: 80, type: "fillingType", maxUse: 5}
        }
 
        addFilling(filling) {
                if (filling){
                    this.filling.push(filling)
                }   
        }
 
        removeFilling(filling){
            const fillingIndex = this.fillingIndex(item => filling.name == item.name)
            if (fillingIndex)
                this.fillingIndex.splice(fillingIndex, 1)
        }
 
        calculateCost(){
            const reducerCost = (accumulator, item) => accumulator + item.cost
            let result = this.hamType.cost
            return result + this.filling.reduce(reducerCost, 0)
        }
 
        calculateKkal(){
            const reducerKkal = (accumulator, item) => accumulator + item.kkal
            let result = this.hamType.kkal
            return result + this.filling.reduce(reducerKkal, 0)
        }
        
 
        constructor(hamType) {
 
            if (hamType.type == "hamType")
                this.hamType = hamType
            else
                throw "Пердан не тип гамбургера"
 
            this.filling = []
        }
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2022, 16:20
Ответы с готовыми решениями:

Доработать оформление DataGridView по заданию
Приветствую! Имеется образец таблицы. Требуется: 1. При заполнении в форме сохранить её. Т.е. сохранять на момент последнего...

доработать класс String
Занимаюсь по книжке Стивена Праты, никак не могу найти ошибку в программе(написана на Visual C++).Помогите пожалуйста найти что в ней не...

Доработать класс Итератор
1. Добавить в класс Iterator некоторые функции, аналогичные имеющимся (перегрузка предекремента и постдекремента, перегрузка -=, вычитание...

3
0 / 0 / 0
Регистрация: 18.08.2016
Сообщений: 14
05.04.2022, 16:16
Цитата Сообщение от danil917 Посмотреть сообщение
сколько раз уже была переданная начинка добавлена в массив начинок
а где массив начинок?
Цитата Сообщение от danil917 Посмотреть сообщение
чтобы для маленького гамбургера стоимость и калорийность начинок была уменьшена на 30%
на 30% от чего?
0
0 / 0 / 0
Регистрация: 08.12.2020
Сообщений: 23
05.04.2022, 16:26  [ТС]
Массив начинок создаётся в конструкторе, называется filling
На 30% от цены, она указывается в функциях, называется cost
0
0 / 0 / 0
Регистрация: 08.12.2020
Сообщений: 23
08.04.2022, 18:30  [ТС]
Задание:
Создайте класс, который бы описывал гамбургер. В конструктора должен приниматься размер гамбургера (большой или маленький). Так же у гамбургера должно быть 4 функции: для добавления начинки, для удаления начинки, для подсчёта калорийности гамбургера и для подсчёта стоимости гамбургера.

Маленький гамбургер - 100 Ккал - 30р.
Большой габургер - 180 Ккал - 50р.
Начинка:

Сыр - 70 Ккал - 30р.
Котлета - 200 Ккал - 90р.
Салат - 20 Ккал - 50р.
Картошка - 130 Ккал - 80р.
Майонез - 80 Ккал - 20р.
Типы начинки и размеры гамбургера можно задать в качестве констант.

Пример использования:

JavaScript
1
2
3
4
5
let мойГамбургер = new Гамбургер(Гамбургер.БОЛЬШОЙ);
мойГамбургер.добавитьНачинку (Гамбургер.КОТЛЕТА);
мойГамбургер.добавитьНачинку (Гамубргер.САЛАТ);
alert('Калорийность моего гамбургера: ' + мойГамбургер.получитьКалорийность());
alert('Стоимость моего гамбургера: ' + мойГамбургер.получитьСтоимость());
Порядок выполнения:

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

JavaScript
1
2
3
class Hamburger {
 
}
Добавьте в класс конструктор, который бы принимал тип гамбургера и сохранял его в поле, а так же, пусть создаётся поле, которое бы хранило в себе массив начинок и назовите его filling.

JavaScript
1
2
3
4
constructor(hamType) {
    this.hamType = hamType;
    this.filling = [];
}
Добавьте в класс статический геттер, который бы возвращал объект, описывающий большой гамбургер.

JavaScript
1
2
3
static get BIG (){ 
    return {name: "Большой гамбургер", cost: 50, kkal: 180, type: "hamType"}
}
Добавьте в класс статический геттер, который бы возвращал объект, описывающий маленький гамбургер.

Добавьте в класс статические геттеры, которые бы возвращали объекты, описывающие начинку гамбургера (по условиям задания), укажите для них поле type как "fillingType".

Изменим конструктор так, чтобы перед тем как присвоить hamType он проверял, является ли переданный объект правда, типом гамбургера, и если не является, то прекращал работу с ошибкой.

JavaScript
1
2
3
4
if (hamType.type == "hamType")
    this.hamType = hamType;
else
    throw "Передан не тип гамбургера";
Добавьте функцию в класс, которая бы позволяла добавлять в гамбургер начинку.

JavaScript
1
2
3
addFilling(filling) {
    this.filling.push(filling);
}
Измените функцию добавления начинки так, чтобы перед добавлением проверялось, является ли переданный объект начинкой, и если не является, то просто не добавлялся, без возникновения ошибки.

Добавьте функцию в класс, которая бы позволяла удалить начинку. Для этого воспользуемся функцией splice(), которая позволяет изменять содержимое массива, удаляя существующие элементы и/или добавляя новые. Но предварительно при помощи функции findIndex найдём индекс начинки в массиве, которую необходимо удалить. Функции findIndex мы передаём стрелочную функцию, которая сравнивает имена начинок.

JavaScript
1
2
3
4
5
removeFilling(filling) {
    const fillingIndex = this.filling.findIndex(item => filling.name == item.name);
    if (fillingIndex)
        this.filling.splice(fillingIndex, 1);
}
Добавьте функцию в класс, которая позволяет узнать стоимость гамбургера. Для этого необходимо взять саму стоимость булочки гамбургера и добавить к ней стоимость начинок. Для рассчёта стоимости начинок можно воспользоваться функцией reduce(), которая применяет функцию reducer к каждому элементу массива (слева-направо), возвращая одно результирующее значение.

JavaScript
1
2
3
4
5
calculateCost() {
    const reducer = (accumulator, item) => accumulator + item.cost;
    let result = this.hamType.cost;
    return result + this.filling.reduce(reducer, 0);
}
Добавьте функцию в класс, которая позволяет узнать калорийность гамбургера.

После того как класс был сделан, попробуйте создать объект этого класса.

JavaScript
1
let myHamburger = new Hamburger(Hamburger.BIG);
Попробуйте добавить в объект несколько начинок.

JavaScript
1
2
myHamburger.addFilling(Hamburger.SALAD);
myHamburger.addFilling(Hamburger.POTATO);
Воспользовавшись шаблонными строками, выведите на экран фразы, согласно условию задания.


Самостоятельная работа

Добавьте к каждой начинке числовое поле, которое описывало бы сколько раз можно эту начинку добавить в гамбургер.

Доработайте функцию addFilling так, чтобы она для начала проверяла, сколько раз уже была переданная начинка добавлена в массив начинок.

Доработайте функцию расчёта стоимости и калорийности так, чтобы для маленького гамбургера стоимость и калорийность начинок была уменьшена на 30%.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.04.2022, 18:30
Помогаю со студенческими работами здесь

Доработать класс матриц
Всем привет. Пытаюсь разработать класс матриц, чтобы перегрузить основные операции. Помогите доработать. #include <iostream> ...

Доработать класс Equation
1. Создать в классе деструктор. 2. Создать в классе компоненты-функции для просмотра и установки полей данных (setter, getter). 3....

Доработать и протестировать класс matrix
Привет всем, имеется код с элементами класса: #include "StdAfx.h" #include "matrix.h" #include <conio.h> #include...

Нужно немного доработать класс Особь
Задание заключается в том, чтобы создать класс Особь, в котором реализовать функцию определения ставки в зависимости от должности. Потом...

Перевести с консоли на формы и доработать класс временных меток
Добрый день! Помогите пожалуйста переделать программу на C++ Builder?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru