主流软件开发方法面向对象入门C#从入门到精通ppt课件

上传人:钟*** 文档编号:5842979 上传时间:2020-02-09 格式:PPT 页数:47 大小:772.50KB
返回 下载 相关 举报
主流软件开发方法面向对象入门C#从入门到精通ppt课件_第1页
第1页 / 共47页
主流软件开发方法面向对象入门C#从入门到精通ppt课件_第2页
第2页 / 共47页
主流软件开发方法面向对象入门C#从入门到精通ppt课件_第3页
第3页 / 共47页
点击查看更多>>
资源描述
第4章主流软件开发方法 面向对象入门 类的定义和类的成员 对象的创建和使用 分部类 结构和类 命名空间 1 4 1C 中的类 面向对象程序设计是目前主流的编程方法 C 是一门纯粹的面向对象的语言 面向对象编程的基础是类和对象 类是面向对象程序设计思想的灵魂 下面我们学习类的概念 2 4 1 1类的概念 日常生活中 类是对具有相同特征的一类事物的抽象描述 比如水果就是一个类 它是对苹果 梨等所有具体水果的抽象描述 而这个类中所包含的具体的苹果 梨等个体就是对象 不同的类具有不同的特征 比如人类 水果类和电脑类分别是不同的类等 3 4 1 2类的定义 类的定义使用class关键字 其语法如下 访问修饰符 class类名 类的主体 4 访问修饰符 在C 中访问修饰符有4种 它们是 public 对类的访问不受限制 就像公共图书馆一样 谁都可以进去看书 protectecd 对类的访问仅限于包含类或从包含类派生的类型 就像单位的图书馆 只有该单位或其子公司的人才能进去 private 访问仅限于包含类型 如私人图书馆一样不对外开放 类名采用帕斯卡命名法 即首字母大写 通常命名类采用完整的英文单词 如Person类 Student类 提示 internal 访问仅限于当前项目 如单位的图书馆除本单位的人能访问外 外单位排到本单位协助工作的人也能访问 5 范例4 1 定义一个电话类 classPhone publicstringbrand 定义公有的成员表示电话的品牌publicstringphoneNumber 定义公有的成员表示电话的电话号码 6 4 1 3类的成员 定义在类名后大括号中的元素都是类的成员 类的主要成员包括描述状态的数据成员和描述操作的函数成员 比如在4 1 1小节的Phone类中 电话有机主 电话号码等属性 这些属性就是Phone类的数据成员 而电话还有接电话和拨电话等功能 这些功能则属于函数成员 7 1 数据成员 常量成员名称的第一个字母一般大写 也经常使用全部大写 多个字之间用下划线连接的常量名 提示类的数据成员包括 字段 或者称域 和常量 字段就是在类内定义的变量 用来存储描述类的特征的值 如电话的颜色 所属的主人 电话号码等 常量是类的常量成员 声明字段成员变量的语法如下 访问修饰符 数据类型成员变量名 8 2 属性成员 类的函数成员包括 属性 方法 索引器 事件 运算符 构造函数和析构函数 下面我们来介绍一下属性成员 从前面学习可知 其他类可以访问某个类中具有public权限的成员变量 将变量声明为public类型 不利于数据的安全 破坏了类的封装特性 通过属性成员可以对类中私有成员变量进行读取和赋值操作 属性成员中用get 访问器和set 访问器来对类中私有成员变量进行读写操作的 定义属性方法格式如下 访问修饰符 数据类型属性名 get get访问器set set访问器 9 3 方法 方法用来描述对象的行为 对类的数据成员的操作都封装在类的方法中 方法的主要功能便是数据操作 没有方法的程序是没有意义的 就像电话如果不具有接打电话等功能 是没有什么作用的 方法的声明格式如下 访问修饰符 返回值数据类型方法名 参数列表 方法体 10 4 静态成员 类的成员要么是静态的 要么是非静态的 前面介绍的类的成员都是非静态的 使用的必须实例化 如果将类中的某个成员声明为static 则该成员是静态成员 非静态成员也叫实例成员 类的静态成员可以直接使用 不必产生类的实例 无论这个类创建了多少个实例 静态成员为类的所有实例所共享 如任何电话都可以拨打急救电话 拨打急救电话功能可以定义为静态的 11 范例4 2 定义一个有多种成员类型的类 1privatestring owner 定义一个私有字段表示电话机主2publicstringaddress 定义一个公有字段表示电话地址3privatestaticstring phoneNumber 定义一个静态字段成员用于表示电话号码4 属性成员5publicstringOwner 定义一个属性成员 用于设置和获取私有字段 owner的值6 7get return owner 获取私有字段 owner的值8set owner value 设置和私有字段 owner的值value是关键字9 10 无参数方法成员 表示电话具有拨打电话功能11publicvoidDial 12 13Console WriteLine 您正在拨打电话 12 14 15 有参数方法成员 表示电话这种拨打一个具体的电话号码16publicvoidDial stringnumber 17 18Console WriteLine 您正在拨打 number 19 20 静态属性成员 用于设置和获取静态字段成员 phoneNumber的值21publicstaticstringPhoneNumber22 23get return phoneNumber 24set phoneNumber value 25 26 添加静态方法EmergencyCall 27publicstaticvoidEmergencyCall 28 29Console WriteLine 您正在拨打急救电话119 30 13 在Program cs的Main方法中输入以下代码以测试类的成员 Phone EmergencyCall 静态方法可直接使用Console WriteLine Phone emergency Call PhoneobjPhone newPhone 创建对象objPhone PhoneNumber 13888888888 通过set访问器私有字段phoneNumber赋值Console WriteLine 电话号码是 objPhone PhoneNumber 通过get访问器得到私有字段phoneNumber的值objPhone Dial objPhone Dial 13888888888 使用非静态成员Console Read 14 第4章主流软件开发方法 面向对象入门 类的定义和类的成员 对象的创建和使用 构造函数和析构函数 分部类 结构和类 命名空间 15 4 2C 中的对象 类和对象是密不可分的 有类就有对象 有对象就有类 客观世界是由多种对象组成的 用面向对象的思想来编写程序 就要把一切都看为对象 16 4 2 1对象的概念 类是相同特征的一类事物的抽象 而对象是类的实例 类和对象有着本质的区别 类是从对象中抽取出来的一类对象的描述 对象是真实的个体 是一个具体的事物 从抽象到具体即是将类的属性和行为实例化的过程 类与对象的关系可以比喻为车型设计和具体的车 类就像车型设计一样说明了车所应该具备的所有属性和功能 但是车型设计并不是车 你不能发动和驾驶车型 对象就像根据车型设计制造出的车 它们都具备车型设计所描述的属性和功能 车是能发动和驾驶的 17 4 2 2对象的创建和使用 类是抽象的 要使用类中非静态的成员 就必须实例化类 即创建类的对象 如何创建对象并使用它呢 使用new运算符来创建类的对象 对象的创建必须以类为基础 声明一个对象就是类的实例化的过程 C 使用new运算符来创建对象 格式如下 类名对象名 new类名 参数列表 18 PhoneobjPhone newPhone 对象的使用是通过对对象中的成员的访问来实现的 访问对象中的成员的语法如下 对象名 成员名如 objPhone address 办公楼3204 objPhone Dial 13888888888 19 4 2 3匿名类型和对象初始化器 匿名类型和对象初始化器是C 3 0新增加的功能 用来简化对象的初始值设置的 使用对象初始化 创建Phone并对其属性成员Owner赋值可以这样写 PhoneobjPhone newPhone Owner 办公楼3204 20 例如 定义类Point 有两个自动属性X Y表示点的坐标 1publicclassPoint2 3publicintX get set 4publicintY get set 5 使用对象初始化 可这样创建对象并对属性赋值 Pointp newPoint X 0 Y 0 21 使用匿名类型可以定义内嵌的类型 不需要显式地定义一个类型 假设没有定义Phone类 却要使用一个Phone对象 即类型是匿名的 可以使用对象初始化语法 但不用指定类型名 varp new X 0 Y 2 在VS2008中 仍然可以使用智能感应功能得到这个匿名类型的属性列表 22 4 2 4构造函数和析构函数 对象和客观世界中的事物一样 从创建到消亡都有一个生命周期 对象的创建和销毁是通过类的构造函数和析构函数来完成的 23 构造函数 C 通过new创建对象的过程实际就是调用类的构造函数的过程 创建对象时 必须调用构造函数 构造函数是用于执行类的实例的初始化 每个类都有构造函数 如果没有定义 系统会提供一个默认的构造函数 默认的构造函数一般不执行什么操作 在访问一个类的时候 系统将最先执行构造函数中的语句 构造函数是类的特殊方法成员 名称和类名相同 主要用来完成初始化的 24 2 析构函数 析构函数用于在对象销毁前释放被占用的系统资源 析构函数的名字与类名相同 只是在前面加了一个符号 析构函数不接受任何参数 也不返回任何值 例如 1publicclassMyClass2 3 MyClass 4 析构函数 一个类只能有一个析构函数 析构函数不能手动调用 是系统自动调用的 提示5 25 范例4 3 定义一个有多种成员类型的类 1classProgram2 3staticvoidMain string args 4 5 6 类program结束78classScore9 10publicintx 定义字段成员x11publicinty 定义字段成员y1213publicScore 无参数构造函数用于对字段成员初始化14 15x 0 y 2 用于对字段成员初始化16 26 17publicScore intval x intval y 有参数构造函数18 19x val x y val y 用于对字段成员初始化20 2122 Score 析构函数23 24Console WriteLine 析构函数主要用于清理资源 25Console ReadKey 为了看见析构函数的运行 可以添加此行代码 26 析构函数不能有任何访问修饰符 也不能有返回值 否则会出错 27 27 在Program cs的Main方法中输入以下代码以测试类的成员 1ScoreobjScore1 newScore 用无参构造函数创建对象objScore12Console WriteLine 无参数构造函数演示 3Console WriteLine x objScore1 x 4Console WriteLine y objScore1 y 5ScoreobjScore2 newScore 80 90 用有参构造函数创建对象objScore26Console WriteLine 有参数构造函数演示 7Console WriteLine x objScore2 x 8Console WriteLine y objScore2 y 9Console ReadKey 28 4 2 5参数传递 C 传递参数有两种类型 值传递和引用传递 前面的例子没有具体说明参数传递的类型 是按照值传递来进行的 值传递是C 默认传递方式 使用值传递方式向方法传递参数 向方法传递的是参数的副本 方法内发生的对参数的更改对该参数本身无任何影响 就像文件的复印件一样 无论如何修改复印件 原件不会有任何改变 如果希望所调用的方法更改参数的值 必须使用ref或out关键字声明通过引用方式传递参数 out传递与ref类似 二者区别是ref要求参数变量在传递之前必须初始化 out则不要求 29 第4章主流软件开发方法 面向对象入门 类的定义和类的成员 对象的创建和使用 构造函数和析构函数 分部类 结构和类 命名空间 30 4 3分部类 Partial类 有人翻译为 部分类 在MSDN上译为 分部 类型 所以我们使用 分部类 这一官方说法 提示一般来说 一个类 结构或接口位于一个源文件中 但某些情况 比如大型项目 特殊部署时 可能需要把一个类 结构或接口放在几个文件中来处理 等到编译时 自动把它们组合起来成为一个完整的类 这就得应用C 分部类了 31 分部类适用于以下情况 1 类型特别大 不宜放在一个文件中实现 2 一个类型中的一部分代码为自动化工具生成的代码 不宜与我们自己编写的代码混合在一起 3 需要多人合作编写一个类 分部类是一个纯语言层的编译处理 不影响任何执行机制 事实上C 编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类 C 分部类的关键字修饰符是partial 32 例如在一个文件中声明分部类Person的代码如下 01publicpartialclassPerson 定义分部类Person的部分代码02 03publicvoidDoWork 定义方法DoWork04 05 定义方法 表示Person类有工作的功能 06 07 33 在另一个文件中声明分部类Person 01publicpartialclassPerson 定义分部类Person的部分代码02 03publicvoidGoToLunch 定义方法GoToLunch04 05 定义方法 表示Person类有去吃午饭的功能06 07 34 第4章主流软件开发方法 面向对象入门 类的定义和类的成员 对象的创建和使用 分部类 结构和类 命名空间 35 4 4结构与类 4 4 1结构的定义和使用结构类型是一种值类型 通常用来封装小型相关变量组 例如 矩形的坐标或商品的特征 结构和类相似 但结构缺乏某些功能 例如继承 由于结构是值类型 通常创建结构要比创建类的速度快 如果需要一些紧凑循环 需要在其中创建大量新数据结构 则应考虑使用结构而不是类 36 在C 中 结构可以看成轻量级的类 定义和类的定义相似 采用struct进行定义 每个struct类型数据可以常量 变量 构造函数 方法和属性等成员 定义结构的语法如下 struct结构名 结构体定义 使用结构通过声明结构体变量或使用new来实例化结构对象 然后通过结构体变量 结构成员名 或结构对象 结构成员的方式来使用结构 37 范例4 5 定义表示学生信息的结构Student并使用 01structStudent 定义结构Student02 结构的成员变量03publicStringstuNum 定义结构成员表示学生学号04publicStringstuName 定义结构成员表示学生姓名05publicintstuAge 定义结构成员表示学生年龄06publicintstuClass 定义结构成员表示学生班级07publicintstuGrade 定义结构成员表示学生年级08publicStudent stringstuNum stringstuName intstuAge intstuClass intstuGrade 09 结构的构造函数 用参数给结构中的成员赋值10this stuNum stuNum 将参数stuNum赋给this stuNum11this stuName stuName 将参数stuName赋给this stuName12this stuAge stuAge 将参数stuAge赋给this stuAge13this stuClass stuClass 将参数stuClass赋给this stuClass14this stuGrade stuGrade 将参数stuGrade赋给this stuGrade15 16publicvoidDoHomework 结构中的方法17 18 结构中的方法19 20 38 4 4 2类和结构的关系 类和结构实际上都是创建对象的模板 都可以包含构造函数 常数 字段 方法 属性 索引器和运算符等成员 二者的主要区别如下 结构是值类型 类是引用类型 在内存中结构是存储在堆栈上的值类型 类是存储在堆 heap 上的引用类型 结构的构造函数和类的构造函数不同 结构不能包含显式的无参数构造函数 结构成员会自动初始化为它们的默认值 结构不能包含以下形式的初始值设定类 base 参数列表 对于结构中的实例字段成员 不能在声明时赋值初始化 声明了结构类型后 可以使用new运算符创建构造对象 也可以不使用new关键字 如果不使用new 那么在初始化所有字段之前 字段将保持未赋值状态且对象不可用 结构不支持继承 即一个结构不能从另一个结构或类继承 而且不能作为一个类的基类 39 第4章主流软件开发方法 面向对象入门 类的定义和类的成员 对象的创建和使用 分部类 结构和类 命名空间 40 4 5命名空间 C 程序是利用命名空间组织起来的 命名空间既用作程序的 内部 组织系统 又用作 外部 组织系统 一种将已向其他程序公开的程序元素进行展示的方式 就像一个城市为了便于管理 分成多个区一样 每个区就类似于一个命名空间 41 4 5 1声明命名空间 命名空间是 NET避免类名冲突的一种方式 例如 定义类Customer来表示一个顾客 同时其他人也可以定义一个Customer类 只要二者不在同一个命名空间中就不会引起名称冲突 一个命名空间中 可以有多个类 结构 接口等 在同一命名空间中 类名不能有相同的 C 中 使用namespace来定义命名空间 格式如下 Namespace定义的命名空间名称 命名空间体 42 例如定义命名空间 1namespaceExample4 6 定义命名空间 该命名空间中有一个Program类和Student结构2 3classProgram 命名空间中的类4 5staticvoidMain string args 6 7 Console ReadKey 8 9 10structStudent命名空间中的结构11 12 结构的成员变量13 14 43 4 5 2using关键字 把一个类型放在命名空间中 可以有效地给这个类型指定一个较长的名称 该名称包括类型的命名空间 后面是句点 和类的名称 如可以这样使用MessageBox消息框的Show方法 System Windows Forms MessageBox Show Hello C 就像这样称呼一个人 中国 北京 西城区 张三 一样 使用起来很不方便 可用using关键字引入其命名空间 使用时就不需要带很长的一串名称了 导入命名空间的语法是 using命名空间名称 引入命名空间后 就可以在代码中直接使用被引入命名空间中类型的名字了 44 usingSystem Windows Forms MessageBox Show Hello C 否则则要这样写 System Windows Forms MessageBox Show Hello C 45 ByeBye 46 跟我上机 在C 中编写一个控制台应用程序 实现以下功能 设计一个Rectangle类 提供通过length和width字段计算面积和周长的2个方法 并用main方法来测试程序 47
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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