《C语言程序设计(第3版)》教学课件第三部分

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

郑宇军《C#语言程序设计(第3版)》清华大学出版社第6章深入理解类第6章深入理解类面向对象的方法学构造函数和析构函数属性索引函数事件操作符重载this关键字几个常用类面向对象的方法学面向过程的方法功能与数据分离自顶向下的分析基于模块的设计面向对象的方法数据+操作对象对象+类+继承+通信面向对象的方法学对象类(抽象化)Shape面向对象的方法学对象类(抽象化)类对象(具体化)王艳2年级3班刘强5年级1班范小飞2年级1班Student面向对象的方法学继承ShapeTriangleRectangleEllipseSquarePolygonCircle面向对象的方法学面向对象的建模对象模型/功能模型/动态模型面向对象的需求分析论域分析/应用分析面向对象的设计问题论域/用户界面/任务管理/数据管理相关参考书类的成员数据成员字段方法成员普通方法构造函数和析构函数属性索引函数事件操作符构造函数与析构函数构造函数:创建对象时调用析构函数:对象销毁时调用在程序中调用CLR自动调用构造函数与析构函数构造函数默认构造函数publicclassBankCard{privatestringid;privatedecimalmoney;}BankCardcard1=newBankCard();构造函数与析构函数构造函数默认构造函数无参构造函数publicclassBankCard{privatestringid;privatedecimalmoney;publicBankCard(){money=10;}}BankCardcard1=newBankCard();构造函数与析构函数构造函数默认构造函数无参构造函数带参构造函数publicclassBankCard{privatestringid;privatedecimalmoney;publicBankCard(strings){id=s;}}BankCardcard1=newBankCard(“001”);构造函数与析构函数构造函数默认构造函数无参构造函数带参构造函数私有/保护构造函数:不可用于对象创建构造函数与析构函数析构函数销毁对象无参数、无返回值、无修饰符由CLR自动调用publicclassBankCard{privatestringid;privatedecimalmoney;privatestaticintobjects=0;publicBankCard(decimalm){money=m;id=(++objects).ToString();}~BankCard(){objects--;}}构造函数与析构函数实例构造函数:对象初始化静态构造函数:类的初始化publicclassBankCard//续{privatestringid;privatedecimalmoney;privatestaticintobjects=0;privatestaticintclasses=0;staticBankCard(){classes++;}}构造函数与析构函数程序开发示例属性封装对对象单个“特性”的访问在本质上是方法属性封装对字段的访问get访问器:读取set访问器:设置publicclassBankCard{privatestringid;privatedecimalmoney;publicstringId{get{returnid;}}publicdecimalMoney{get{returnmoney;}set{money=value;}}}BankCardcard1=newBankCard();Console.WriteLine(card1.Id);card1.Money=600;所设置的值属性程序开发示例索引函数封装对对象一组“特性”的访问类似于数组的访问方式索引函数支持下标形式的访问get访问器:读取set访问器:设置publicclassPrim{int[]x={1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};publicintthis[intindex]{get{returnx[index];}set{x[index]=value;}}}Primp=newPrim();for(inti=0;i5;i++)Console.WriteLine(p[i]);索引值索引函数程序开发示例事件对象之间的通信一个对象调用另一个对象的服务——方法一个对象自动对其它对象的变化作出反应——事件25delegatevoidBookHandler(stringbook);publicclassBookStore{publiceventBookHandlerOnNewBook;publicvoidNewBook(stringbook){OnNewBook(book);}}事件成员定义事件引发方法事件事件发布与订阅发布者委托原型定义26publicclassCustomer{publicvoidRegister(BookStorestore){store.OnNewBook+=newBookHandler(store_OnNewBook);}voidstore_OnNewBook(stringbook){Console.WriteLine(“书店新到新书“+book);}}事件绑定事件处理方法事件事件发布与订阅发布者订阅者27publicclassCustomer{publicvoidRegister(BookStorestore){store.OnNewBook+=store_OnNewBook;}voidstore_OnNewBook(stringbook){Console.WriteLine(“书店新到新书“+book);}}事件绑定事件处理方法事件事件发布与订阅发布者订阅者发布者(BookStore)触发器(NewBook)事件(OnNewBook)订阅者(Customer)事件注册Store_OnNewBookdelegateBookHandler事件事件发布与订阅事件处理方法Store_OnNewBook29事件事件发布与订阅EventHandler:作为大部分事件的通用原型delegatevoidBookHandler(stringbook);publicclassBookStore{publiceventEventHandlerOnNewBook;publicvoidNewBook(stringbook){OnNewBook(book);}}30事件事件发布与订阅EventHandler:作为大部分事件的通用原型Windows控件事件protectedvirtualvoidOnClick(EventArgse){if(Click!=null)Click(this,e);}privatevoidbutton1_Click(objectsender,EventArgse){MessageBox.Show(您好);}Windows控件事件程序开发示例事件预定义操作符自定义操作符操作符重载publicclassComplex{publicdoublea;publicdoubleb;publicstaticComplexoperator+(Complexc1,Complexc2){returnnewComplex(){a=c1.a+c2.a,b=c1.b+c2.b};}}Complexc1=newComplex(){a=1.5,b=2.5};Complexc2=newComplex(){a=6,b=-3};Complexc3=c1+c2;预定义操作符自定义操作符publicstaticToperator++(Tt)publicstaticToperator+(Tt1,Tt2)publicstaticimplicitoperatorS(Tt1)操作符重载程序开发示例操作符重载this:当前对象引用区分内部字段和外部参数this关键字publicclassStudent{privatestringname;publicStudent(stringname){this.name=name;}}this:当前对象引用区分内部字段和外部参数传递当前对象this关键字publicclassStudent{privatestringname;publicStudentGetMe(){returnthis;}}Math:提供基本数学函数功能几个常用类Math静态字段PI:圆周率E:自然对数的底Math静态字段PI:圆周率E:自然对数的底静态方法整数运算:Abs,Ceiling,Floor,Round……初等函数:Exp,Pow,Log,Log10,Sqrt……三角函数:Sin,Cos,Tan,Asin,Acos,Sinh,Cosh……程序开发示例Math:提供基本数学函数功能几个常用类Math:提供基本数学函数功能StringBuilder:提供对字符串的高效操作几个常用类StringBuilder构造函数性能优化strings1=;for(inti=0;i100;i++)s1+=i.ToString()StringBuilders1=newStringBuilder();for(inti=0;i100;i++)s1.Append(i);低性能高性能字符串操作程序开发示例Math:提供基本数学函数功能StringBuilder:提供对字符串的高效操作DateTime:封装对日期/时间的操作几个常用类DateTime日期/时间你会如何设计这个类型?DateTime字段Year,Month,Day,Hour,Minute,Second,MillisecondDateTime字段Year,Month,Day,Hour,Minute,Second,Millisecond静态字段Now,TodayDateTime字段Year,Month,Day,Hour,Minute,Second,Millisecond静态字段Now,Today方法更新时间:AddYears,AddDays,AddHours,AddSeconds……字符串解析:Parse,TryParse字符串表示:ToString,ToLongDateString,ToShortTimeString……Math:提供基本数学函数功能StringBuilder:提供对字符串的高效操作DateTime:封装对日期/时间的操作集合类型:链表、队列、堆栈几个常用类集合类型ArrayList:提供维护动态集合的链表结构你会如何设计这个类型?集合类型ArrayList:链表Add:表尾加入成员ArrayListlist1=newArrayList();list1.Add(赵丽);list1.Add(王强);赵丽Head王强集合类型ArrayList:链表Add:表尾加入成员Insert:插入成员ArrayListlist1=newArrayList();list1.Add(赵丽);list1.Add(王强);list1.Insert(1,Tom);赵丽Head王强Tom集合类型ArrayList:链表Add:表尾加入成员Insert:插入成员ArrayListlist1=newArrayList();list1.Add(赵丽);list1.Add(王强);list1.Insert(1,Tom);赵丽Head王强Tom集合类型ArrayList:链表Add:表尾加入成员Insert:插入成员Remove:删除指定成员ArrayListlist1=newArrayList();list1.Add(赵丽);list1.Add(王强)

1 / 112
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功