我的oo的小作品(blog)

        前一段时间学了一些架构方面的东西,后来突发灵感,为什么不自己设计一个小系统呢。于是我就选择了目前比较流行的blog来试一试,要知道我原来只做过一些简单网站的后台,经验是少之又少,但我还是很有信心的,因为时间多嘛。

         构思了一段时间就开始动工了,因为我原来用的是sohu的blog,所以这次我选择仿照这个来做。这样系统需求方面就很容易定下来了,自己用用就知道有哪些主要的功能了。设计一个系统嘛当然要选择一个工具来做了,据我了解,这方面比较权威的工具rose比较不错,于是我到处serach,到处咨询网友,最后还是一个热心的网友给了我一个老版本的rose工具。装上工具,立马上路,简单熟悉了下工具,发现那个版本的只能用c++,java,vb语言,可我熟悉的c#只能丢在一边了,好在设计系统的思想都是一致的。

         首先,我结合blog的常用功能画了usecase图,如下:

     由于我是上班时抽出点时间来做的,可能还漏掉些东西,到后来才发现有好多东西不对,但我想设计就是这样反复修改反复确认。

         接着,我确定了几个业务对象,画了个类图,如下:

 这样要补充说下,当我在真正写核心代码时,其实很多东西和现在的类图不一致,比如说根本不需要Administrator,Viewer类,由于是单用户的blog根本不需要嘛,如果我有时间会继续做成多用户的blog的,现在不都讲求实用嘛,还有两个类Comment和CommentEntry其实可以合成一个类。至于类的实例变量和方法那改的就多了。

         然后我根据usecase图画了时序图,后台管理场景时序图如下:

  

留言场景时序图如下:

评论场景时序图如下:

          最后我根据时序图确定了业务类的方法,至此初步的设计工作到此为止,下面就开始写核心代码了。

          由于第一次用rose工具,代码都不知道怎么生成,就自己慢慢写吧。一开始确定了七个主要业务对象类,Category.cs,CategoryColl.cs,Diary.cs,DiaryColl.cs,CommentEntry.cs,CommentEntryColl.cs,Program.cs.

           Category.cs是日志分类类,包括分类的实例变量,属性常用方法。

            Diary.cs是日志类,包括日志的实例变量,属性常用方法。

            CommentEntry.cs是评论类,包括评论的实例变量,属性常用方法。

           CategoryColl.cs,DiaryColl.cs,CommentEntryColl.cs是用来把数据库的数据序列化到实例对象的。

            Program.cs是驱动类,用来在命令行下测试业务类的。

            经过耐心的测试,中途断断续续,几经波折,测试成功。以下是其中一个命令行的图:

          

             到目前为止已经完成了业务逻辑层和数据访问层的工作,最后一步开始UI层的工作了。建立了一个website,补充了一个UiOperator.cs类,专门用来显示后台数据的。前台显示页面有四个,分别为:Default.aspx,diaryByCommendId.aspx,diaryByDiaryId.aspx,diarysByCategory.aspx。

           Default.aspx页面为首页,Default.aspx.cs代码如下:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //数据初始化
            Program.Initialization();

            //分类显示;
            DataView dv=UiOperator.ShowCategory();        
            DataList1.DataSource = dv;
            DataList1.DataBind();

            //日志显示
            DataView dv1 =UiOperator.ShowDiary();
            DataList2.DataSource = dv1;
            DataList2.DataBind();

            //统计显示;
            UiOperator ui = new UiOperator();
            DataView dv2 = ui.ShowTongji();
            FormView1.DataSource = dv2;
            FormView1.DataBind();

            //评论显示;
            DataView dv3=UiOperator.ShowComment();
            DataList3.DataSource = dv3;
            DataList3.DataBind();

            //数据释放
            Program.ReleaseObject();
        }      

首页图如下:

           

 diarysByCategory.aspx为日志分类显示图,diarysByCategory.aspx.cs代码如下:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Program.Initialization();
            string cateNo = Convert.ToString(Request.QueryString["cateNo"]);
            DataView dv = UiOperator.ShowDiaryByCategory(cateNo);
            DataList1.DataSource = dv;
            DataList1.DataBind();
            DataList2.DataSource=UiOperator.ShowCategory();
            DataList2.DataBind();
            Program.ReleaseObject();
           
        }
    }

图如下:

diaryByCommendId.aspx,diaryByDiaryId.aspx为单篇日志页面,代码如下:

public partial class diaryByDiaryId : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Show();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        CommentEntryColl.Add(TextBox1.Text.Trim(), WebEditor1.Text, TextBox2.Text.Trim(), Session["diaryId"].ToString());
        Label2.Text = "发表评论成功!";
        TextBox1.Text = "";
        TextBox2.Text = "";
        WebEditor1.Text = "";
        Show();
    }

    public void Show() {
        Program.Initialization();

        string diaryId = Convert.ToString(Request.QueryString["diaryId"]);
        Session["diaryId"] = diaryId;
        DataView dv = UiOperator.ShowDiaryByDiaryId(diaryId);
        DataList1.DataSource = dv;
        DataList1.DataBind();
        DataView dv1 = UiOperator.ShowCommentByDiaryId(diaryId);
        DataList2.DataSource = dv1;
        DataList2.DataBind();

        Program.ReleaseObject();
    }
}

图如下:

           由于时间原因,前台页面还没有美工,后台管理就不在这说了,主要是对数据库的一些操作。

            最后,我非常希望和一些志同道合的人交流并在这条道路上走得更远.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值