小菜编程成长记(四 业务的封装)

(续上篇) 
        小菜:“你的意思是分一个类出来? 哦,对的,让计算和显示分开。”
        大鸟:“准确的说,就是让业务逻辑与界面逻辑分开,让它们之间的耦合度下降。只有分离开,才容易达到容易维护或扩展。”
        小菜:“让我来试试看。”

    class Program
    
{
        
static void Main(string[] args)
        
{
            
try
            
{
                Console.Write(
"请输入数字A:");
                
string strNumberA = Console.ReadLine();
                Console.Write(
"请选择运算符号(+、-、*、/):");
                
string strOperate = Console.ReadLine();
                Console.Write(
"请输入数字B:");
                
string strNumberB = Console.ReadLine();
                
string strResult = "";

                strResult 
= Convert.ToString(Operation.GetResult(Convert.ToDouble(strNumberA),Convert.ToDouble(strNumberB),strOperate));
 
                Console.WriteLine(
"结果是:" + strResult);

                Console.ReadLine();


            }

            
catch (Exception ex)
            
{
                Console.WriteLine(
"您的输入有错:" + ex.Message);
            }

        }

    }


    
public class Operation
    
{
        
public static double GetResult(double numberA,double numberB,string operate)
        
{
            
double result = 0d;
            
switch (operate)
            
{
                
case "+":
                    result 
= numberA + numberB;
                    
break;
                
case "-":
                    result 
= numberA - numberB;
                    
break;
                
case "*":
                    result 
= numberA * numberB;
                    
break;
                
case "/":
                    result 
= numberA / numberB;
                    
break;
            }

            
return result;
        }

    }


        小菜:“鸟哥,我写好了,你看看!”
        大鸟:“哈,孺鸟可教也,:),写得不错,这样就完全把业务和界面分离了。”
        小菜心中暗骂:“你才是鸟呢。”    口中说道:“如果你现在要我写一个Windows应用程序的计算器,我就可以复用这个运算类(Operation)了。”
        大鸟:“不单是Windows程序,Web版程序需要运算可以用它,PDA,手机等需要移动系统的软件需要运算也可以用它呀。”
        小菜:“哈,面向对象不过如此。下会写类似代码不怕了。”
        大鸟:“别急,仅此而已,实在谈不上完全面向对象,你只用了面向对象三大特性的一个,还两个没用呢?”
        小菜:“面向对象三大特性不就是封装、继承和多态吗,这里我用到的应该是封装。这还不够吗?…………我实在看不出,这么小的程序如何用到继承。至于多态,其它我一直也不太了解它到底有什么好处,如何使用它。”
        大鸟:“慢慢来,有的东西好学了,你好好想想吧,我要去“魔兽”了,改时聊。”

(待续)

posted on 2006-08-31 09:35 伍迷 阅读(8726) 评论(14) 编辑 收藏

评论

#1楼  回复 引用   

楼主说的确实对我很有用,多谢了!@_@~~
2006-09-17 11:36 | 化工[未注册用户]

#2楼  回复 引用   

大鸟:“哈,孺鸟可教也,:),写得不错,这样就完全把业务和界面分离了。”
小菜心中暗骂:“你才是鸟呢。”
=======================
呵呵,不错,文笔也很幽默~
2007-03-25 14:51 | kugou123

#3楼  回复 引用   

我要去“魔兽"了,我们的口语是“搞一把”
2007-03-28 16:44 | wuyisky[未注册用户]

#4楼  回复 引用 查看   

魔兽我要来。。。
写程序我吧行,玩魔兽我是高手哦
QQ:2828667
2007-04-10 10:47 | 邱韵      

#5楼  回复 引用   

工作游戏两不误 才是真正的高手吧 :)
2008-05-22 10:38 | 念时回复[未注册用户]

#6楼  回复 引用   

上述代码是用C++语言写的吗??怎么我有那么多词不认识呢??Console.write?? Convert.ToDouble(StrNumber B)?? Console.WriteLine??Console.ReadLine??
2008-06-13 21:12 | 白菜虫[未注册用户]

#7楼  回复 引用 查看   

我们经常讲的三层架构实际上也是降低耦合的一种策略,把UI和业务逻辑分离...
不知道这样理解对否?
2008-06-16 15:28 | Ivan-Yan      

#8楼[楼主]  回复 引用 查看   

@Ivan-Yan
理解正确
2008-06-16 15:41 | 伍迷      

#9楼  回复 引用   

string为什么小写啊!◎
2008-08-07 15:11 | 孽畜[未注册用户]

#10楼  回复 引用   

@白菜虫 不是用C++写的,用的是C#语言
Console.write 是在控制台输出
Convert.ToDouble(StrNumber B) 是类型转换,把String转成Double
Console.WriteLine 是换行
Console.ReadLine 是读取键盘输入

对C#语言感兴趣的话,找本书看下就知道了
2008-08-29 18:36 | Moon Summer[未注册用户]

#11楼  回复 引用 查看   

你好好想想吧,我要去“魔兽”了
大鸟,能一篇多写点不,这样看的很辛苦啊。
2008-10-27 17:27 | 依依之恋      
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 491022 xaDn11KYdyA=

导航

公告

    《大话数据结构》第三次印刷已将勘误中的错误修正,预计在2011年12月在各大网上书店中有售。具体时间由网店决定,我也不清楚,如果有买到的朋友能否给我发封邮件呀。再次向已经购买第一二次印刷的读者说一声抱歉,给您要花时间修正错误添麻烦了,当然您们在花费二十多分钟的修改后就能尽早阅读本书,也算是有遗憾后值得欣慰的地方!


联系邮箱:chengjielong#163.com
(中间“#”换成“@”)


新浪微博:http://weibo.com/cj723


本人《大话数据结构》2011年6月简体中文版由清华大学出版社出版,繁体中文版由台湾悦知文化出版



简体中文版


繁体中文版


本人因《大话设计模式》而获得51CTO网站主办的"2008年十大IT图书最佳原创作者奖" ;《大话设计模式》获互动出版网评选的2008年度十大畅销经典第4名;当当网计算机/网络类2008年度畅销榜第6名



简体中文版


繁体中文版
昵称:伍迷
园龄:5年5个月
荣誉:推荐博客
粉丝:669
关注:18

搜索

 

常用链接

随笔分类(165)

随笔档案(138)

相册

朋友

积分与排名

  • 积分 - 535943
  • 排名 - 107

最新评论

阅读排行榜

推荐排行榜