第7章 面向对象编程技术

合集下载

第7章 面向对象程序设计

第7章 面向对象程序设计
第7章 面向对象程序设计
目的与要求
了解面向对象程序设计中的对象、属性、事件和方 法等概念
掌握VFP中的类和对象,对象的引用
1
第7章 面向对象程序设计
面向过程的程序设计方法:
采用面向过程、按顺序进行的机制,设计人员始终 要关心什么时候发生什么事情,程序必须有一个完整 的开始、中间和结束过程。
面向对象的程序设计方法:
以对象为核心,采用由用户或系统触发事件来驱动 程序的机制,设计人员不必考虑程序执行的精确顺序, 只需编写响应用户动作的程序。
2
7.1 对象与类
主要内容
对象与类的基本概念
对象与类的特性、VFP中的基类 对象、属性、事件和方法
基本概念和知识点
对象与类的基本概念,对象与类的特性,VFP的基 类对象,属性、事件和方法
用户可以从基类中生成所需要的对象。
14
7.1.3 Visual FoxPro中的类
2. 容器类与控件类
VFP的基类主要有容器类和控件类两大类型 ,相应 地,可分别生成容器对象和控件对象。
(1)容器对象 容器类派生的对象可以包含其他对象,并允许访问 这些对象。表7.2列出各种容器类与所包含的对象。
从表中可以看出,一个容器内的对象本身也可以是 容器。另外,不同的容器所能包容的对象类型是不同 的。表7.3列出了各类常用对象的功能描述。
与事件不同的是:方法程序集合可以无限扩展,除 了在各个类中已定义的方法外,可以根据需要自定义 方法(向类中添加新方法),以完成相应的操作。
8
7.1.2 类
1. 类的概念
类(class):是客观对象的归纳和抽象,是具有共 同属性和行为的对象的集合。
类决定了对象的特征,所有对象的属性、事件和方 法在定义类时被指定。 在OOP中,主要是设计类。

面向对象程序设计第7章

面向对象程序设计第7章

继承
继承是子类继承父类的属 性和行为,子类可以扩展 或覆盖父类的实现。
多态
多态是指不同对象对同一 消息的响应不同,即一个 消息可以作用于多个对象, 产生不同的结果。
抽象
抽象是通过定义抽象类和 接口来定义对象的通用属 性和行为,具体的实现细 节由子类完成。
面向对象的历史与发展
起源
面向对象的思想起源于20世纪60 年代的Simula语言,后来在
常见的IDE
包括Eclipse、Visual Studio、IntelliJ IDEA等,这些IDE都支持多 种编程语言,并提供丰富的插件和扩展功能。
WENKU DESIGN
WENKU DESIGN
2023-2026
END
THANKS
感谢观看
KEEP VIEW
WENKU DESIGN
WENKU DESIGN
WENKU
REPORTING
https://
UML图的使用
在面向对象程序设计中,UML图主要用于对系统进行可视 化建模,帮助开发人员更好地理解和管理复杂的系统结构。
设计模式的工具支持
设计模式的概念
设计模式是一套经过验证的、可复用的解决方案,用于解决常见的 设计问题。
工具支持的重要性
工具支持可以帮助开发人员更快速地应用设计模式,提高开发效率 和代码质量。
单例模式
单例模式是一种创建型设计模式,它保证一个类只有一个 实例,并提供一个全局访问点来获取该实例。
单例模式通过定义一个私有的静态变量和一个公共的静态 方法来实现,该方法用于创建实例或获取实例。通过这种 方式,可以确保一个类只有一个实例,并提供一个全局访 问点来获取该实例。
PART 04

面向对象程序设计--第7章

面向对象程序设计--第7章

第1章目录
25/12
7.4 任务小结
理解输入与输出流的概念 FileStream类、StreamReader类和StreamWriter类的用法 对文本文件进行读写操作 BinaryWriter和BinaryReader的用法 能够读写二进制文件 FileInfo类和DirectoryInfo类的用法 能够操作文件夹中的文件
第1章目录
8/12
7.1.4知识总结
3、StreamReader类 StreamReader类以一种特定的编码从字节流中读取字符 ,StreamReader的方法如下表所示。 4、StreamWriter类 StreamWriter类 旨在以一种特定的编码输出字符,而从 Stream 派 生的类则用于字节的输入和输出。StreamWriter的方法如下表所 示.
第1章目录
14/12
7.2.2问题分析
数据在内存中只是临时存储,只有将数据写入到磁盘才 能实现数据的永久保存。将数据写入磁盘中的方法有 多重,在C#中,可以利用流技术实现。因为收银员 信息只是一些简单的文本信息,因此可以采用 BinaryReader及BinaryWriter字符流的方式实现文件的 操作。
7.1.4知识总结
2、FileStream类 通过使用FileStream类来读取、写入和关闭文件。创建FileStream类 的对象的语法规则如下: FileStream 流对象名=new FileStream(String , FileMode, FileAccess, FileShare) (1)其中参数1“String” 指出来FileStream用于读取或写入的文 件名及位置; (2)参数2“FileMode”是个枚举,定义打开文件的各种方法,成 员如下表 (3)参数3"FileAccess"是个枚举,定义用于控制对文件的读访问、 写访问或读/写访问的常数 (4)参数4“FileShare”包含用于控制其他 FileStream 对象对同一 文件可以具有的访问类型的常数。

第7讲 面向对象编程 (一)

第7讲 面向对象编程 (一)

对 象 是 类 的 一 个 实 例 。
对象和类的关系相当于 变量和变量类型的关系
6
类的声明

李英冰 Yb.Li
类的声明
class-modifers class classname
{ ……}

class-modifers为类的修饰符:New;Public;Protected;
Internal;Private;Abstract;Sealed

李英冰 Yb.Li
C#中的继承符合下列规则:

继承是可以传递的。如果类C继承于类B,同时类B又继承于类A, 那么类C不仅继承了类B中的声明的成员,同样也继承了类A中的 成员。Object类是所有类的基类。 派生类应该是对基类的扩展。派生类可以添加新的成员,但是 不能除去已经继承的成员的定义。 构造函数和析构函数不可以被继承。除此以外的其它成员,不 论对它们定义了怎样的访问方式,都能被继承。基类中成员的 访问方式只能决定派生类能否访问它们。 派生类如果定义了与继承而来的成员同名的新成员,就可以覆 盖已继承的成员。但这并不因为这派生类删除了这些成员,只 是不能再访问这些成员。
12
4 析构函数

李英冰 Yb.Li
析构函数,用于专门释放被占用的系统资源 析构函数的基本形式为:
~classname
{ code; }

析构函数的名字与类名也相同,只是在前返回任何值。
13
示例
class Time { int hour, minute,second; public Time(int h, int m, int s) { hour = h; minute = m; second = s; static void Main(string[] args) { Time tm1 =new Time(10,35,55); Time tm2 = new Time(16,53,9); }

Python大数据基础与实战(第7章 面向对象编程)

Python大数据基础与实战(第7章 面向对象编程)

>>>class Person(): def __init__(self): = "张三"
#定义类 #构造方法
self.age = 18
def run(self):
print("%d岁的%s进行8百米体测达标...呼哧..."%(self.age,))
>>>person = Person()
laosun.setAge(20) print(laosun.getAge()) 输出结果:20
《Python大数据基础与实战》
7.5
继承
7.5 继承
《Python大数据基础与实战》
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法 之一是通过继承机制。通过继承创建的新类称为子类或派生类,被继承的类称 为基类、父类或超类。语法格式如下:
如果要创建多个Person类的对象,采用同样的“对象名.属性名称”的方式就显
得繁琐了。
可不可以在创建对象的时候就设置好属性,Python提供了一个特殊的方法
__init__(),被称为类的构造函数或初始化方法,当创建了这个类的实例时就会
调用该方法。
7.3 构造方法和析构方法
《Python大数据基础与实战》
7.1 类和对象
《Python大数据基础与实战》
7.1.1 类的定义 类由三部分组成:
类名:类的名称,它的首字母一般大写。
属性:用于描述类的特征,也称为数据成员。例如:人有姓名、年龄等。
方法:用于描述类的行为,也称为方法成员。例如:人具有运动、说话等
行为。
类的定义语法如下:
class <类名>( ): <类的属性> <类的方法>

第7章 面向对象程序设计

第7章 面向对象程序设计

第七章 面向对象程序设计
7.1 类与对象 7.2 设计类与对象 7.3 事件与方法程序
7.1 类与对象
7.1.1 对象 7.1.2 类 7.1.3 类与对象的关系 7.1.4 基类与子类 7.1.5 容器与控件 7.1.6 属性
பைடு நூலகம்
7.1.1 对象
对象包括数据及用来处理这些数据的方法。 对象=控件+属性+数据环境+事件+方法程序。
– 控件是显示数据和执行交互式操作使用的工具 – 属性是附加和作用于对象的一个内存变量。是对象中
的数据。是用来描述对象特征的参数。 – 数据环境是对象运行所依据的数据信息范围。 – 事件是对象能够识别和响应的某些行为和操作。如: 使用控件。 – 方法程序是对象在事件发生时进行的功能实现性操作。
控件
为交互式操作提供了控件 常用控件有: – 编辑框 – 文本框 – 标签 – 按钮 – 复合框 – 列表框 – 选择按钮 – 表单
常用控件表
见附录
常用属性表
见附录
对象
事件 属性
控件
数据环境 方法程序
对象
控件 属性 事件 方法程序 数据环境
对象的操作与引用
1.绝对引用 – 引用地址从最外层容器直到目标对象 2.相对引用 – 引用地址从参照物到目标对象 参照关键字 参照关键字 参照对象 THIS 该对象 THISFORM 包含该对象的表单 THISFOMSET 包含该对象的表单集 Parent 包含该对象的父对象

Csharp面向对象的编程技术

Csharp面向对象的编程技术

17
base 关键字
Microsoft ©
4.2.3
public Animal { public void method1(){} } public class Lion : Animal { //将父类的同名方法隐藏 public void method1() { …… } public Lion() { this.method1(); base.method1(); } }
22
编写虚方法
Microsoft ©
4.3.2
• •
如果希望某个方法的实现能够在子类中进一步得到改 进,那么将方法定义为虚方法 使用virtual关键字定义虚方法 关键字定义虚方法 使用
public class Animal { public virtual void Eat() { Console.WriteLine("Eat something"); } }
• • •
base 指代一个对象的父 类/基类 基类 当子类中的成员与父类 成员重名是, 成员重名是,父类的成 员被隐藏 base 的作用: 的作用:
点取父类中被子类隐藏了 的成员变量 点取被子类覆盖了的方法 作为方法名表示父类的构 造函数
18
密封类
Microsoft ©
4.2.4
• • • •
使用sealed关键字声明密封类 关键字声明密封类 使用 密封类不允许其他类继承该类 密封的方法不允许被覆盖 如果你的类不希望被别人继承、修改,为安全起见, 如果你的类不希望被别人继承、修改,为安全起见, 把它们定义为sealed吧! 把它们定义为 吧
第七章 C Sharp 编程 课程内容
Microsoft ©
• • • • • • •

ch7 面向对象程序设计

ch7 面向对象程序设计

7.3 消息和方法
现实世界中的对象之间存在着各种各 样的联系,正是这种联系和相互作用,才 构成了世界中的不同系统。同样,面向对 象程序设计中的对象之间也存在着联系, 称之为对象的交互,提供对象交互的机制 成为消息传递。
14
C++ 程序设计
7.3 消息和方法
类中操作的实现过 程叫做方法。 程叫做方法 。 属于一个 类的对象具有相同的行 为 , 当某个行为作用于 对象时, 对象时 ,称该对象执行 了一个方法, 了一个方法 , 这个方法 定义了该对象要执行的 一系列计算步骤, 一系列计算步骤 , 所以 方法是对象操作过程的 算法。 算法。 消息传递如图所 示 。 示。
12
C++ 程序设计
7.2 对象与类
对象则有以下特点:
对象必须属于某个类。 对象在程序执行期间存在。 对象必须显式声明,而且要由执行程序来构 造。 对象具有属性和方法,在程序执行期间可以 修改其属性值,也可以执行方法(对象 所属 的类定义了这些属性和方法)。 对象通常用一个变量名来引用。

13
C++ 程序设计
2
C++ 程序设计
7.1 面向对象技术概述
我们应该怎样理解面向对象技术
从认知方法学角度:面向对象技术是属 于思维 科学中的一项工程技术。 从程序设计方法学角度:面向对象方法是一种与 传统软件工程的功能方法完全不同的,以对象为 中心的方法。
3
C++ 程序设计
7.1 面向对象技术概述
面向对象方法具有如下基本特征:
17
C++ 程序设计
7.4 面向对象的程序设计
7.4.1 数据抽象和封装
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7章 面向对象编程技术 第一讲 类和对象、属性、方法

 教学目标 1. 理解类和对象的概念。 2. 掌握类和对象的定义和使用。 3. 掌握值类型变量和引用类型变量的区别。 4. 掌握三种访问修饰符及其含义。 教学过程

 预备知识 7.1 类和对象 7.1.1 类和对象概述 现实生活中的类是人们对客观对象不断认识而产生的抽象的概念,而对象则是现实生活中的一个个实体。面向对象程序设计的类概念从本质上和人们现实生活中的类概念是相同的。 类是一种数据类型,在C#中,类分为两种:由系统提供的预先定义的,这些类在.NET框架类库中;用户定义数据类型。 在创建对象之前必须先定义该对象所属的类。然后由类声明对象。 在Visual Studio.NET集成环境中的,工具箱中的一个个控件,是被图形文字化的可视的类,而把这些控件添加到窗体设计器中后,窗体设计器中的控件则是对象,即由工具箱中的类创建的对象。 7.1.2 类定义 在类定义中需要使用关键字class,其简单的定义格式为: class 类名 {类体} “类名”是一个合法的C#标识符,表示数据类型(类类型)名称,“类体”以一对大括号开始和结束。在一对大括号后面可以跟一个分号,也可以省略分号。 例如: class Student // 类名为Student { public string ID; public string Name; public string Sex; } 定义了一个名为“Student”(学生)的类,类体中包括学生的学号(“ID”)、姓名(“Name”)与性别(“Sex”)。 “类体”包括类中的所有数据及对数据的操作,面向对象程序设计将数据与对数据的操作作为一个整体,以类的形式进行定义,这种机制叫“封装”。 在“类体”中,所有的数据及对数据的操作的集合叫类成员,类成员的种类很多,本章仅介绍“字段”、“属性”、“方法”与“构造函数”。 “字段”是类定义中的数据,也叫类的变量。在上例中定义的“ID”、“Name”与“Sex”等均为类中的字段。如果需要在类定义的多个方法中使用某个变量,该变量应该声明为字段。 “属性”用于读取和写入“字段”值,“属性”是字段的自然扩展,对用户而言,“属性”等同于“字段”本身,对程序员而言,属性是一种读写“字段”的特殊方法。 “方法”实质上就是函数,通常用于对字段进行计算和操作,即对类中的数据进行操作,以实现特定的功能。 7.1.3 声明与使用对象 1. 声明对象 声明对象的格式与声明基本数据类型的格式相同,其语法格式为: 类名 对象名; 例如:Student s1; // 声明一个学生类对象s1 对象声明后,需用“new”关键字将对象实例化,。实例化的语法格式: 对象名=new 类名( ); 例如:s1=new Student( ); // 为s1分配内存 Student s1 =new Student( ); \\声明的同时实例化 2. 访问对象 访问对象实质是访问对象成员,对对象变量成员的访问使用“.”运算符。例如: s1.ID="2005001"; s1.Name="张三"; s1.Sex="女"; 使用对象变量为另一对象变量整体赋值,例如,“Student s2;s2=s1;”或“Student s2= s1;”。 可以使用对象中的某一成员为变量赋值。例如: string sName=s1.Name; 7.1.4 值类型与引用类型 1. 值类型 值类型变量直接包含其本身的数据,因此每个值类型变量本身就包含有赋给它的值。 在C#中,内置数据类型除了字符串(string)类型与对象(object)类型外其余均为值类型。枚举类型与结构类型也是值类型。例如“int x =42;”,整型变量x就是值类型。 2. 引用类型 与值类型不同,引用类型变量本身不包含数据,只是存储对数据的引用,数据保存在内存的其他位置。 7.1.5 访问控制 C#中最常用的访问修饰符及其意义 : public(公有):访问不受限制,可以被任何其他类访问 private(私有):访问只限于含该成员的类,即只有该类的其他成员能访问 protected(保护):访问只限于含该成员的类、及该类的派生类 如果声明成员没有使用任何访问修饰符,则该成员被认为是私有的 (private)。如果成员被声明为private或protected,则不允许在类定义外使用点运算符访问。 7.2 属性 7.2.1 声明属性 在类定义中声明属性的语法格式为: 访问修饰符 类型 属性名 { get { } set{ } } class Student // 类名为Student { private string name; // 声明字段 public string Name // 对应name的属性 { get { return name; } set { name=value; } } } 2. 声明只读或只写属性 在属性声明中,如果只有get访问器,则该属性为只读属性。例如: public string Sex { get { return sex; } } 7.2.2 使用属性 属性成员的使用就如同公有数据成员的使用一样。可以为可写的属性赋值,可以用可读的属性为其他变量赋值。例: Student s1=new Student( ); // 用属性设置修改数据成员值 s1.ID="2005003"; s1.Name="李四"; s1.Sex="男"; // 用属性读取数据成员值为其他变量赋值 sting ssex=s1.Sex; 7.3 方法 方法是把一些相关的语句组织在一起,用于解决某一特定问题的语句块。方法必须放在类定义中。方法同样遵循先声明后使用的规则。C#语言中的方法相当于其他编程语言(如VB.NET)中的通用过程(Sub过程)或函数过程(Function过程)。C#中的方法必须放在类定义中声明,也就是说,方法必须是某一个类的方法。 7.3.1 声明与调用方法 方法的使用分声明与调用两个环节。 1. 声明方法 声明方法最常用的语法格式为: 访问修饰符 返回类型 方法名(参数列表){ } 方法的访问修饰符通常是public,以保证在类定义外部能够调用该方法。 方法的返回类型用于指定由该方法计算和返回的值的类型,可以是任何值类型或引用类型数据,如,int、string及前面定义的Student类。如果方法不返回一个值,则它的返回类型为void。 方法名是一个合法的C#标识符。 参数列表在一对圆括号中,指定调用该方法时需要使用的参数个数、各个参数的类型,参数之间以逗号分隔。 实现特定功能的语句块放在一对大括号中,叫方法体,“{”表示方法体的开始,“}”表示方法体的结束。 如果方法有返回值,则方法体中必须包含一个return语句,以指定返回值,其类型必须和方法的返回类型相同。如果方法无返回值,在方法体中可以不包含return语句,或包含一个不指定任何值的return语句。 2. 调用方法 从方法被调用的位置,可以分为在方法声明的类定义中调用该方法和在方法声明的类定义外部调用方法。在方法声明的类定义中调用该方法的语法格式为: 方法名(参数列表) 在方法声明的类定义中调用该方法,实际上是由类定义内部的其他方法成员调用该方法。 在方法声明的类定义外部调用该方法实际上是通过类声明的对象调用该方法,其格式为: 对象名.方法名(参数列表) 7.3.2 参数传递 在方法的声明与调用中,经常涉及方法参数,在方法声明中使用的参数叫形式参数(形参),在调用方法中使用的参数叫实际参数(实参)。在调用方法时,参数传递就是将实参传递给形参的过程。 例如,某类定义中声明方法时的形参如下: public int IntMax(int a,int b){} 则声明对象classmax后调用方法时的实参如下: classmax.IntMax(x,y) 1. 按值传递 参数按值的方式传递是指当把实参传递给形参时,是把实参的值复制(拷贝)给形参,实参和形参使用的是两个不同内存中的值,所以这种参数传递方式的特点是形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。 2. 按引用传递 按引用传递是指实参传递给形参时,不是将实参的值复制给形参,而是将实参的引用传递给形参,实参与形参使用的是一个内存中的值。这种参数传递方式 的特点是形参的值发生改变时,同时也改变实参的值。 基本类型参数按引用传递时,实参与形参前均须使用关键字ref。 例如Swap方法代码如下: public void Swap(ref string s1,ref string s2) { string s3=s1;s1=s2;s2=s3; } 则调用该方法的语句代码如下: Swap(ref ss1,ref ss2); // 在实参中增加ref关键字 类对象参数总是按引用传递的,所以类对象参数传递不需要使用ref关键字。 7.3.3 重载方法 方法重载是声明两个以上的同名方法,实现对不同数据类型的相同处理。 方法重载有两点要求: ① 重载的方法名称必须相同; ② 重载的方法,其形参个数或类型必须不同,否则将出现“已经定义了一个具有相同类型参数的方法成员”的编译错误。 例如能同时处理整型与浮点型数据的重载方法: public void Swap(ref int a,ref int b){} public void Swap(ref float a,ref float b){}

 巩固拓展 练习题:课后练习第132页 1、2、3、4题  课程小结 本次课主要介绍了类、对象、属性和方法的声明及使用,通过学习能够基本掌握面向对象程序设计方法。 第二讲 构造函数、静态成员

 教学目标

相关文档
最新文档