《程序设计与实例分析》课件-第二讲_第1页
《程序设计与实例分析》课件-第二讲_第2页
《程序设计与实例分析》课件-第二讲_第3页
《程序设计与实例分析》课件-第二讲_第4页
《程序设计与实例分析》课件-第二讲_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

思考什么是托管代码?什么是非托管代码?请举例说明。编程求1+2+3+……+100的结果?While和do…while的区别?Continue和break的区别?C#中的结构化异常处理是通过什么语句实现的?教材23页富翁与陌生人的问题答案?目录CONTENTS面向对象程序设计的基本概念类和对象属性和方法构造函数和析构函数1234目录CONTENTS面向对象程序设计的基本概念类和对象属性和方法构造函数和析构函数12342.1面向对象程序设计的基本概念2.1.1活字印刷技术2.1.2面向过程的方法和面向对象的方法2.1.3案例分析:日期计算程序2.1.4面向对象程序的基本特性2.1.1从活字印刷看面向对象思想常规的印刷术:不容易维护,灵活性差,不容易扩展,不可复用活字印刷术:可维护、可复用、可扩展、灵活性好在面向对象的编程思想中,需要考虑如何通过封装、继承、多态,把程序的耦合度降低,需要利用恰当的设计模式使得程序更加的灵活,容易修改,并且易于复用活字印刷,是思想的成功,是面向对象的胜利2.1.2面向过程的方法和面向对象的方法“面向过程”(ProcedureOriented)是一种以过程为中心的编程思想。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步的实现,使用的时候一个一个依次调用。五子棋游戏的面向过程设计思路面向对象程序设计,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。面向对象就是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。五子棋游戏的面向对象程序设计思路:黑白双方棋盘系统游戏规则要加入悔棋的功能怎么办?将五子棋游戏修改为围棋游戏,怎么办?2.1.3案例分析:日期统计程序问题:请问从2008年7月8日到2015年4月6日之间一共有多少天?思路:问题抽象算法分析计算从2008年到2015年之间整年包含的天数计算从2008年7月8日到当年年底(2008年12月31日)之间的天数计算从2015年元旦到2015年4月6日之间的天数面向对象的方法:创建一个CalculateDates类,将上述五个函数集成到该类当中利用.NET框架来实现:DateTimedd1,dd2;dd1=newDateTime(2015,4,6);dd2=newDateTime(2008,7,8);//两个日期对象相减,得到一个TimeSpan对象,Days是这一TimeSpan对象的属性intddays=(dd1-dd2).Days;Console.WriteLine(ddays);//结果2.1.4面向对象程序(OOP)的基本特性面向对象程序设计方法采用数据抽象与隐藏、层次结构体系、动态绑定等机制,提供一种模拟人类认知方式的软件建模方法,带来了系统的安全性、可扩充性、代码重用、易维护等人们期待的特性。面向对象程序包括四个基本特征:抽象、封装、继承与派生、多态性。抽象为了能够处理客观事物,必须对对象进行抽象。抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,忽略暂时不用部分细节。在OOP中,抽象就是找出对象的本质,抽出这一类对象的共有性质(数据和方法)并加以描述的过程。封装封装就是把对象的数据和方法结合成一个独立的单位,并尽可能隐蔽对象的内部细节。

把对象的全部数据和方法结合在一起,形成一个不可分割的独立单位(即对象)。信息隐蔽,尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。继承与派生一个新类从已存在的类那里获得该类已有的特性叫作类的继承,已存在的类叫作父类,也叫作基类,产生的新类叫作子类或派生类。从一个已有的类那里产生一个新类的过程叫类的派生。已存在的类叫作父类,也叫作基类,产生的新类叫作派生类或子类。多态性多态性是指允许不同类的对象对同一消息作出不同的响应。多态是具有表现多种形态的能力的特征。在编程中使用多态的方法,可以在代码中本应使用某一具体子类的地方使用较为抽象的基类对象,这种方法所带来的好处是多态的代码具有“变色龙”的特性,即在不同的条件下,同样代码可以完成不同的功能。适当地在开发中应用多态特性,可以开发出可扩充性很强的系统。目录CONTENTS面向对象程序设计的基本概念类和对象属性和方法构造函数和析构函数12342.2类和对象2.2.1类和对象概述2.2.2类的定义2.2.3对象的创建和使用2.2.1类和对象概述什么是类?什么是对象?2.2.2类的定义2.2.3对象的创建和使用声明对象就是用类来定义对象变量。声明对象的格式为:类名对象名;为了使对象在内存中分配到保存数据的空间,在声明对象之后,常常需要使用关键字new对对象进行实例化,其方法为:对象名=new类名();对象的声明和实例化可以连起来完成,方法为:类名对象名=new类名();创建对象之后,它的成员可以通过运算符“.”来访问。myRectangle1.longside=0.0;RectanglemyRectangle1;myRectangle1=newRectangle();RectanglemyRectangle2=newRectangle();目录CONTENTS面向对象程序设计的基本概念类和对象属性和方法构造函数和析构函数12342.3属性和方法2.3.1方法的定义与调用2.3.2方法的参数类型2.3.3方法的重载2.3.4属性2.3.1方法的定义与调用放在一个类中的函数(通常附加一个存取权限修饰符如public和private)称为“方法(method)”。访问一个方法的最基本方式是通过类创建的对象。定义方法的一般形式为:其中访问修饰符包括存取修饰符,如private、protected和public,其他修饰符还包括new、static、virtual、sealed、overide、abstract等,除了static修饰符用于表示静态方法以外,其他修饰符都和继承机制有关。定义方法之后,则可以通过使用new关键字创建类的对象来访问此方法。2.3.2方法的参数类型C#方法的参数有五种类型:值参数、引用参数、对象类型参数、输出参数和参数数组。值参数:没有使用任何修饰符声明的值类型的参数。值参数在调用该参数所属的方法时创建,并用调用中给定的实参值初始化。当从该方法返回时值参数被销毁。对值参数的修改不会影响到原自变量。值参数通过复制原自变量的值来初始化。2.3.2方法的参数类型引用参数用ref修饰符声明的参数是调用者提供的自变量的别名,并不定义变量,而是直接引用原自变量对引用参数的修改就将直接影响相应自变量的值在方法调用中,引用参数必须被赋初值对象类型参数对象类型的参数传递的是地址,因此对参数的成员的修改将直接影响相应实参。在方法调用时,对象参数必须被赋初值2.3.2方法的参数类型输出参数用out修饰符定义的参数如果希望函数返回多个值,可使用输出参数。输出参数与引用参数类似,它并不定义自己的变量,而是直接引用原变量,这样当在函数内为输出参数赋值时,就相当于给原自变量赋值。与引用参数的差别在于:输出参数在调用方法前无需对变量进行初始化2.3.2方法的参数类型参数数组用params修饰符声明的变量称为参数数组允许向函数传递个数变化的参数在方法的参数类表中只允许出现一个参数数组,而且在方法同时具有固定参数和参数数组的情况下,参数数组必须放在整个参数列表的最后,同时参数数组只允许是一维数组。不能将params修饰符与ref和out修饰符组合起来使用。2.3.2方法的参数类型验证2.3.3方法的重载方法重载(overload)是指一个类有多个方法,名字相同,但方法的参数列表不一样,这里的不一样可能是个数或者类型不一样。重载和方法的返回值无关,返回值可以相同,也可以不同。重载的好处:对方法调用的程序员来说,它是友好的(程序员只关心自己调用的方法签名即可,不用管参数为NULL怎么办这些逻辑)。对于代码维护量来说,它是容易的(核心代码只放在参数签名最多的方法中)。对于代码扩展来说,它是直接的(只要修改核心方法代码即可,而不用一个方法一个方法的去COPY)。2.3.4属性属性是一种间接访问数据成员的机制,它不允许直接操作数据内容,而是通过访问器(也称为属性方法)访问数据成员。给属性赋值的时候使用set访问器,set访问器始终使用value设置属性值;获取属性值时使用get访问器,get访问器通过return返回属性值。属性的定义方式:只读属性、只写属性和读写属性属性和方法的区别和联系目录CONTENTS面向对象程序设计的基本概念类和对象属性和方法构造函数和析构函数12342.4构造函数和析构函数2.4.1构造函数2.4.2析构函数2.4.1构造函数有时候我们希望在创建对象的时候就直接给对象的数据赋初始值,利用类的构造函数就能完成这个任务。构造函数是一个与类名相同的函数,它的声明和普通方法类似,不同的是它没有返回值。构造函数也是可以重载的。构造函数是在对象创建的时候自动调用的。在创建对象的时候,根据参数的不同将调用不同的构造函数。构造函数主要用来为对象分配存储空间,完成初始化操作(如给类的成员赋值等)。2.4.1构造函数构造函数实例:1、定义2、调用:employeep=newemployee(100);System.Console.WriteLine("根据日薪的算法,员工的薪水等于:{0}",p.salary);employeef=newemployee(500,52);System.Console.WriteLine("根据员工周薪的算法,员工的薪水等与:{0}",f.salary);2.4.2析构函数析构函数(destructor)与构造函数相反,当对象脱离其作用域时,系统自动执行析构函数。析构函数往往用来做“清理善后”的工作。析构函数名也与类名相同,只是在函数名前面加一个波浪符~,例如~stud()。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操

温馨提示

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

评论

0/150

提交评论