第八章_面向对象编程简介_(2)函数的更多内容.ppt

上传人:asd****56 文档编号:87338527 上传时间:2023-04-16 格式:PPT 页数:26 大小:97KB
返回 下载 相关 举报
第八章_面向对象编程简介_(2)函数的更多内容.ppt_第1页
第1页 / 共26页
第八章_面向对象编程简介_(2)函数的更多内容.ppt_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《第八章_面向对象编程简介_(2)函数的更多内容.ppt》由会员分享,可在线阅读,更多相关《第八章_面向对象编程简介_(2)函数的更多内容.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、类的方法(函数)类的方法(函数)函数的更多内容(2)结构函数结构函数回忆一下第五章的结构类型,我们可以使用它在一个变量中存储多个不同的数据域,并通过.的形式加以访问,如:Date today;today.Year=2006;today.Month=Months.Sep;today.Day=25;today.Week=Days.Mon;结构函数结构函数当我们需要按格式输出today变量中的内容时,我们可以在Main函数中写这样一段代码:static void Main(string args)Date today;today.Year=2006;today.Month=Months.Sep;to

2、day.Day=25;today.Week=Days.Mon;Console.WriteLine(“0 1,2”,today.Month,today.Day,today.Year);Sep 25,2006结构函数结构函数但当我们需要输出两个Date型变量中的内容时,我们需要写两遍输出格式化输出代码:static void Main(string args)Date today,tomorrow;today.Year=2006;today.Month=Months.Sep;today.Day=25;today.Week=Days.Mon;tomorrow=today;tomorrow.Day+;

3、tomorrow.Week+;Console.WriteLine(“0 1,2”,today.Month,today.Day,today.Year);Console.WriteLine(“0 1,2”,tomorrow.Month,tomorrow.Day,tomorrow.Year);结构函数结构函数在这里,我们可以把格式化日期数据的代码放在一个单独的函数中进行处理,如:static string ToFormatDate(Date theDate)return theDate.Month+“+theDate.Day+“,“+theDate.Year;static void Main(str

4、ing args)Date today,tomorrow;/Initialsize today and tomorrow variable.Console.WriteLine(ToFormatDate(today);Console.WriteLine(ToFormatDate(tomorrow);结构函数结构函数或者还有一种更为优雅的方法使用结构函数结构体中除可以存放数据外,还可以把函数写在结构体中,称其为结构函数或成员函数。通过把函数放入结构体中,可以方便的处理结构体中的数据,使函数的语意更为清晰、明了。结构函数的定义与使用与普通函数类似,没有什么特别之处,唯一不同的是结构函数能够自由读写结

5、构类型中的数据成员。结构函数结构函数结构函数的定义方法:struct public ;public ;/.public ()/在这里可以直接访问结构成员变量;public ()/在这里可以直接访问结构成员变量;结构函数结构函数使用结构函数实现日期数据的格式化功能:struct Date public ushort Year;public Months Month;public byte Day;public string ToFormatDate()return Month+“+Day+“,“+Year;static void Main(string args)Date today;today

6、.Year=2006;today.Month=Months.Sep;today.Day=25;Console.WriteLine(today.ToFormatDate();结构函数结构函数增加函数:struct Date public int Year,Month,Day;public Date AddDay()Date tomorrow;tomorrow.Year=Year;tomorrow.Month=Month;tomorrow.Day=Day+1;return tomorrow;static void Main(string args)Date today,tomorrow;today

7、.Year=2006;today.Month=9;today.Day=25;tomorrow=today.AddDay();Console.WriteLine(“Tomorrow is:0”,today.ToFormatDate();类中的方法(函数)类中的方法(函数)换成类中的方法(函数):class Date public int Year,Month,Day;public Date AddDay()Date tomorrow=new Date();tomorrow.Year=Year;tomorrow.Month=Month;tomorrow.Day=Day+1;return tomor

8、row;static void Main(string args)Date today=new Date();today.Year=2006;today.Month=9;today.Day=25;Date tomorrow=today.AddDay();Console.WriteLine(today.ToFormatDate();Console.WriteLine(tomorrow.ToFormatDate();结构函数结构函数在上述结构的基础上完成如下作业:实现Date结构体,其中包含年、月、日三个数据。实现增加一天、增加一月、增加一年的功能。实现减少一天、减少一月、减少一年的功能。处理日期

9、溢出问题,如天数大于31,月数大于12,或天数小于1,月数小于1等问题。实现两日期相加功能。实现日期格式化功能。结构函数结构函数使用示例:static void Main(string args)Date today,tomorrow,yesterday;today.Year=2006;today.Month=Months.Sep;today.Day=25;tomorrow=today;tomorrow.AddDay();yesterday=today;yesterday.SubtractDay();Console.WriteLine(“Yesterday is:0”,yesterday.To

10、FormatDate();Console.WriteLine(“Today is:0”,today.ToFormatDate();Console.WriteLine(“Tomorrow is:0”,tomorrow.ToFormatDate();函数的重载函数的重载求和函数的实现:static int Sum(int numbers)int sum;foreach(int element in numbers)sum+=element;return sum;static void Main(string args)int numbers=1,2,3,4,5,6,7,8,9;Console.Wr

11、iteLine(Sum(numbers);函数的重载函数的重载该函数存在着缺陷,只能使用它对整数进行求和,如要进行浮点数求和,就需实现求和函数的浮点版版:static double DoubleArraySum(double numbers)double sum;foreach(double element in numbers)sum+=element;return sum;函数的重载函数的重载这样,在使用求和函数进行求和时,就需要记住求和函数的不同版本:static void Main(string args)int intNumbers=1,3,5,7,9;double doubleNu

12、mbers=3.14159;1.414,2.71828;Console.WriteLine(IntArraySum(intNumbers);Console.WriteLine(DoubleArraySum(doubleNumbers);整数数组的求和浮点数数组的求和函数的重载函数的重载观察控制台输出函数,我们可以使用它输出多种类型的数据:static void Main(string args)Console.Write(1);Console.Write(true);Console.Write(3.14159);Console.Write(“Hello world!”);Console.Wri

13、te(“Hello,0”,“somebody”);整数逻辑值浮点数字符串不确定数目参数函数的重载函数的重载通过对以上示例的观察,我们发现,可以使用不同类型、不同数量的参数来调用Write函数。这样,我们只需使用Write函数就能输出输出多种类型的数据,而不需要记住不同类型的输出函数的名字。以上这些特性是通过函数的重载来实现的,这样可以大大的方便我对函数的使用,不再需要记忆大量不同的函数名字了。函数的重载函数的重载什么是函数的重载函数的重载是指多个函数使用同一个名字对函数进行命名。重载的函数是通过参数的类型和数量来加以区分的。转而去调用特定的函数。重载函数的参数类型、参数数量、返回值类型都可以不

14、相同。为了对重载函数进行区分,重载的函数必需在参数类型或参数数量上有所不同,而单单只是返回类型不同是无法对重载函数进行区分的。函数的重载函数的重载函数重载示例static int Sum(int numbers)int sum;foreach(int element in numbers)sum+=element;return sum;static double Sum(double numbers)double sum;foreach(double element in numbers)sum+=element;return sum;参数和返回参数和返回 值的类型不同值的类型不同 处理整数累

15、加处理浮点数累加函数的重载函数的重载函数重载示例在这里分别使用Sum函数的int和double版进行求和,但可使用相同的名字进行调用。static void Main(string args)int intNumbers=1,3,5,7,9;double doubleNumbers=3.14159,1.414,2.71828;int intNumbersSum=Sum(intNumbers);double doubleNumbersSum=Sum(doubleNumbers);Console.WriteLine(“Int numbers sum:0”,intNumbersSum);Consol

16、e.WriteLine(“Double numbers sum:1”,doubleNumbersSum);函数的重载函数的重载函数重载示例static void WriteLine(int intVal)/Code in here.static void WriteLine(bool boolVal)/Code in here.static void WriteLine(double doubleVal)/Code in here.static void WriteLine(string formatString,)/Code in here.static void WriteLine(str

17、ing formatString,params string outArgs)/Code in here.构造函数的重载构造函数重载示例 public class Animal private string name;public Animal()name=动物;public Animal(string name)this.name=name;委委 托托什么是委托委托与 C 语言中的函数指针非常类似,可以使用委托去调用函数,并可方便的修改委托所引用的函数。可以把委托理解成函数的别名,也就是说使用另一个名字来调用同一个函数,就像是调用该函数本身一样,本质上没什么区别,只是使用不同的名字而已。定义

18、委托时,要声明委托所能引用的函数的类型,即委托所能引用的函数的参数类型和返回类型等。委委 托托委托的定义方法委托定义示例委托使用示例委托也是一种类型,因此,委托应定义在命名空间中,与 class 平级。delegate ();delegate void ProcessDelegate(double var1,double val2);ProcessDelegate d=new ProcessDelegate(someMethod);委委 托托委托使用示例:delegate void OutputDelegate(string theString);class Program static vo

19、id Output(string theString)Console.Write(theString);static void Main(string args)OutputDelegate putter=new OutputDelegate(Output);putter(“Hello world!”);委委 托托委托使用示例:delegate bool CompareDelegate(int number1,int number2);class Program static void Sort(int array,CompareDelegate compare)for(int i=0;iar

20、ray.Length;i+)for(int j=0;ji;j+)if(compare(arrayi,arrayj)/swap arrayi and arrayj.static bool IsLessThan(int number1,int number2)returnnumber1 number2;static void Main(string args)int intArray=10,5,8,1,6,9,2,3,7,0;Sort(intArray,new CompareDelegate(IsLessThan);Sort(intArray,new CompareDelegate(IsBiggerThan);

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

当前位置:首页 > 技术资料 > 其他杂项

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

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