深入浅出C#(中文版 图文皆译)第六章-
下载文档
当前位置:
首页> 深入浅出C#(中文版 图文皆译)第六章-
深入浅出C#(中文版 图文皆译)第六章-
时间: 下载该word文档
有时你真的想要像你的父母。
曾经遇到过可以做你想要它做的事情的对象吗?曾经希望过你只要只要修改一点东西对象就变得完美了吗?这就是C#语言中继承如此重要的原因。读了这一章,你将学会如何通过继承一个对象来获得它的行为,同时还保持修改它的行为的灵活性。你将不用再复制代码,可以更好的模拟现实世界,最后写出容易维护的代码。
(下载源码就到源码网:www.codepub.com)
凯瑟琳也承接生日聚会
你的程序已经可以工作了,凯瑟琳总是在用它。但是她不只是承晚宴聚会--她现在也做生日聚会,而且计费方式与晚宴聚会有所不同。她需要你给程序添加生日聚会的功能。
我们需要一个BirthDayParty类
修改你的程序来计算生日聚会的花费就意味着要添加一个类并改变窗体来同时掌管两种类型的聚会。
一、 创建一个新的BirthDayParty类
这个类要计算花费,处理装饰,并检查蛋糕上的字体的大小。
二、 添加一个TabControl控件到窗体上。
窗体上的每一个tab就像第三章上显示Joe和Bob有多少现金的GroupBox控件。点击你想要显示的tab,并向其中拖拽控件。
三、 把晚宴聚会需要的控件拖拽到第一个tab上去
要把每一个处理晚宴聚会的空间都拖拽到上面去。它们将会像原来一样的工作,但是它们只有在晚宴聚会的tab被选中时才显示出来。
四、 向第二个tab上添加新的生日聚会的控件
你需要像设计晚宴聚会的界面一样的来设计生日聚会的界面。
五、 根据控件来写生日聚会的类
现在只需要在窗体的字段里面添加一个BirthDayParty的引用,并向新的控件添加代码以使得它们可以使用类的方法和属性。
问:为什么不可以像Mike想要在导航器中比较三条道路时一样,直接创建一个DinnerParty的新实例呢?
答:因为如果你创建了DinnerParty的另一个新实例,它只能用来计划另一个晚宴聚会。两个同类的实例只有在你需要处理同类的两份数据的时候才会显得有用。但是如果你需要存储不同的数据,那你就需要不同的类来完成。
问:我怎么知道该往新类里面写些什么呢?
答:开始构建爱一个类之前,需要先知道它是用来解决什么问题的。因此
你必须和凯瑟琳谈谈—是她要使用这个程序。还好你记了不少笔记!你可以通过考虑类的行为(类需要做什么)和状态(类需要知悉什么)来想出类的方法,字段,和属性。
四.构建生日聚会的界面
生日聚会的GUI含有一个NumbericUpDown控件来代表人数,含有一个CheckBox控件来代表高级装饰,一个有着3D边界的标签来显示总花费。然后还有一个TextBox控件来显示蛋糕上要写的字。
五.你将需要这个属性
这是BirthDayParty.CakeWriting属性的代码--它会派上用场的:
六.把它们组合起来
所有的部分都写好了,现在只需要写一些代码来让控件工作。 *添加一个BirthDayParty对象到窗体。确保你实例化了它。
*编写NumbericUpDown控件的事件处理方法,该方法用来设置NumberOfPeople属性。 *让高级装饰的CheckBox可以工作
*添加一个DisplayBirthDayPartyCost()方法,并在所有的事件处理方法中调用它,这样显示花费的标签将会在任何变化发生的时候得以更新。
七.运行
确保程序以它被预期的方式运行。检查一下文字过长的时候是不是会弹出错误提示框。确保价钱总是正确的。上面这些做好了,你的工作就搞定了!
向凯瑟琳的聚会计划程序添加生日聚会
给凯瑟琳的聚会计划程序添加生日聚会
括号对于单行的代码块来说是可选的
很多时候你的if语句或者while循环下面的代码块中都会只有一句语句。如果有很多这样的if和while,也就会有很多的括号--它看起来很不顺眼!C#允许你在代码块中只有一句语句的情况下省略掉
括号,这样就解决了问题。所以下面的代码绝对符合语法:
另一件事儿...你可以给超过12人的聚会额外收费$100吗?
用了你的程序,凯瑟琳接到了很多的用户,她可以跟某些大客户多收一点费用了。那,要怎么做才能让你的程序有多收费一点的功能呢?
*修改DinnerParty.CalculateCost()方法来让它检查NumberOfPeople,如果人数多于12,就给返回值加上$100。
*用同样的方式修改BirthDayParty.CalculateCost()方法。
想一下怎么能够一下子就让DinnerParty和BirthDayParty同时具有多收费的功能呢。要写设么代码?写在哪儿呢?
这个问题很简单...但是如果有三个类似的类呢?四个呢?十多个呢?如果你还要维护这些类,有可能要做更多的更改呢?如果要对五六个相似的类做同样的更改需要怎么做呢?
对!在多个类中写同样的代码是低效率的,而且容易出错。
很幸运,C#给我们构建相互关联的、有共同行为的类提供了更好的方法:继承。
给你的类应用继承,你的代码就只需要写一次了
DinnerParty和BirthDayParty