oo建模初步(12-3)

oo建模初步(12-3)

ID:19788741

大小:651.50 KB

页数:37页

时间:2018-10-06

oo建模初步(12-3)_第1页
oo建模初步(12-3)_第2页
oo建模初步(12-3)_第3页
oo建模初步(12-3)_第4页
oo建模初步(12-3)_第5页
资源描述:

《oo建模初步(12-3)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第三讲对象建模初步1、分析问题陈述自上而下:将整个系统划分为模块自下而上:先确认模块,合并成整体2、明确问题性质计算过程加工型;管理系统管理型;独立系统实体型;交互系统事务型;具备多种性质时,需要分解;每个对象应具有单一责任建模的基本步骤3、确认候选对象分清属性、行为;分清责任,明确功能的归属4、确认对象之间的关系一般与特殊、整体与部分对象关联、对象依赖5、分析工作过程动态性质、涉及对象及其交互过程补充对象关联、补充对象行为例3-1:求输入文本的最长行输入从键盘读入多行文本(以空行结尾)输出所有最长行及其行号(可能

2、有多个最长行)属于过程型的计算(加工型)数据分析(处理过程中保留的数据)缓冲区buf:当前的多个最长行及其行号当前行line、当前行号i当前最长行的长度max基本算法Beginmax0,i1读入一行line,得到行长度n(字符个数)若是空行n=0,转向8若n>max请空bufnmax(line,i)添加到buf若n=max(line,i)添加到bufi加一重复2-6输出bufEndC语言实现(1/2)typedefstructnode{//缓冲区链表charline[256];intnum;structnodenex

3、t;}Link;LinkaddHead(Linkp,charline,inti){Linkq=(Link)malloc(sizeof(Link));strcpy(q->line,line);q->num=i;q->next=p;returnq;//在表头添加元素}Linkfreelink(Linkp){for(;p!=NULL;p=q){Linkq=p->next;free(p);}//释放整个链表returnNULL;}C语言实现(2/2)main(){intmax=0,i,n;Linkbuf=NULL,;for(i=0

4、;;i++){charline[256];gets(line);//读入一行if(0==(n=strlen(line)))break;//空行时,结束循环if(nmax){max=n;//保存最长行的长度buf=freelink(buf);}//清空缓冲区buf=addlink(buf,line,i);//保存最长行}for(;buf!=NULL;buf=buf->next)printf(“%d:%s”,buf->num,buf->line);}//输出缓冲区中

5、的所有行和行号存在问题数据的共享数据结构公开、访问权限无限制计算逻辑依靠函数设计来保证(结构化)出错的来源非法数据更新、结构修改(指针)不好维护各种信息无区别(指针和内容)数据设计的变更会影响多个函数面向对象方法问题的性质:过程型计算对象设计加工型对象:MaxLine方法设计start(输入流、输出流)读入数据,求最长行,输出最长行其他设计需求分析算法,确认必要的数据和相关操作设置为局部变量局部对象的确认候选对象缓冲区buf包含若干行(管理型)数据行line具有文本数据和行号(实体型)责任分析缓冲区buf:添加元素、清空、

6、输出数据行line:输入、获得行长度、输出设计方法分析算法描述中涉及相关数据的操作对象设计缓冲区CBuf:管理所有最长行关联:包含多个行(单向)方法:add(行),clear(),output(输出流)行CLine:表示一行文本属性:文本text,行号no方法:input(输入流,行号):长度output(输出流)类设计classMaxline{//主模块public:voidgetMax(istream&in,ostream&out);};//求最长行方法classCBuf{//缓冲区CObArraylines;//所有

7、最长行public:voidaddLine(CLineline);//添加voidclear();//清空voidoutput(ostream&out);//输出};CLine的C++实现classCLine:publicCObject{chartext[256];//文本intno;//行号public:intinput(intn,istream&in);//读入文本行voidoutput(ostream&out);//输出文本行};intCLine::input(intn,istream&in){in.getline(

8、text,256);//读入一行no=n;returnstrlen(buf);//文本长度}voidCLine::output(ostream&out){//输出一行out<

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

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

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