实验五 类与对象(二).doc_第1页
实验五 类与对象(二).doc_第2页
实验五 类与对象(二).doc_第3页
实验五 类与对象(二).doc_第4页
实验五 类与对象(二).doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验五 类与对象(索引器、委托、事件)一、实验学时:2课时二、实验目标1理解C#语言是如何体现面向对象编程基本思想;2掌握索引器的构造和使用方法;3掌握委托的使用方法;4掌握事件的使用方法;5掌握通过属性访问对象中的数据。三、实验要求1在上实验课之前,每位同学必须将实验的题目、程序编写完毕,做好充分的准备。2所有实验环节均由每位同学独立完成,严禁抄袭他人实验结果。3写出程序,并调试程序,要给出测试数据和实验结果。4. 整理上机步骤,总结经验和体会。5实验环境要求:Visual Stuudio 2010。6实验知识点要求:C#面向对象的概念、类和对象,索引器、委托、事件。四、实验任务1、定义一个带索引指示器的类并测试。书上的例子using System; namespace Sample003 class Class2 private char a = A, B, C ; public char thisint index /建立索引指示器 get /get访问方法 return aindex; set /set访问方法 aindex = value; class Class1 static void Main(string args) Class2 t = new Class2(); for( int i=0; i3; i+ ) Console.WriteLine( ti ); /索引指示器get访问方法 t0 = X; /索引指示器set访问方法 t1 = Y; t2 = Z; for( int i=0; i3; i+ ) Console.WriteLine( ti ); /索引指示器get访问方法 另一个例子/ indexer01.csusing System;class MyIndexer string name; public string thisint n get return namen; set namen = value; public MyIndexer(int a) name = new stringa; class indexer01 public static void Main() MyIndexer mi = new MyIndexer(5); string myname = new string5 赵一, 钱二, 孙三, 李四, 周五; for (int i = 0; i 5; i+) mii = mynamei; for (int i = 0; i 5; i+) Console.WriteLine(mi0 = 1, i, mii); 2、设计一个带有委托的类并测试。例一using System;delegate void MyDelegate(string str);class MyClass public void show(string s) Console.WriteLine(你好,我的名字是 + s ); class delegate01 public static void Main() MyClass mc = new MyClass(); MyDelegate md = new MyDelegate(mc.show); md(张三); 例二using System;delegate void MD();class multi01 void show1() Console.WriteLine(调用show1方法); void show2() Console.WriteLine(调用show2方法); void show3() Console.WriteLine(调用show3方法); public static void Main() multi01 m = new multi01(); MD md1 = new MD(m.show1); MD md2 = new MD(m.show2); MD md3 = new MD(m.show3); MD md; md = md1; md += md2; md += md3; md(); Console.WriteLine(-); md -= md2; md(); Console.WriteLine(-); md -= md1; md(); Console.WriteLine(-); md += md3; md += md3; md(); 3、参照例子,设计一个带事件的类并测试。例:using System;delegate void EventHandler();class MyClick public event EventHandler myclick; public void OnMyClick() if (myclick != null) myclick(); class Show public void show1() Console.WriteLine(show1); public void show2() Console.WriteLine(show2); class event01 public static void Main() MyClick mc = new MyClick(); Show s = new Show(); mc.myclick += new EventHandler(s.show1); /引发事件 mc.OnMyClick(); Console.WriteLine(-); mc.myclick += new EventHandler(s.show2); mc.OnMyClick(); 思考题:1、 索引指示器与属性有什么区别?索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。它可以使得像数组那样对对象使用下标。它提供了通过索引方式方便地访问类的数据信息的方法。 检索器的主要功能是根据用户输入的关键词在索引器形成的倒排表中进行检索,同时完成页面与检索之间的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。2、如何定义委托?3、如何定义事件、引发事件?实验四参考程序。using System;public class Book /字段 public string m_name; protected int m_price; protected int m_amount; / 属性 public String Name get return m_name; set m_name = value; public Book() m_name = unknown; m_price = 0; m_amount = 0; / 带参数的构造方法 public Book(String iniName,int iniPrice,int iniAmount) m_name = iniName; m_price = iniPrice; m_amount = iniAmount; / 方法 public void SetName(string newName) m_name = newName; public int getTotal() return m_price * m_amount; class TestBook static void Main() Book book = new Book(); int t = book.getTotal(); Console.WriteLine(0, t); Book book1 = new Book(c#程序设计,50,20); t = book1.getTotal(); Console.WriteLine(0, t); Book book2 = new Book(Java程序设计, 100, 15); t = book2.getTotal(); Console.WriteLine(0, t); Console.WriteLine(使用Name属性访问数据成员 0, book.Name); Console.WriteLine(直接访问数据成员 0, book.m_name); /注意访问属性是public 如果是private或prot

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论