- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试完成我的中期作业,即为一个简单的 java 程序创建一个序列图。然而,我遇到了一个问题,我无法决定将哪个元素放入图表中以及忽略哪个元素。如果可以帮助回答问题,我将发布 JAVA 代码。
public class TestPOS {
public static void main(String[] args) {
// POST 객체를 준비
Store store = new Store();
ProductCatalog catalog = new ProductCatalog();
catalog.addSpec(1, new ProductSpec(1, "pencil", 1000));
catalog.addSpec(2, new ProductSpec(2, "eraser", 500));
catalog.addSpec(3, new ProductSpec(3, "fountain pen", 50000));
POST post = new POST(store, catalog);
// 첫 번째 판매
post.enterItem(1, 12);
post.enterItem(2, 4);
post.enterItem(3, 1);
post.makePayment();
post.endSale();
// 두 번째 판매
post.enterItem(1, 2);
post.enterItem(2, 1);
post.makePayment();
post.endSale();
// 출력을 보여주어 이해를 돕기위한 코드
for (Sale sale : store.completedSales) {
System.out.println(sale.getDate());
sale.printLineItems();
System.out.println("total = " + sale.getTotal());
}
}
}
这是调用 EnterItem()、makePayment() 和 endSale() 的主要部分。作业是为上述三个函数创建序列图。我将在下面发布每个类(class)。
-----------------------------------------------------------
import java.util.Date;
public class POST {
private Store store;
private ProductCatalog catalog;
private Sale sale = null;
public POST(Store store, ProductCatalog catalog) {
this.store = store;
this.catalog = catalog;
}
public void enterItem(int upc, int qty) {
if (sale == null) {
Date date = new Date(System.currentTimeMillis());
sale = new Sale(date);
}
ProductSpec s = catalog.spec(upc);
sale.makeLineItem(s, qty);
}
public void makePayment() {
if (sale != null) sale.makePayment();
}
public void endSale() {
store.addCompleteSale(sale);
sale = null;
}
}
-----------------------------------------------------------
import java.util.ArrayList;
public class Store {
protected ArrayList<Sale> completedSales = null;
public Store() {
completedSales = new ArrayList<Sale>();
}
public void addCompleteSale(Sale sale) {
completedSales.add(sale);
}
}
-----------------------------------------------------------
import java.util.ArrayList;
import java.util.Date;
public class Sale {
private Date date;
private ArrayList<SalesLineItem> lineItem = null;
private Payment payment = null;
public Sale(Date date)
{
this.date = date;
lineItem = new ArrayList<SalesLineItem>();
}
public void makeLineItem(ProductSpec s, int qty) {
SalesLineItem item = new SalesLineItem(s, qty);
lineItem.add(item);
}
public int getTotal() {
int total = 0;
for (SalesLineItem item : lineItem) {
total += item.getSubTotal();
}
return total;
}
public void makePayment() {
int total = this.getTotal();
payment = new Payment(total);
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public Date getDate() {
return date;
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public void printLineItems() {
for (SalesLineItem item : lineItem) {
System.out.println("upc : " + item.getItemUpc() +", name : " + item.getItemName() + ", price : "
+ item.getItemPrice() + ", quantity : " + item.getQuantity());
}
}
}
-----------------------------------------------------------
public class Payment {
private int amount;
public Payment(int amount) {
this.amount = amount;
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public int getAmount() {
return amount;
}
}
-----------------------------------------------------------
public class SalesLineItem {
private int quantity;
private ProductSpec spec;
public SalesLineItem(ProductSpec spec, int quantity) {
this.spec = spec;
this.quantity = quantity;
}
public int getSubTotal() {
int price = spec.getPrice();
return price * quantity;
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public int getItemUpc() {
return spec.getUpc();
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public String getItemName() {
return spec.getName();
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public int getItemPrice() {
return spec.getPrice();
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public int getQuantity() {
return quantity;
}
}
-----------------------------------------------------------
import java.util.HashMap;
public class ProductCatalog {
private HashMap<Integer, ProductSpec> specTable = new HashMap<Integer, ProductSpec>();
public void addSpec(int upc, ProductSpec spec) {
specTable.put(upc, spec);
}
public ProductSpec spec(int upc) {
return specTable.get(upc);
}
}
-----------------------------------------------------------
public class ProductSpec {
private int upc;
private String name;
private int price;
public ProductSpec(int upc, String name, int price) {
this.upc = upc;
this.name = name;
this.price = price;
}
public int getPrice() {
return price;
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public int getUpc() {
return upc;
}
// 출력을 보여주어 이해를 돕기위한 메소드, 클래스 다이어그램에 반영하지 않음
public String getName() {
return name;
}
}
不要介意代码中的韩语,它们只是为了一些描述。现在下图是我画的图,不管正确与否。
主要问题是我不知道是否应该绘制终止过程中使用的每个元素、交互和实例。我知道我听起来有点杂乱无章,但请有人帮助我解决我的问题。
最佳答案
我没有与你的代码交叉检查绘图是否正确。请注意,创建 ProductSpec
直接返回到 POST
。这可能是您上下文中的合法缩写,但它可能不反射(reflect)代码。
无论如何,你在 SD 中放入的内容应该澄清特定的上下文,而不是模糊它。因此,将所有内容放入一个 SD 中绝不是一个好主意。相反,创建一个粗略的概述来突出显示主要流程。在 POS 系统中,这可能首先要做两件事:整个内容的初始化和目录中文章的输入。意味着您将在此处创建两个 SD。您也不应该试图“以图形方式编程”并大量使用片段。将它们留给重要的路径决策等,而不是为您在代码中找到的每个 if
或 case
保留它们。就 SD 而言,少用往往比多用要好。
注意:我不知道你的老师在这里的意图是什么。这可能与我的陈述相矛盾,他只是想让你创建一个(无用的)壁纸。
关于java - UML 2.0 序列图深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628708/
我正在为 Apple Watch Extension 设计 UML 图。我应该如何使用 UML 表示主机应用程序? UML 节点还是 UML 组件?请注意,扩展应用程序和 iPhone 应用程序(主机
UML 类图是描述类及其关系的标准图形符号。 是否有标准的文本符号 (DSL) 来描述相同的内容?不要说 XMI 或 EMF;-) 我认为您可以使用 Corba IDL 来做到这一点,并为类使用接口(
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
假设我正在设计一个分布式应用程序: 它由一台主机组成,即公司的前端Web服务(CompanyWS)和一台或多台主机,比如三台,即公司的分布式仓库。每个仓库都是一个 Web 服务 (WarehouseW
是否有任何正式方式表明函数参数是可选的? 例如,在这张图片中: 我想通知您可以填充 nodes_clicked 参数或将其留空。 谢谢。 最佳答案 可选参数在 UML 中没有任何处理,因为它只是编译器
UML 序列图中的垂直矩形表示什么? 例如我想知道绿色箭头指向的矩形的含义。这些矩形的高度有什么意义吗? 最佳答案 垂直矩形表示 执行规范 . 执行规范是对象交互的一部分,表示对象在执行某些事件或只是
像下面用 StarUML 绘制的 UML 状态图 (SD) 中是否允许没有直接转换的状态? State1 不直接参与任何转换,所以我怀疑这在 UML 中是否允许/可取。我认为在我的应用程序中,我实际上
我正在使用 Enterprise Architect 制作 UML 类图(并最终用它生成 PHP5 代码)。我可以为类添加属性。对于每个属性,我可以选择一个构造型:DomainCodedValue、F
我阅读了域模型及其重要性,我有以下疑问: 领域模型可以解决什么样的问题?换句话说,对于每个问题,我应该建立一个域模型吗? 据我所知,领域模型使用类图表示。类图和领域模型之间没有区别吗? 我也想了解词汇
首先,我对 UML 还是很陌生;但是,非常感兴趣并且正在尝试尽可能多地了解它。 话虽如此,我正处于被指示组装“上下文图”的情况。我觉得我好像理解什么是上下文图的概念以及如何创建上下文图,所以我觉得我没
我们在学校学习行为状态图的转换具有语法: list of events [guard condition] / list of actions 但是我在 Internet 上找不到任何使用多个事件进行
在维基百科上,我读到关联关系是实例级别的关系,所以我们谈论的是两个类的对象之间的关系。 当我们实际绘制类图时,为什么要在类元素或块而不是对象上使用关联?还有一些类级别的关系,我们再次使用类元素。由于我
我无法理解 UML 中的限定符是什么。 例如,在扫描的页面中,有一个名为 “SharedRegister”,其中包含“state”和“plateNumber”。 为什么不使用一个名为 SharerRe
大多数嵌入式系统应用程序都是用 C 语言编写的,即非 OOP。但是 UML 是为 OO 设计的。所以我的问题是为什么人们提倡和使用 UML 用于嵌入式系统(和实时嵌入式系统)? 最佳答案 UML 不仅
我们如何在 UML 图中显示一个线程被调用并反过来调用其他线程。这看起来更像是一个工作流。是否可以用 UML 表示 最佳答案 Sequence Diagram应该做的工作。 关于uml - 类图中的线
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我有一个关于 uml 组件图的问题:正如我在 Wikipedia 中看到的那样,可以创建我自己的“组件类型”,如 > , >等等。我以为我只能说>和 > ?!这些条目是刻板印象还是什么?我想对像 or
我知道依赖关系是用条纹箭头描述的,例如: Client ----->----> Server 我发现其他关系(关联、组合、聚合)通常需要多重性,但是,我不确定依赖关系是否需要多重性。我应该在上图的两边
我正在尝试创建 UML 图。例如,我有一个带有方法 a() 的类 A 和扩展 A 并覆盖方法 a() 的类 B。是否有任何标准来指示 UML 中的重写方法? 最佳答案 不,对于覆盖父类上的操作的操作没
假设您有一个更大的汽车配置文件的摘录: 现在我想为汽车定义一些约束,比如这些约束状态之一,如果 attrA是 true ,然后 attrB必须是 false像这样使用 OCL: Context UML
我是一名优秀的程序员,十分优秀!