应用OOP的设计过程演化(一)

面向对象的程序设计(Object-Oriented Programming,简记为OOP)立意于创建软件重用代码,具备更 好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句 ,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易 。

在计算时代的早期,程序员基于语句思考编程问题。到了20世纪七八十年代,程序员开始基于子程序 去思考编程。进入21世纪,程序员以类为基础思考编程问题。而类是OOP中的核心组成元素,通常都是使 用类来“封装”对象(属性、行为)。在经典图书《代码大全》里定义:“创建高质量的类,第一步,可 能也是最重要的一步,就是创建一个好的接口。这也包括了创建一个可以通过接口来展现的合理的抽象, 并确保细节仍被隐藏在抽象背后。”

为了更好的理解设计思想,本系列文章以简单的《书店信息系统》为例,但随着需求的增加,程序将 越来越复杂。此时就有修改设计的必要,重构和设计模式就可以派上用场了。最后当设计渐趋完美后,你 会发现,即使需求不断增加,你也可以神清气闲,不用为代码设计而烦恼了。

在一个书店里,主要业务就是销售书,销售书后所得到的就是收取到的资金(本次交易金额),那以 这个业务来分析,在不考虑设计的情况下,我们该怎么去实现:

1namespace EBook.Step1
2{
3  /**//// <summary>
4  /// 会员购书
5  /// </summary>
6  public class Buy
7  {
8    /**//// <summary>
9    /// 处理销售书的方法
10    /// </summary>
11    public void Execute()
12    {
13      Console.WriteLine("会员购买了一本书");
14    }
15
16    /**//// <summary>
17    /// 买书得到了多少钱
18    /// </summary>
19    public void GetMoney()
20    {
21      Console.WriteLine("收到了xx.xx元RMB");
22    }
23  }
24}

时间: 2024-08-07 17:25:25

应用OOP的设计过程演化(一)的相关文章

应用OOP的设计过程演化(三)

在上一篇文章里(应用OOP的设计过程演化(二))完善了整个系统的体系结构,以及完成了各个具体的 功能角色的功能,这也只能算是完成了一个结构而已,要真正做到完善还差得很远.比如在计算租金这个 算法上,使用switch语句,判断图书的类型来决定该书的折扣,之前我为了演示在switch语句中固定了折 扣的算法策略,如下代码示意代码: 1/**//// <summary> 2/// 计算租金 3/// </summary> 4/// <returns></returns&

应用OOP的设计过程演化(二)

在我上篇文章应用OOP的设计过程演化(一) 里,结合了实例通过应用OOP和重构等技术,你已看到代 码是怎样一步一步复活的.让最初死板的代码变得灵活.可扩展,设计的不断演化过程证实,代码一步一 步的复活就如同给一只冻僵翅膀的小鸟带去温暖的阳光一样. 上一篇文章虽然算得上是完美的演义了一个应用OOP的设计过程,但缺点也不少,可能因为这样给文章 留下了败笔.那下面我们就来分析下这些不足之出.我们在设计中为什么要不断的抽象,重构?因为最初 的设计不可能是完美的,我们不能一下子就完全把各个对象.类.接口等

网页设计过程中应该注意的十个问题

1.不要滥用Flash Adobe公司的这项动画技术让互联网变得更为强大,从Nike公司非常夸张的首页动画到众多广告商使用的网页Banner.但是这项技术非常容易被滥用,过多的动画不仅没有实用性而且还会拖慢用户的网页浏览器. 2.不要让广告遮挡了网站内容 的确,广告对网站的生存来说是至关重要的,但研究表明,弹出广告和整页的广告一旦遮挡了网站内容,那它们的效用会大打折扣,同时也会影响读者是否会再来光顾.一个能够根据读者的要求进行伸缩的广告会更合适一些. 3.不要让网页看起来杂乱无章 网页是一个大杂

交互设计经验:设计过程中存在太多的矛盾

文章描述:交互设计经验:设计过程中存在太多的矛盾. 在产品团队中经常听到有人表态:"我们要做简洁的用户界面",同时又有另外一种声音传来:"我们要做功能强大的产品".乍一听,简洁意味着用户界面控件精炼,然而少数的交互方式如何表达各类强大的功能?反之,强大意味着功能丰富强劲,必然拥有错综复杂的联系,如何让其界面保持简洁?两者似乎无法共存,这让我突然想到自相矛盾的故事,楚国商人夸耀自己的矛锐利万分,同时自己的盾又坚固无比, "以子之矛,陷子之盾,何如?"

图标设计过程中需要注意的问题

文章描述:那么怎么样才能做出一套好的图标?在图标设计过程中需要注意哪些问题? 图标在生活中运用是显而可见的.例如:男女厕所标志和各种交通标志等.在计算机系统或软件方面的应用也是很广泛.例如:程序标识.数据标识.命令选择.模式信号或切换开关.状态指示等.下面的例子更形象的说明这个问题. (图片来源:九铭)外国人A与中国人B,两人在语言上存在差异对文字的认识是不同的,用图标来表示,会缩短语言描述的距离.所以图标更具有快捷传达信息.便于记忆的特性.那么图标被广泛使用的时候,什么样的图标才是好图标呢?好

设计案例分享:腾讯手机令牌的设计过程

文章描述:QQ安全我做主-手机令牌2.0设计分享. 一款小小的工具软件,如何赢得  iPhone app store4星级+评价:Android 电子市场4.5星评价,让我与您一起分享手机令牌的设计过程 什么是手机令牌? 手机令牌是通过6位动态密码保护QQ帐号.Q币和游戏装备等虚拟财产安全的手机软件.手机令牌每30S更换一次动态密码,用户在敏感操作的时候验证动态密码,以此保障自己的帐号安全.简单的说:手机令牌是一个动态密码的生成软件.是我们专为保护用户QQ帐号安全设计的手机APP. 设计工作主要

数据库设计过程中一些命名规范

规范|过程|设计|数据|数据库|数据库设计 数据库设计过程中命名规范很是重要,命名规范合理的设计能够省去开发人员很多时间去区别数据库实体. 数据库物理设计包括:表设计,视图设计,存储过程设计,用户自定义函数设计等等. 1.  表设计命名规范:表使用t开头最好能将表根据属性分类并作好编号. 如:编码表可写为tBM001Something  t为表开头,BM为业务类型,001为该类别中的第几个表something是表的名称注释. 2. 视图设计命名规范:视图设计过程中使用v开头,视图命名以制作视图的

网页设计师页面设计过程中也要注意页面性能

一名网页设计师在做具体设计的时候应该考虑的问题有哪些?业务,产品,信息结构,交互,视觉--别忘了还有页面性能.我所崇尚的其实一直都是小作坊似的创业团队协作开发模式,大伙儿能快速沟通,就算设计师没关注到页面性能这一点,前端同学也能迅速提醒他,因为他俩就无时无刻不在一起.而现在在标准项目流程中,大家的沟通成本成倍增加了,除非是与世隔绝的闭关(就算是闭关,前端同学多半也在陪着开发),前端同学很难在页面设计过程中就和设计师沟通页面性能的问题. 页面性能不仅仅是前端同学的问题 页面性能的重要性不再赘述,就

用户体验设计:Nearby Tweets改版的完整设计过程

UX Case Study: Designing a user-focused web appBrian Cray版权所有作者:Brian Cray译者:UCD翻译小组,波希米亚原文地址: http://briancray.com/2010/01/26/ux-case-study-designing-user-focused-web-app/ 这篇文章记录了Nearby Tweets改版的完整设计过程.Web开发者和商家期望借此获取些灵感.用户则更有兴趣找寻这些设计中所蕴藏的东西.当然,我希望能