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

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

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

Author24 — интернет-сервис помощи студентам
Доработайте функцию 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2022, 16:20
Ответы с готовыми решениями:

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

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

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

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

Доработать класс Equation
1. Создать в классе деструктор. 2. Создать в классе компоненты-функции для просмотра и установки...

3
0 / 0 / 0
Регистрация: 18.08.2016
Сообщений: 14
05.04.2022, 16:16 2
Цитата Сообщение от danil917 Посмотреть сообщение
сколько раз уже была переданная начинка добавлена в массив начинок
а где массив начинок?
Цитата Сообщение от danil917 Посмотреть сообщение
чтобы для маленького гамбургера стоимость и калорийность начинок была уменьшена на 30%
на 30% от чего?
0
0 / 0 / 0
Регистрация: 08.12.2020
Сообщений: 23
05.04.2022, 16:26  [ТС] 3
Массив начинок создаётся в конструкторе, называется filling
На 30% от цены, она указывается в функциях, называется cost
0
0 / 0 / 0
Регистрация: 08.12.2020
Сообщений: 23
08.04.2022, 18:30  [ТС] 4
Задание:
Создайте класс, который бы описывал гамбургер. В конструктора должен приниматься размер гамбургера (большой или маленький). Так же у гамбургера должно быть 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
08.04.2022, 18:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2022, 18:30
Помогаю со студенческими работами здесь

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

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

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

Доработать класс, добавив в него стандартный и дополнительный конструкторы
Доработать класс, добавив в него стандартный и дополнительный конструкторы. В главной функции...

Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как динамический массив. Для этого определение класса должно иметь следующие
1. Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как динамический...

Есть программа для нахождения площади и периметра треугольника. Нужно доработать класс
Есть программа для нахождения площади и периметра треугольника. Нужно доработать класс, добавив в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru