Могу ли я реализовать трехслойную архитектуру при создании диаграммы классов UML?

1

Мне поручено составить диаграмму классов UML системы онлайн-заказов в пиццерии. Я создал классную библиотеку:

public class Customer : IAdd, IUpdate, IDelete, IView
{
    public int CustomerID { get; set; }
    public string CustomerName { get; set; }
    public string CustomerAddress { get; set; }
    public string CustomerContact { get; set; }
    public string CustomerEmail { get; set; }
    public bool hasPalmCard { get; set; }

    public void Add()
    {
        //code to add customer goes here
    }

    public void Update()
    {
        //code to update customer goes here
    }

    public void Delete()
    {
        //code to delete customer goes here
    }

    public void View()
    {
        //code to view customer list goes here
    }
}

public class Product : Category, IAdd, IUpdate, IDelete, IView
{
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public decimal ProductPrice { get; set; }

    public void Delete()
    {
        //code to delete product goes here
    }

    public void View()
    {
        //code to view product list goes here
    }

    public void Update()
    {
        //code to update product goes here
    }

    public void Add()
    {
        //code to add product goes here
    }
}

public class Category : SubCategory
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
}

public class SubCategory
{
    public int SubCategoryID { get; set; }
    public string SubCategoryName { get; set; }
}

public class OrderList : Product, IComputeSubtotal
{
    public int OrderListID { get; set; }
    public int OrderQuantity { get; set; }

    public decimal subtotalPrice;

    public decimal getSubtotal(decimal pricePerProduct)
    {
        return subtotalPrice += pricePerProduct * OrderQuantity;
    }
}

public class PurchaseOrder : OrderList, IComputeTotal
{
    public int PurchaseOrderID { get; set; }
    public DateTime PurchaseOrderDateTime { get; set; }

    public decimal totalPrice;

    public decimal getTotal(decimal subtotalPrice)
    {
        return totalPrice += subtotalPrice;
    }
}

public class Receipt : PurchaseOrder, IComputeTotal
{
    public int ReceiptNo { get; set; }
    public DateTime ReceiptDateTime { get; set; }
    public decimal Subtotal { get; set; }
    public decimal CashRender { get; set; }

    decimal IComputeTotal.getTotal(decimal serviceCharge)
    {
        return totalPrice += serviceCharge;
    }
}

public class ReceiptWithChange : Receipt, IComputeChange
{
    public decimal Change { get; set; }

    public decimal getChange()
    {
        return Change = CashRender - totalPrice;
    }
}

interface IAdd
{
    void Add();
}

interface IUpdate
{
    void Update();
}

interface IDelete
{
    void Delete();
}

interface IView
{
    void View();
}

interface IComputeSubtotal
{
    decimal getSubtotal(decimal price);
}

interface IComputeTotal
{
    decimal getTotal(decimal price);
}

interface IComputeChange
{
    decimal getChange();
}

Мой профессор хочет, чтобы я реализовал трехслойную архитектуру: Data, Business и UI/Presentation. Возможно ли это, так как я только создаю библиотеку классов, и это должно было использоваться другим программистом? Если это возможно, как я могу его реализовать?

Благодарю!

Теги:
architecture
class-diagram
uml

2 ответа

1

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

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

Итак, я подозреваю, что ваш профессор хочет что-то вроде этого:

Изображение 174551

Каждый пакет представляет собой уровень в трехуровневой архитектуре.

0

Вы можете уточнить свою модель, расширив диаграмму развертывания, чтобы отобразить, что определения реализованы как процедура базы данных, объекты веб-приложения или HTML-код. И т.п.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню