欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第3章面向对象的C#语言.ppt

    • 资源ID:2255081       资源大小:364.51KB        全文页数:68页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第3章面向对象的C#语言.ppt

    第3章 面向对象的C#语言,本章内容,类、域、方法 属性、索引 类的继承 修饰符 接口 结构与枚举 面向对象:继承、封装、多态 UML类图简介,3.1 类、域、方法,定义类中的域和方法,class Person public string name; public int age; public void sayHello() Console.WriteLine(“Hello! My name is “ + name ); public string getInfo() return “Name: “ + name + “, Age: “ + age; ,构造方法,(1)构造方法的方法名与类名相同。 (2)构造方法没有返回类型,也不能写void。 (3)构造方法的主要作用是完成对象的初始化工作。 (4)构造方法一般不能显式地直接调用,而是用new来调用。,缺省构造方法,public Person() ,析构方法,class Person Person() ,对象的创建,Person p = new Person(“Liming”, 20 );,对象的使用,Console.WriteLine( p.name ); p.sayHello();,方法的重载,签名,public void sayHello() Console.WriteLine(“Hello! My name is “ + name ); public void sayHello( Person another ) Console.WriteLine(“Hello,“ + another.name + “! My name is “ + name ); ,OverloadingTest.cs,使用this,public Person( int age, string name ) this.age = age; this.name = name; ,public Person( ) : this( 0, “ ) / 构造方法的其他语句 ; ,应用示例:银行系统,系统中有几类对象?Account, Bank, ATM 每个类中有什么域、方法?,3.2 属性、索引,使用属性、索引的示例,使用属性 button1.Text button1.Text = “说你好”; 含义相当于button1.SetText( “说你好”); String s = button1.Text; 含义相当于s = button1.GetText(); 使用属性 string s=“abcde”; 求出长度: s.Length 含义上相当于s.GetLength(); 使用索引 string s=“abcde”; 求出第0个字符: s0 含义上相当于s.Get(0),private string myName; public string Name get return myName; set myName = value; ,对属性进行访问,Person p = new Person(); p.Name = “Li Ming”; Console.WriteLine( p.Name ); 编译器产生的方法是: void set_Name( string value ); string get_Name();,PersonProperty.cs,属性与域的比较,(1) 属性可以实现只读或只写,而域不能。 (2) 属性的set方法可以对用户指定的值(value),进行有效性检查,从而保证只有正确的状态才会得到设置,而域不能。 (3) 属性的get方法不仅可以返回域变量的值,还可以返回一些经过计算或处理过的数据,如上例中的只读属性Info,它返回的由Name及Age组合过的字符串。 (4) 由于属性在实现时,实际上是方法,所以可以具有方法的一些优点,如可以定义抽象属性等等。,索引(Indexer),修饰符 类型名 this 参数列表 set get ,使用索引,对象名 参数 编译器自动产生两个方法,以供调用: T get_Item(P); void set_Item(P, T value);,IndexerRecord.cs,属性与索引的比较,IndexerBitArray.cs,3.3 类的继承,使用继承的示例,我们定义的窗体 public class Form1 : System.Windows.Forms.Form,继承(inheritance),子类subclass、父类baseclass 单继承 所有的类都是通过直接或间接地继承object(即System.Object)得到的。,class SubClass : BaseClass ,示例,class Student : Person / ,继承,子类自动地从父类那里继承所有域、方法、属性、索引等成员作为自己的成员。 除了继承父类的成员外,子类还可以添加新的成员,还可以隐藏或修改父类的成员。,域的继承、添加与隐藏,class A public int a; class B : A new public int a; ,方法的继承、添加,方法的继承 方法的添加,与父类同名的方法,一是定义同名、但参数列表(签名)与父类不同的方法,这称为对父类方法的重载(Overloading) 二是定义同名且参数列表也与父类相同的方法,这称为新增加一种方法 ,用new表示 三是定义同名且参数列表也与父类相同的方法,而且父类的方法用了abstract或virtual进行了修饰,子类的同名方法用了override进行了修饰,这称为虚方法的覆盖(Overriding)。,InheritFieldMethod.cs,使用base,void sayHello() base.sayHello(); Console.WriteLine( “My school is “ + school ); ,Student(string name, int age, string school ) : base( name, age ) this.school = school; ,父类与子类的转换,Person p1 = new Person(); Person p2 = new Student(); Student s1 = new Student(); Student s2 = new Student(); p1 = s1; /可以,因为Person类型的变量可以引用Student对象 s2 = p1; /不行,因为会产生编译错误 s2 = (Student) p1; / 编译时可以通过,运行时则会出现类型不能转换的异常 s2 = (Student) p2; /正确,因为p2引用的正好是Student对象实例,as运算符,如果不能转换,则值为null Student s3 = p1 as Student; /结果s3为null Student s4 = p2 as Student; /s4被赋值 与强制类型转换的差别 as只能针对引用型变量 如果不能转换,as运算不会引起异常,只是值为null,is运算符,if( p is Person ) 判断一个对象是不能某个类(及其子类)的实例,typeof()运算符,获得其运行时的类型 Type t = typeof(变量); Type t = typeof(类名);,属性、索引的继承,3.4 修饰符,访问控制符,static,static的域、方法、属性是属于整个类的 static方法中,不能访问实例变量 调用static方法时,直接用类名访问 Console.Write(); Math.Sqrt(); Convert.ToDateTime(); DateTime.Parse String.Copy(a);String.Format(“0”,x) static变量可以用来表示“全局变量” 在c#2.0中,类名也可以用static来修饰,StaicAndInstance.cs,static构造方法,class Person static long totalNum; static Person() totalNum = (long)52e8; Console.WriteLine(“人类总人口“ + totalNum ); static方法只会调用一次,但其调用时间是不确定的。,const及readonly,const相当于静态常量 如Math.PI readonly相当于不可改量,只能赋一次值 如String.Empty 在构造方法中赋值,或者在声明时就赋值 注: const 只能用于基本类型及string(如果用于其他类型则无意义,因为只能为null值)。 readonly只能修饰域,而const还可以修饰局部变量,Constans.cs,ReadonlyColor.cs,sealed及abstract,sealed类,不可继承(也有利于编译优化) 如String Console Math Convert Graphics Font abstract类,不可实例化(new) 如Array, RandomNumberGenerator abstract的方法体,不用,用; abstract 类型 方法名( 参数列表 ); abstract 类型 属性名get;set;,抽象类表示了其子类的属性,AbstractShapeTest.cs,3.5 接口,接口(interface),相似于抽象类 一个抽象成员的集合 如:ICloneable, IComparable, IConvertible, IDisposable, IFormattable, IEnumerable,帮助实现多重继承,接口的用处,实现不相关类的相同行为 需要考虑这些类之间的层次关系 通过接口可以了解对象的交互界面,而不需了解对象所对应的类 例如: public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable,定义一个接口,public interface ISringList void Add(string s); int Count get; string thisint index get; set; ,实现接口,class 类名 : 父类, 接口, 接口, ,接口 ,TestInterface.cs,显式接口成员实现,方法名前写接口名 void IWindow.Close () 调用时,只能用接口调用 ( ( IWindow ) f ).Close(); 在不同接口的方法相同时,能消除歧义,InterfaceExplicitImpl.cs,3.6 结构及枚举,结构struct,结构,如: Point, Color, Size, DateTime, Int32 struct 结构名 : 接口名 结构是隐式sealed;因此它们不能被继承。,使用struct要注意,struct是值类型 结构不能包含无参数构造方法 每个域在定义时,不能给初始值 构造方法中,必须对每个域进行赋值 实例化时,使用new,但与引用型变量的内存是不同的 值类型变量在赋值时,实行的是域的copy,StructNew.cs,StructPoint.cs,枚举 (enum),如FontStyle, GraphicsUnit, KnownColor, DockStyle, DialogResult 声明自己的属性 enum MyColor (注:后者可以跟一个 : int ) Red, Green=1, Blue=2 ,EnumColor.cs,使用枚举,MyColor c = MyColor.Red; Console.WriteLine( c.ToString() ); c = (MyColor) Enum.Parse( typeof(MyColor), “Red“);,3.7 面向对象编程,面向对象OO,Object Oriented方法的三大特点 继承 inheritance 子类继承父类的成员,还可增加、调用、隐藏 提高软件模块的可重用性和可扩充性 封装 encapsulation 使用接口,而不关心具体的类 使用属性,而将域设为private 多态 polymorphism 相同的方法,不同的参数 自动调用子类相应的方法(虚方法调用,以后讲),UML类图简介,UML,统一建模语言 有类图、状态图、时序图等多种图形,VS中的类关系图,在项目上,点右键,”查看类关系图“ 添加新项,其他项,类关系图,UML工具,IBM Rational XDE for .NET Borland Together Microsoft Visio 正向工程,由UML图自动产生代码 反向工程,由代码自动产生UML图,小结,类class、接口interface 结构struct、枚举enum 类的成员:域、方法、属性、索引 修饰词 public protected internal private staic const readonly abstract sealed OO与UML,练习,参见讲义及ch03目录,进一步阅读,书稿3 类和接口.doc C#语言规范 http:/www.uml.org.cn,问题与讨论,dstang2000263.net,

    注意事项

    本文(第3章面向对象的C#语言.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开