c#语言基础_2_类的设计

c#语言基础_2_类的设计

ID:34542131

大小:891.54 KB

页数:43页

时间:2019-03-07

c#语言基础_2_类的设计_第1页
c#语言基础_2_类的设计_第2页
c#语言基础_2_类的设计_第3页
c#语言基础_2_类的设计_第4页
c#语言基础_2_类的设计_第5页
资源描述:

《c#语言基础_2_类的设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、(二)类的设计2对象(object)和类(class)世界由对象构成——万物皆是对象,每个对象为世界的运转贡献自身的力量对象独一无二。如何刻划对象?——通过类分析对象的特征,有动(动态行为)静(静态属性)之分,以及内(私隐)外(外在表现)之分对对象的特征归纳、抽象(泛化)而得类,然后对类具体化(特化)而得对象人类思维认知过程:特化—泛化—特化(具体—抽象—具体)计算机程序世界的对象和类程序(系统)世界也由各种程序对象构成,一个大系统要能完成其功用,依靠若干程序对象的共同协作才能达成开发程序系统就是要生产出组成系统的各个程序对象

2、,然后装配起来与现实世界制造产品类似,计算机需要需要对象设计图和装配图才能制造出程序对象,计算机程序世界的这些产品设计图就是各种类的定义代码3类是对象的抽象,对象是类的实例对类也可继续抽象泛化,到极致就得到抽象类,抽象类的特化仍是类而非对象类设计要点确定属性和行为——数据成员和函数成员只选择与应用域相关的属性及行为,而非无所不包确定外观和私隐——公开接口和细节隐藏考虑哪些成员外界可见,哪些对外界隐藏以上两点就是面向对象方法中的封装封装过程是融合于对对象的抽象分析过程中本章主要介绍C#语言机制,如何支持面向对象方法的封装性特征4

3、采用真正的面向对象设计方法上一章实现了一个WordCount程序:它可以接受参数输入,然后打开参数所指的文本文件,读取文件中文本行并存储起来,把文本串分解为单个单词并作出现累计,最后按字典顺序把各单词出现次数输出到另一个文本文件中。整个过程可以说是以面向过程的思路来进行与熟知的C++过程式程序比较,最基本的改变或许就是要求把变量和函数都放入一个类定义中。显然,这只是以类的语法来实现过程式编程应用面向对象方法设计程序,需要思维上的扭转立足全局,由粗到细,由浅入深,由表及里过程式方法关注的是“如何做”;面向对象方法则重点考虑“谁来做”的

4、问题,“如何做”则放后。——“推迟实现”的观点,软件开发越迟“实现”,成功率越高5WordCountclass设计从哪儿开始?暂且忘掉单词分解的Split()函数,ArrayList对象,HashTable对象等具体细节,想一想诸如打开文件,读取文件,统计,输出结果这些工作由哪些成员函数来完成(如果要开发更大型的程序,则先考虑各部分工作分别由哪类对象来做)将所有工作都交由一个成员函数来做并非好设计(为什么?请大家列举原因)内聚性概念设立以下成员函数负责上述几项工作:openFile()readFile()countWords()wri

5、teWords()另外为保障上述工作,可能还需要一些前期准备的工作(初始化任务),而所有工作完成后有可能要进行清理的工作6确定WordCount具有的成员函数后,接着粗略考虑函数的接口,即:传入参数和返回值的设置成员函数通常可以不带参数和返回值,借助类的数据成员完成其任务,这样可以简化编程模式接下来要考虑成员函数的访问级别,这个工作很重要,关系到类信息隐藏的效果,这是封装性的要求(回想一下封装的概念)可选择的访问级别是public或private,类内的public成员越多,则细节暴露越多,对类的使用就越不稳定(开发维护难度加大),类

6、成员默认的(即不声明时)访问级别是private应尽量降低外界对类的成员函数的直接调用能力。也就是说,只要能够实现类承诺的功能,应尽量把成员函数设置为private级别。WordCount的这几个成员函数是整个统计功能的几个子过程,逻辑上属于内部事务,不应对外开放,应设为private,而另外设置一个public函数processFile()把它们打包,由外界调用(想想这样做的好处)7围绕“工作由谁做”,类WordCount大体轮廓已设计出来(暂不考虑函数的实现细节,而以简单屏幕输出来代表细节):usingSystem;publiccla

7、ssWordCount{publicvoidprocessFile(){openFiles();readFile();countWords();writeWords();}privatevoidcountWords(){Console.WriteLine(“countWords函数”);}privatevoidreadFiles(){Console.WriteLine(“readFiles(”);}privatevoidopenFiles(){Console.WriteLine(“openFiles函数”);}privatevoidwriteW

8、ords(){Console.WriteLine(“writeWords函数”);}}8尽管上面的函数没有实现细节,但这个类已经是一个完整的定义,可

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。