2022年云大软件学院C#实验继承和多态参考 .pdf

上传人:C****o 文档编号:33400882 上传时间:2022-08-10 格式:PDF 页数:8 大小:427.87KB
返回 下载 相关 举报
2022年云大软件学院C#实验继承和多态参考 .pdf_第1页
第1页 / 共8页
2022年云大软件学院C#实验继承和多态参考 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年云大软件学院C#实验继承和多态参考 .pdf》由会员分享,可在线阅读,更多相关《2022年云大软件学院C#实验继承和多态参考 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 实验报告序号:实验老师:课程名称:C#与.NET 实验实验名称:实验 6:继承和多态学号:姓名:课程名称 C# 与.NET实验实验项目实验 6:继承和多态实验目的熟悉并掌握, C#的类继承与多态的特性。实验内容(算法、程序、步骤和方法)(1) 类型 QueryTest 的程序代码如下:using System; using System.IO; using System.Collections; namespace QueryTextLanguageTest publicclassQueryTest staticvoid Main( string args) Query query = n

2、ull ; Console .WriteLine(TextQuery: begin(); Boolean sign = true ; / 退出标记while (sign) Console .Write(Please enter a query or q to Quit: ); string statement = Console .ReadLine(); / 读取查询语句if (statement.Equals(q ) / 退出查询 Console .WriteLine(OK,bye!nTextQuery: end()n); sign = false ; else if (query != n

3、ull ) query = QueryTest .parseQuery(statement); query.eval(); query.eval_print(); else Console .WriteLine( 你的输入有误,请重新输入!n ); / 对输入的语句进行处理,返回查询类型publicstaticQuery parseQuery(string statement) 指标等级A B C D 功能完整程序质量按时检查提问回答检查时间总评成绩名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -

4、 - - 第 1 页,共 8 页 - - - - - - - - - 2 实 验 内 容( 算 法 、程 序 、 步骤和方法)Query query = null ; Query q1 = null ; Query q2 = null ; Query q3 = null ; Query q4 = null ; ArrayList word1 = new ArrayList(); string word = new string5; statement = statement.ToLower(); word = statement.Split( ); if (word.Length = 1) /

5、 匹配各种查询语句 query = new NameQuery (statement); elseif (word.Length = 2 & word0.Equals(! ) query = new NotQuery (word1); elseif (word.Length = 3 & word1.Equals(|) q1 = new NameQuery (word0); q2 = new NameQuery (word2); query = new OrQuery(q1,q2); elseif (word.Length = 3 & word1.Equals(& ) q1 = new Name

6、Query (word0); q2 = new NameQuery (word2); query = new AndQuery(q1, q2); elseif (word1.Equals(&) & word3.Equals(|) q1 = new NameQuery (word0); q2 = new NameQuery (word2); q3 = new NameQuery (word4); q4 = new AndQuery(q1,q2); q4.eval(); q4.eval_print(); query = new OrQuery(q4, q3); elseif (word1.Equa

7、ls(|) & word3.Equals(& ) q1 = new NameQuery (word0); q2 = new NameQuery (word2); q3 = new NameQuery (word4); q4 = new OrQuery(q1, q2); q4.eval(); q4.eval_print(); query = new AndQuery(q4, q3); else query = null ; return query; (2) 类型 Query 的程序代码如下:abstractpublicclassQuery protectedint textLines; pro

8、tectedStreamReader sr; protectedstring text_line = null ; protectedArrayList numList = null ; protectedArrayList lineList = null ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 3 实 验 内 容( 算 法 、程 序 、 步骤和方法)publicArrayList NumList / 文本行号链表

9、get return numList; set numList = value ; publicArrayList LineList / 文本行内容链表 get return lineList; set lineList = value ; publicint TextLines get return textLines; public Query() / 构造函数 sr = new StreamReader( F:query.txt); publicvirtualvoid eval() while (text_line = sr.ReadLine()!= null ) textLines+;

10、 publicvirtualvoid eval_print() Console .WriteLine(); (3) 类型 NameQuery 的程序代码如下:publicclassNameQuery : Query privatestring name; / 声明两个变量privatestring line; public NameQuery( String name) / 构造函数 : base() this .name = name; / 初始化各变量this .numList = new ArrayList(); this .lineList = new ArrayList(); / 寻

11、找符合条件的文本行publicoverridevoid eval() while ( this .text_line = this .sr.ReadLine() != null ) this .textLines+; line = text_line.ToLower(); if ( this .line.Contains(name) this .NumList.Add(this .TextLines); this .LineList.Add(this .text_line); publicoverridevoid eval_print()/ 输出查询结果 Console .Write(0n t

12、1 line(s) match: , this .name, this .NumList.Count); for ( int i = 0; i this .NumList.Count; i+) Console .Write( 0, this .NumListi); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 4 实 验 内 容( 算 法 、程 序 、 步骤和方法)Console .WriteLine( n); for ( i

13、nt i = 0; i this .NumList.Count; i+) Console .WriteLine(0: 1, this .NumListi,this .LineListi); Console .WriteLine(); publicoverridestring ToString() returnthis .name; (4) 类型 NotQuery 的程序代码如下:publicclassNotQuery : Query privatestring name; / 声明各个变量privatestring line; privateQuery query; public NotQue

14、ry( String name) / 构造函数 : base() / 初始化各变量this .query = new NameQuery (name); this .name = name; this .numList = new ArrayList(); this .lineList = new ArrayList(); / 寻找符合条件的文本行publicoverridevoid eval() this .query.eval(); while ( this .text_line = this .sr.ReadLine() != null ) this .textLines+; line

15、= text_line.ToLower(); if (! this .line.Contains(name) this .NumList.Add(this .TextLines); this .LineList.Add(this .text_line); publicoverridevoid eval_print()/ 输出查询结果 Console .Write(0n t1 line(s) match: , this .query.ToString(), this .query.NumList.Count); for ( int i = 0; i this .query.NumList.Cou

16、nt; i+) Console .Write( 0, this .query.NumListi); Console .WriteLine( n); Console .Write(! 0n t1 line(s) match: , this .name, this .NumList.Count); for ( int i = 0; i this .NumList.Count; i+) Console .Write( 0, this .NumListi); Console .WriteLine( n); for ( int i = 0; i this .NumList.Count; i+) Cons

17、ole .WriteLine(0: 1, this .NumListi,this .LineListi); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 5 实 验 内 容( 算 法 、程 序 、 步骤和方法)Console .WriteLine(); publicoverridestring ToString() returnthis .query.ToString(); (5) 类型 OrQuery 的程序代码如下:pub

18、licclassOrQuery : Query privateQuery q1; / 声明两个 Query变量privateQuery q2; public OrQuery( Query q1, Query q2) / 构造函数 :base() this .q1 = q1; / 初始化各变量this .q2 = q2; this .numList = new ArrayList(); this .lineList = new ArrayList(); publicoverridevoid eval() / 寻找符合条件的文本行 this .q1.eval(); this .q2.eval();

19、 this .NumList = (ArrayList) this .q1.NumList.Clone(); this .LineList = (ArrayList)this .q1.LineList.Clone(); bool flag = false ; / 判断是否存在文本行的标记/ 对查询二的文本行把不在查询一中文本加入一中for ( int i = 0; i this .q2.NumList.Count; i+) / 如果查询一中含有此行,则不加入该行for ( int j = 0; j this .NumList.Count; j+) if ( this .q2.NumListi.

20、Equals(this .NumListj) flag = true ; break ; if (flag = false ) /查询一中不含的行加入查询一 this .NumList.Add(this .q2.NumListi); this .LineList.Add(this .q2.LineListi); flag = false ; publicoverridevoid eval_print() / 输出查询结果 Console .Write(0n t1 line(s) match: , this .q1.ToString(), this .q1.NumList.Count); for

21、 ( int i = 0; i this .q1.NumList.Count; i+) Console .Write( 0, this .q1.NumListi); Console .WriteLine( n); Console .Write(0n t1 line(s) match: , this .q2.ToString(), this .q2.NumList.Count); for ( int i = 0; i this .q2.NumList.Count; i+) Console .Write( 0, this .q2.NumListi); 名师资料总结 - - -精品资料欢迎下载 -

22、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 6 实 验 内 容( 算 法 、程 序 、 步骤和方法)Console .WriteLine( n); Console .Write(0 | 1 n t2 line(s) match: , this .q1.ToString(),this .q2.ToString(),this .NumList.Count); for ( int i = 0; i this .NumList.Count; i+) Console .Write

23、( 0, this .NumListi); Console .WriteLine( n); for ( int i = 0; i this .NumList.Count; i+) Console .WriteLine(0: 1, this .NumListi, this .LineListi); Console .WriteLine(); publicoverridestring ToString() returnthis .q1.ToString() + | + this .q2.ToString(); (6) 类型 AndQuery 的程序代码如下:publicclassAndQuery

24、: Query privateQuery q1; / 声明两个 Query变量privateQuery q2; public AndQuery( Query q1, Query q2) / 构造函数 : base() this .q1 = q1; / 初始化哥变量this .q2 = q2; this .numList = new ArrayList(); this .lineList = new ArrayList(); / 寻找符合条件的文本行publicoverridevoid eval() this .q1.eval(); this .q2.eval(); / 查找同时存在于两个查询中

25、的文本行for ( int i = 0; i this .q1.NumList.Count; i+) for ( int j = 0; j this .q2.NumList.Count; j+) if ( this .q1.NumListi.Equals(this .q2.NumListj) this .NumList.Add(this .q1.NumListi); this .LineList.Add(this .q1.LineListi); break ; publicoverridevoid eval_print() / 输出查询结果 Console .Write(0n t1 line(

26、s) match: , this .q1.ToString(), this .q1.NumList.Count); for ( int i = 0; i this .q1.NumList.Count; i+) Console .Write( 0, this .q1.NumListi); Console .WriteLine( n); Console .Write(0n t1 line(s) match: , this .q2.ToString(), 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -

27、 - - 第 6 页,共 8 页 - - - - - - - - - 7 实 验 内 容( 算 法 、程 序 、 步骤和方法)this .q2.NumList.Count); for ( int i = 0; i this .q2.NumList.Count; i+) Console .Write( 0, this .q2.NumListi); Console .WriteLine( n); Console .Write(0 & 1 n t2 line(s) match: , this .q1.ToString(), this .q2.ToString(), this .NumList.Cou

28、nt); for ( int i = 0; i this .NumList.Count; i+) Console .Write( 0, this .NumListi); Console .WriteLine( n); for ( int i = 0; i this .NumList.Count; i+) Console .WriteLine(0: 1, this .NumListi, this .LineListi); Console .WriteLine(); publicoverridestring ToString() returnthis .q1.ToString()+ & +this

29、 .q2.ToString(); 数据记录和计算实验结果截图如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 8 数据记录和计算结论(结果)1通过实验,对 C#中的继承和多态有了深刻的理解和掌握;2面向对象程序设计的两个最主要特征是:继承和多态;3继承机制使我们得以将一群彼此相关的classes组织起来, 并让我们得以分享其间的公共数据和公共操作行为; 4多态机制让我们在这些classes身上进行编程时,可以如同操控单一class的方便,并赋予我们更多弹性来加入或移除任何特定的classes ;5继承机制定义了父子关系。父类定义出所有子类公共的公开接口和私有实现,子类可以增加或覆写继承而来的东西,以便实现它自身独特的行为;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁