欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    主流软件开发方法-面向对象入门.ppt

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

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

    主流软件开发方法-面向对象入门.ppt

    第4章主流软件开发方法面向对象入门 类的定义和类的成员 对象的创建和使用 分部类 结构和类 命名空间4.1 C#中的类o面向对象程序设计是目前主流的编程方法,C#是一门纯粹的面向对象的语言,面向对象编程的基础是类和对象,类是面向对象程序设计思想的灵魂,下面我们学习类的概念。4.1.1 类的概念o日常生活中,类是对具有相同特征的一类事物的抽象描述,比如水果就是一个类,它是对苹果、梨等所有具体水果的抽象描述,而这个类中所包含的具体的苹果、梨等个体就是对象。不同的类具有不同的特征,比如人类、水果类和电脑类分别是不同的类等。4.1.2 类的定义o类的定义使用class关键字,其语法如下:访问修饰符 class 类名/类的主体访问修饰符o在C#中访问修饰符有4种,它们是:public:对类的访问不受限制,就像公共图书馆一样,谁都可以进去看书;protectecd:对类的访问仅限于包含类或从包含类派生的类型,就像单位的图书馆,只有该单位或其子公司的人才能进去;private:访问仅限于包含类型,如私人图书馆一样不对外开放;类名采用帕斯卡命名法,即首字母大写,通常命名类采用完整的英文单词,如Person类,Student类。提示 internal:访问仅限于当前项目,如单位的图书馆除本单位的人能访问外,外单位排到本单位协助工作的人也能访问。【范例4-1】定义一个电话类。class Phone public string brand;/定义公有的成员表示电话的品牌 public string phoneNumber;/定义公有的成员表示电话的电话号码 4.1.3 类的成员o定义在类名后大括号中的元素都是类的成员。类的主要成员包括描述状态的数据成员和描述操作的函数成员。比如在小节的Phone类中,电话有机主、电话号码等属性,这些属性就是Phone类的数据成员,而电话还有接电话和拨电话等功能,这些功能则属于函数成员。1.数据成员 o常量成员名称的第一个字母一般大写,也经常使用全部大写、多个字之间用下划线连接的常量名。提示 类的数据成员包括:字段(或者称域)和常量。字段就是在类内定义的变量,用来存储描述类的特征的值,如电话的颜色、所属的主人,电话号码等。常量是类的常量成员。声明字段成员变量的语法如下:访问修饰符 数据类型 成员变量名2.属性成员o类的函数成员包括:属性、方法、索引器、事件、运算符、构造函数和析构函数。下面我们来介绍一下属性成员。从前面学习可知,其他类可以访问某个类中具有public权限的成员变量,将变量声明为public类型,不利于数据的安全,破坏了类的封装特性。通过属性成员可以对类中私有成员变量进行读取和赋值操作。属性成员中用get访问器和set访问器来对类中私有成员变量进行读写操作的。定义属性方法格式如下:访问修饰符 数据类型 属性名 get /get访问器 set /set访问器 3.方法o方法用来描述对象的行为,对类的数据成员的操作都封装在类的方法中。方法的主要功能便是数据操作,没有方法的程序是没有意义的,就像电话如果不具有接打电话等功能,是没有什么作用的。方法的声明格式如下:访问修饰符 返回值数据类型 方法名(参数列表)/方法体4.静态成员o类的成员要么是静态的,要么是非静态的。前面介绍的类的成员都是非静态的,使用的必须实例化。如果将类中的某个成员声明为static,则该成员是静态成员,非静态成员也叫实例成员。类的静态成员可以直接使用,不必产生类的实例。无论这个类创建了多少个实例,静态成员为类的所有实例所共享。如任何电话都可以拨打急救电话,拨打急救电话功能可以定义为静态的.【范例4-2】定义一个有多种成员类型的类1 private string _owner;/定义一个私有字段表示电话机主2 public string address;/定义一个公有字段表示电话地址3 private static string _phoneNumber;/定义一个静态字段成员用于表示电话号码 4 /属性成员5 public string Owner /定义一个属性成员,用于设置和获取私有字段_owner的值6 7 get return _owner;/获取私有字段_owner的值8 set _owner=value;/设置和私有字段_owner的值value是关键字9 10 /无参数方法成员,表示电话具有拨打电话功能11 public void Dial()12 13 Console.WriteLine(“您正在拨打电话!”);14 15 /有参数方法成员,表示电话这种拨打一个具体的电话号码16 public void Dial(string number)17 18 Console.WriteLine(“您正在拨打:”+number);19 20 /静态属性成员,用于设置和获取静态字段成员_phoneNumber的值21 public static string PhoneNumber22 23 get return _phoneNumber;24 set _phoneNumber=value;25 26 /添加静态方法EmergencyCall;27 public static void EmergencyCall()28 29 Console.WriteLine(“您正在拨打急救电话119!”);30 在Program.cs的Main方法中输入以下代码以测试类的成员。oPhone.EmergencyCall();/静态方法可直接使用 o Console.WriteLine(Phone.emergency_Call);o Phone objPhone=new Phone();/创建对象o objPhone.PhoneNumber通过set访问器私有字段phoneNumber赋值o Console.WriteLine(电话号码是:+objPhone.PhoneNumber);/通过get访问器得到私有字段phoneNumber的值o o objPhone.Dial();o使用非静态成员o Console.Read();第4章主流软件开发方法面向对象入门 类的定义和类的成员 对象的创建和使用 构造函数和析构函数 分部类 结构和类 命名空间4.2 C#中的对象o类和对象是密不可分的,有类就有对象,有对象就有类。客观世界是由多种对象组成的,用面向对象的思想来编写程序,就要把一切都看为对象。4.2.1 对象的概念o类是相同特征的一类事物的抽象,而对象是类的实例。类和对象有着本质的区别:类是从对象中抽取出来的一类对象的描述,对象是真实的个体,是一个具体的事物,从抽象到具体即是将类的属性和行为实例化的过程。类与对象的关系可以比喻为车型设计和具体的车:类就像车型设计一样说明了车所应该具备的所有属性和功能,但是车型设计并不是车,你不能发动和驾驶车型;对象就像根据车型设计制造出的车,它们都具备车型设计所描述的属性和功能,车是能发动和驾驶的。4.2.2 对象的创建和使用o类是抽象的,要使用类中非静态的成员,就必须实例化类,即创建类的对象。如何创建对象并使用它呢?使用new运算符来创建类的对象!对象的创建必须以类为基础,声明一个对象就是类的实例化的过程,C#使用new运算符来创建对象,格式如下:类名 对象名=new 类名(参数列表);oPhone objPhone=new Phone();对象的使用是通过对对象中的成员的访问来实现的,访问对象中的成员的语法如下:对象名.成员名如:objPhone.address=“办公楼4.2.3 匿名类型和对象初始化器o匿名类型和对象初始化器是C#3.0新增加的功能,用来简化对象的初始值设置的。使用对象初始化,创建Phone并对其属性成员Owner赋值可以这样写:Phone objPhone=new Phone()Owner=“办公楼3204”;例如:定义类Point,有两个自动属性X,Y表示点的坐标。o1 public class Point2 3 public int X get;set;4 public int Y get;set;5 使用对象初始化,可这样创建对象并对属性赋值:Point p=new Point()X=0,Y=0;o使用匿名类型可以定义内嵌的类型,不需要显式地定义一个类型。假设没有定义Phone类,却要使用一个Phone对象(即类型是匿名的),可以使用对象初始化语法,但不用指定类型名:var p=new X=0,Y=2;在VS2008中,仍然可以使用智能感应功能得到这个匿名类型的属性列表。4.2.4 构造函数和析构函数o对象和客观世界中的事物一样,从创建到消亡都有一个生命周期,对象的创建和销毁是通过类的构造函数和析构函数来完成的。1.构造函数oC#通过new创建对象的过程实际就是调用类的构造函数的过程,创建对象时,必须调用构造函数,构造函数是用于执行类的实例的初始化。每个类都有构造函数,如果没有定义,系统会提供一个默认的构造函数,默认的构造函数一般不执行什么操作。在访问一个类的时候,系统将最先执行构造函数中的语句。构造函数是类的特殊方法成员,名称和类名相同,主要用来完成初始化的。2.析构函数o析构函数用于在对象销毁前释放被占用的系统资源。析构函数的名字与类名相同,只是在前面加了一个符号“”,析构函数不接受任何参数,也不返回任何值,例如:1 public class MyClass2 3 MyClass()4 /析构函数 一个类只能有一个析构函数,析构函数不能手动调用,是系统自动调用的。提示5 【范例4-3】定义一个有多种成员类型的类1 class Program2 3 static void Main(string args)4 5 6 /类program结束7 8 class Score9 10 public int x;/定义字段成员x11 public int y;/定义字段成员y12 13 public Score()/无参数构造函数用于对字段成员初始化14 15 x=0;y=2;/用于对字段成员初始化16 17 public Score(int val_x,int val_y)/有参数构造函数18 19 x=val_x;y=val_y;/用于对字段成员初始化20 21 22 Score()/析构函数23 24 Console.WriteLine(“析构函数主要用于清理资源!”);25 Console.ReadKey();/为了看见析构函数的运行,可以添加此行代码;26 析构函数不能有任何访问修饰符,也不能有返回值,否则会出错。27 在Program.cs的Main方法中输入以下代码以测试类的成员。1 Score objScore1=new Score();/用无参构造函数创建对象objScore12 Console.WriteLine(“无参数构造函数演示”);3 Console.WriteLine(“x=”+objScore1.x );4 Console.WriteLine(“y=”+objScore1.y);5 Score objScore2=new Score(80,90);/用有参构造函数创建对象objScore26 Console.WriteLine(“有参数构造函数演示”);7 Console.WriteLine(“x=”+objScore2.x);8 Console.WriteLine(“y=”+objScore2.y);9 Console.ReadKey();4.2.5 参数传递oC#传递参数有两种类型:值传递和引用传递,前面的例子没有具体说明参数传递的类型,是按照值传递来进行的,值传递是C#默认传递方式。使用值传递方式向方法传递参数,向方法传递的是参数的副本,方法内发生的对参数的更改对该参数本身无任何影响,就像文件的复印件一样,无论如何修改复印件,原件不会有任何改变。如果希望所调用的方法更改参数的值,必须使用 ref 或 out 关键字声明通过引用方式传递参数,out传递与ref类似,二者区别是ref要求参数变量在传递之前必须初始化,out则不要求。第4章主流软件开发方法面向对象入门 类的定义和类的成员 对象的创建和使用 构造函数和析构函数 分部类 结构和类 命名空间4.3 分部类 oPartial类,有人翻译为“部分类”,在 MSDN 上译为“分部(类型)”,所以我们使用“分部类”这一官方说法。提示一般来说,一个类、结构或接口位于一个源文件中,但某些情况,比如大型项目、特殊部署时,可能需要把一个类、结构或接口放在几个文件中来处理。等到编译时,自动把它们组合起来成为一个完整的类,这就得应用 C#分部类了。o分部类适用于以下情况:(1)类型特别大,不宜放在一个文件中实现;(2)一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起;(3)需要多人合作编写一个类。分部类是一个纯语言层的编译处理,不影响任何执行机制,事实上C#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类。C#分部类的关键字修饰符是 partial。例如在一个文件中声明分部类Person的代码如下。01 public partial class Person/定义分部类Person的部分代码02 03 public void DoWork()/定义方法DoWork04 05 /定义方法,表示Person类有工作的功能;06 07 在另一个文件中声明分部类Person01 public partial class Person/定义分部类Person的部分代码02 03 public void GoToLunch()/定义方法GoToLunch04 05 /定义方法,表示Person类有去吃午饭的功能06 07 第4章主流软件开发方法面向对象入门 类的定义和类的成员 对象的创建和使用 分部类 结构和类 命名空间4.4 结构与类o4.4.1 结构的定义和使用结构类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或商品的特征。结构和类相似,但结构缺乏某些功能,例如继承。由于结构是值类型,通常创建结构要比创建类的速度快。如果需要一些紧凑循环,需要在其中创建大量新数据结构,则应考虑使用结构而不是类。o在C#中,结构可以看成轻量级的类,定义和类的定义相似,采用struct进行定义,每个struct类型数据可以常量、变量、构造函数、方法和属性等成员。定义结构的语法如下:struct 结构名/结构体定义使用结构通过声明结构体变量或使用new来实例化结构对象,然后通过结构体变量.结构成员名,或结构对象.结构成员的方式来使用结构。【范例4-5】定义表示学生信息的结构Student并使用。1.01 struct Student/定义结构Student2.02 /结构的成员变量3.03 public String stuNum;/定义结构成员表示学生学号4.04 public String stuName;/定义结构成员表示学生姓名5.05 public int stuAge;/定义结构成员表示学生年龄6.06 public int stuClass;/定义结构成员表示学生班级7.07 public int stuGrade;/定义结构成员表示学生年级 8.08 public Student(string stuNum,string stuName,int stuAge,int stuClass,int stuGrade)9.09 /结构的构造函数,用参数给结构中的成员赋值10.10 this.stuNum=stuNum;/将参数stuNum赋给this.stuNum11.11 this.stuName=stuName;/将参数stuName赋给this.stuName 12.12 this.stuAge=stuAge;/将参数stuAge赋给this.stuAge 13.13 this.stuClass=stuClass;/将参数stuClass赋给this.stuClass 14.14 this.stuGrade=stuGrade;/将参数stuGrade赋给this.stuGrade 15.15 16.16 public void DoHomework()/结构中的方法17.17 18.18 /结构中的方法19.19 20.20 4.4.2 类和结构的关系o类和结构实际上都是创建对象的模板,都可以包含构造函数,常数,字段,方法,属性,索引器和运算符等成员。二者的主要区别如下。结构是值类型,类是引用类型,在内存中结构是存储在堆栈上的值类型,类是存储在堆(heap)上的引用类型。结构的构造函数和类的构造函数不同:.结构不能包含显式的无参数构造函数,结构成员会自动初始化为它们的默认值,.结构不能包含以下形式的初始值设定类:base(参数列表)。对于结构中的实例字段成员,不能在声明时赋值初始化。声明了结构类型后,可以使用new运算符创建构造对象,也可以不使用new关键字。如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。结构不支持继承,即一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。第4章主流软件开发方法面向对象入门 类的定义和类的成员 对象的创建和使用 分部类 结构和类 命名空间4.5 命名空间oC#程序是利用命名空间组织起来的。命名空间既用作程序的“内部”组织系统,又用作“外部”组织系统(一种将已向其他程序公开的程序元素进行展示的方式)。就像一个城市为了便于管理,分成多个区一样,每个区就类似于一个命名空间。4.5.1 声明命名空间o命名空间是.NET避免类名冲突的一种方式。例如,定义类Customer来表示一个顾客,同时其他人也可以定义一个Customer类,只要二者不在同一个命名空间中就不会引起名称冲突。一个命名空间中,可以有多个类,结构,接口等,在同一命名空间中,类名不能有相同的。C#中,使用namespace来定义命名空间,格式如下。Namespace 定义的命名空间名称/命名空间体例如定义命名空间o1 namespace Example4_6/定义命名空间,该命名空间中有一个Program类和Student结构2 3 class Program /命名空间中的类4 5 static void Main(string args)6 7 /Console.ReadKey();8 9 10 struct Student命名空间中的结构11 12 /结构的成员变量 13 14 4.5.2 using关键字o把一个类型放在命名空间中,可以有效地给这个类型指定一个较长的名称,该名称包括类型的命名空间,后面是句点“.”和类的名称,如可以这样使用MessageBox消息框的Show方法,(“Hello,C#!”)就像这样称呼一个人“中国.北京.西城区.张三”一样,使用起来很不方便,可用using关键字引入其命名空间,使用时就不需要带很长的一串名称了,导入命名空间的语法是:using 命名空间名称;引入命名空间后,就可以在代码中直接使用被引入命名空间中类型的名字了。ousing ;MessageBox.Show(“Hello,C#!”);否则则要这样写:(“Hello,C#!”);oByeBye跟我上机在C#中编写一个控制台应用程序,实现以下功能:设计一个Rectangle 类,提供通过length 和 width 字段计算面积和周长的2 个方法。并用main 方法来测试程序。

    注意事项

    本文(主流软件开发方法-面向对象入门.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开