Task 23 — Заказы и меню
Моделирование меню, заказов и интерфейсов предметной области.
Edit on GitHubЗадание
Моделирование меню, заказов и интерфейсов предметной области. Документация собрана по исходному коду этой практики.
Решение
Полный код решения по этой практике:
Исходные файлы решения
Task23/Dish.javaTask23/Drink.javaTask23/InternetOrder.javaTask23/Item.javaTask23/Order.javaTask23/Test.java
Task23/Dish.java
package Task23;
public final class Dish implements Item{
private int coast;
private String name;
private String description;
Dish(String name,String description){
this.coast = 0;
this.name = name;
this.description = description;
}
Dish(int coast,String name,String description){
this.coast = coast;
this.name = name;
this.description = description;
}
@Override
public int getCoast() {
return coast;
}
@Override
public String getName() {
return name;
}
@Override
public String getDescription() {
return description;
}
@Override
public void setCoast(int coast) {
this.coast = coast;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public void setDescription(String description) {
this.description = description;
}
public String toString(){
return "Coast = " + getCoast() + ", name = " + getName() + ", description = " + getDescription() + "\n";
}
}Task23/Drink.java
package Task23;
final class Drink implements Item{
private int coast;
private String name;
private String description;
Drink(String name,String description){
this.coast = 0;
this.name = name;
this.description = description;
}
Drink(int coast,String name,String description){
this.coast = coast;
this.name = name;
this.description = description;
}
@Override
public int getCoast() {
return coast;
}
@Override
public String getName() {
return name;
}
@Override
public String getDescription() {
return description;
}
@Override
public void setCoast(int coast) {
this.coast = coast;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public void setDescription(String description) {
this.description = description;
}
}
Task23/InternetOrder.java
package Task23;
import java.util.ArrayList;
import java.util.List;
public class InternetOrder {
private Order[] orders;
public Order getOrder(String name){
return new Order(1);
}
public void addDish(Dish dish,String name){
return;
}
public boolean removeOrder(String name){
return true;
}
public int freeTableNumber(){
return 0;
}
public int[] freeTableNumbers(){
return new int[]{};
}
public Order[] getOrders(){
return new Order[]{};
}
public double orderCoastSummary(){
return 0.0;
}
public int dishQuantity(String dishName){
return 0;
}
}
Task23/Item.java
package Task23;
public interface Item {
public int getCoast();
public String getName();
public String getDescription();
public void setCoast(int coast);
public void setName(String name);
public void setDescription(String description);
}
Task23/Order.java
package Task23;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class Order {
private List<Item> items;
private int size;
private Dish[] dishes;
Order(int size){
this.items = new ArrayList<>();
}
public boolean add(Dish dish){
return items.add(dish);
}
public boolean remove(String Name){
for(int i = 0; i < items.size();i++){
if(items.get(i).getName().equals(Name)){
items.remove(i);
return true;
}
}
return false;
}
public int removaAll(String Name){
int count = 0;
for (int i = 0; i < items.size();i++){
Item temp = items.get(i);
if (temp.getName().equals(Name)){
count++;
items.remove(i);
}
}
return count;
}
public int dishQuantity(){
return items.size();
}
public int dishQuantity(String Name){
return (int) items.stream().filter(n->n.getName().equals(Name)).count();
}
public Dish[] getDishes() {
return items.toArray(new Dish[0]);
}
public double costTotal(){
return items.stream().mapToDouble(Item::getCoast).sum();
}
public String[] dishesName(){
return new String[]{items.stream().filter(n -> n.getName() != "").toArray().toString()};
}
public Dish[] sortedDishesByCostDesc(){
return items.stream().sorted(Comparator.comparingInt(Item::getCoast)).toList().toArray(new Dish[0]);
}
}
Task23/Test.java
package Task23;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Order order = new Order(5);
order.add(new Dish(450,"Оливье","Холодное блюдо"));
order.add(new Dish(300,"Лимонад","Напиток"));
order.add(new Dish(600,"Рёбра","Горячее блюдо"));
order.add(new Dish(400,"Борщ","Горячее блюдо"));
System.out.println(order.remove("Лимонад"));
System.out.println(order.dishQuantity());
System.out.println(order.costTotal());
System.out.println(order.dishQuantity("Борщ"));
System.out.println(Arrays.stream(order.sortedDishesByCostDesc()).toList().toString());
}
}
Описание
В этом модуле используется 6 Java-файлов. Ключевые сущности: Dish, Drink, InternetOrder, Item, Order, Test.
tip
Для проверки практики сначала запускайте тестовый/демо-класс из папки задачи, затем расширяйте модель новыми кейсами.
Вывод
Task 23 — Заказы и меню документирует реальное решение из исходного кода.