Giter Site home page Giter Site logo

js-5's Introduction

JS#5

Друг Кеши Борис (тот самый вредный товарищ, который раскритиковал сайт с фотографиями) уже давно мечтает открыть свою кофейню. В этом году он скопил достаточный капитал и уже нашел помещение, которое вот-вот возьмет в аренду.

На старте своего нового бизнеса Борис не хочет много тратиться на зарплаты сотрудникам, поэтому решил автоматизировать процесс варки кофе и заказал в одном популярном китайском магазине кофемашину (никогда так не делайте, не повторяйте ошибок Бориса).

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

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

Класс Coffee для сущности кофе. Он должен содержать всего два поля: name и preparationTime – название кофе и время его приготовления. Оба должны инициализироваться в конструкторе из аргументов.

Класс CoffeeMachine. У класса кофейной машины должно быть одно обязательное поле: maxCup – максимальное кол-во чашек кофе, для которых может вариться кофе параллельно. Это поле должно инициализироваться в конструкторе из аргументов.

А еще у кофемашины должен быть один обязательный метод – createCoffee. Этот метод принимает экземпляр класса Coffee. Ваша задача реализовать метод createCoffee так, чтобы он возвращал Promise, который выполнится только тогда, когда закончится приготовление переданного в метод createCoffee кофе.

В resolve функцию после приготовления кофе передавайте его объект.

❗Обратите внимание: кофемашина может параллельно готовить кофе только для того кол-во чашек, которое указано в поле maxCup. Если у кофемашины освободилось место под новую чашку, а в очереди, кто-то ждет кофе, значит это место надо занять приготовлением нового кофе.

Пример работы кофемашины

const log = (coffee) => console.log(coffee.name);

const machine = new CoffeeMachine(2);

const cappuccino = new Coffee('Капучино', 6000);
const latte = new Coffee('Латте', 1000);
const americano = new Coffee('Американо', 3000);

machine
  .createCoffee(cappuccino)
  .then(log);
machine
  .createCoffee(americano)
  .then(log);
machine
  .createCoffee(latte)
  .then(log);
machine
  .createCoffee(americano)
  .then(log);

/*
  Американо
  Латте
  Капучино
  Американо
*/

⭐Все мы знаем, что такие вещи, как кофемашины (особенно, с китайского магазина) имеют уровень износа. Добавьте в класс CoffeeMachine еще одно поле: wearLevel, которое будет инициализироваться из аргумента конструктора и иметь по умолчанию значение 4. Адаптируйте логику работы метода createCoffee с учетом уровня износа кофемашины: если он выше нуля, то выполняйте приготовление, если равен или ниже, то из промиса вызывается функцию reject, передавая в нее объект не приготовленного кофе. Уровень уменьшайте после каждой приготовленной чашки на 1.

js-5's People

Contributors

toouren avatar roman-khasimyanov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.