【问题标题】:Class diagram for ad system广告系统类图
【发布时间】:2016-10-24 18:54:25
【问题描述】:

所以我根据作业创建了一个类图,这是正确的做法吗?我特别不确定Column class,因为在我看来它可能只是可变的。

您正在构建的应用程序将从多个 不同的广告系统,然后将数据存储到数据库中, 这样就可以分析它们了。

您需要记住,每个广告系统都有不同的 报表结构:不同的命名列,不同的顺序 列,不同的日期格式 来自广告系统的数据也在 不同的数据格式(JSON、CSV、XML),

每个系统的报告包含不同数量的列,我们的 应用程序只对其中一些感兴趣:日期、ad_campaing、 ad_group、关键字、展示次数、价格(在他们拥有的每个系统中) 不同的名字)

广告帐户的逻辑是一个广告活动包含 多个广告组,一个广告组包含多个关键字。

【问题讨论】:

  • 你应该制作什么样的类图?领域模型(描述问题领域中的实体)、解决方案的概念模型(根据用户必须知道的概念)、软件模型(源代码中定义的类)、模型目标数据库....?
  • 好吧,我应该进行面向对象的设计,这只是更容易阅读,每次我用代码和有关它的问题发布我的问题时,它都会被忽略/否决。因此,我想如果我至少知道该图中的应用程序结构是否良好就足够了。如果我没记错的话,从中进行面向对象的设计应该只是将其重写为代码。
  • 好的,我假设你需要为要制作的软件制作一个设计模型。我将假设目标语言是面向对象的语言,如 Java 或 C#。我认为您需要为报告设计一个通用接口,并为每种特定类型的报告设计一个适配器类。每个适配器类都实现了通用接口以加载其特定的报告类型。
  • 语言为 PHP。报告类型是指格式? (CSV、XML、JSON)?
  • 你应该阅读你作品的最后一段。这似乎完全被忽略了。此外,调用类*System 是糟糕的设计。一切都是“系统”的。

标签: oop uml object-diagram


【解决方案1】:

我假设您需要制作一个类图来对要使用面向对象语言编写的源代码进行建模。我认为最好的方法是为每种特定类型的报告(即为每个不同的广告系统)创建一个适配器类。每个适配器类实现一个通用接口(或抽象基类)以加载其特定的报告类型。这是我的图表。我画了三个适配器,但可能更多也可能更少。

如果您希望多个广告系统以通用格式提供数据,例如CSV,虽然只有列名不同,但您可以创建一个通用 CSV_ReportLoader,它从配置文件(或配置对象)读取列名映射。

【讨论】:

  • 我尝试将它转换为代码,但我想出了几个问题。这是我的第一个 OOP 项目,所以我不太确定在构建 OOP 项目时我的目标应该是什么,因为如果我们只考虑功能,那么它看起来并不那么难......好吧,但是,你必须用你的方法创建每个新 Ad_system 的新类(在我的解决方案中,您只需要实例化一个新对象),loadAdData 也可能在每个类中都有相同的实现,所以在 `ReportLoader' 中实现它并继承它没有意义从那里开始。
  • 我不知道我是否看错了 OOP,但是例如,使用我的解决方案,您有一个可以找到数据格式的类(如果它的 JSON、XML、CSV),不是这样更好吗?您知道以后可以重用该类吗?因为我认为它应该被分成最小的部分,以便个别部分可以重复使用,不应该是这样吗?
  • 来自广告系统的数据采用不同的数据格式(JSON、CSV、XML)。
  • 来自广告系统的数据采用不同的数据格式(JSON、CSV、XML),并且对相同的事物有不同的名称。这意味着从一个广告系统加载数据的功能不能被重新用于从另一个系统加载数据。使用我的方法,如果您将来需要支持新的广告系统,您只需创建一个派生自 ReportLoader 的新类,该类实现该特定广告系统的细节。由于它实现了 ReportLoader,因此可以轻松插入 LoadAdsApplication。
  • 如果有多个广告系统以通用格式提供数据,例如CSV,您可以通过创建通用 CSV_ReportLoader 来应用重用,从配置文件中读取特定于广告系统的列名到标准列名的映射。如果这就是你的意思,那么你是对的。
猜你喜欢
  • 2011-09-30
  • 2015-06-30
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多