Django入门与实践-第4章:系统设计

论坛项目

用例图

  1. 几个论坛版块(boards),每个版块像一个分类一样
  2. 指定的版块里面,用户可以通过创建新主题(Topic)开始讨论
  3. 其他用户可以参与讨论回复

图1:Web Board提供的核心功能用例图

类图

图2:Web Board类图

  • Board:版块
  • Topic:主题
  • Post:帖子(译注:其实就是主题的回复或评论)

这是模型最基本的内容:

图3:强调类(模型)之间关系的类图

  • Board 模型

    • name字段必须是唯一的,为了避免有重复的名称。
    • description 用于说明这个版块是做什么用的。
  • Topic 模型

    • subject 表示主题内容,
    • last_update 用来定义话题的排序,
    • starter 用来识别谁发起的话题,
    • board 用于指定它属于哪个版块。
  • Post 模型

    • message 用于存储回复的内容,
    • created_at 在排序时候用(最先发表的帖子排最前面),
    • updated_at 告诉用户是否更新了内容
  • User 模型

    • username
    • password
    • email
    • is_superuser

一个topic 必须与一个(1)Board(这意味着它不能为空)相关联,但是 Board 下面可能与许多个或者0个 topic 关联 (0..*)。这意味着 Board 下面可能没有主题。(译注:一对多关系)

-

一个 Topic 至少有一个 Post(发起话题时,同时会发布一个帖子),并且它也可能有许多 Post(1..*)。一个Post 必须与一个并且只有一个Topic(1)相关联。

-

一个 Topic 必须有一个且只有一个 User 相关联,topic 的发起者是(1)。而一个用户可能有很多或者没有 topic(0..*)。

-

Post 必须有一个并且只有一个与之关联的用户,用户可以有许多或没有 Post(0..*)。Post 和 User之间的第二个关联是直接关联(参见该行最后的箭头),就是 Post 可以被用户修改(updated_by),updated_by 有可能是空(Post 没有被修改)

画这个类图的另一种方法是强调字段而不是模型之间的关系:

图4:强调类(模型)与属性(字段)的类图

线框图(原型图)

版块:

图5:论坛项目线框主页列出所有可用的版块。

主题:

图6:论坛项目线框图列出了Django版块中的所有主题

“new topic” 页面:

new topic

主题页面显示了帖子和讨论:

帖子和讨论

如果用户点击回复按钮,将看到下面这个页面,并以倒序的方式(最新的在第一个)显示帖子列表:

回复

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2021 朝着牛逼的道路一路狂奔 All Rights Reserved.

访客数 : | 访问量 :