第1章 类和对象—面向对象概念

[亡魂溺海] 提交于 2020-02-25 22:12:34

面向对象程序设计(Object-Oriented ProgrammingOOP)是一种程序设计架构,同时也是一种程序开发的方法。对象指的是类的实例,它将对象作为程序的基本单元,将程序和数据封装其中,以提高代码的重用性、灵活性和扩展性。

1.1     面向对象概念

时间是由什么组成的?现实世界是由一个一个对象组成的,例如看到的东西、听到的事件、想到的事情,这些都是对象,也就是说万事万物皆对象。不同的对象,既相互独立,又相互联系,人们面向的世界是“面向对象”的。

1.1.1对象抽象成类

对象(Object)抽象为类(Class)的过程,是在系统分析阶段完成的。

 

1.       分析对象的特征

对象是人们要分析的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件,不同的对象呈现不同的特征。由于对象反映了现实世界,人们通过面向对象的方法就可以找到合理地解决问题的方法。怎么区分这些对象呢?就是分析与系统相关的特征,包括状态(静态特征)和操作(动态特征)。如图1-1所示为对象的部分特征的分析。

状态:用于描述对象的静态特征,表示对象“是什么样子”。对象的状态用一些数据来描述,在程序中称为字段或属性。

操作:用于描述对象的动态特征,表示对象“能做什么”。对象的操作用于改变对象的状态,对象的操作就是对象的行为,在程序称为方法或函数

对象实现了状态和操作的结合,使状态和操作封装在一个对象之中,如图1-2所示。

 

2.       对象抽象成类

抽象就是从特定角度出发,从已经存在的事物中提取现实世界中某事物的关键特征,为该事物构建模型的过程。对同一事物在不同的需求下, 需要提取的特征可能不一样。得到的抽象模型中一般包含:状态(属性)和操作(方法或函数),这个抽象模型称为类。 

现实世界中的事物都可以抽象成应用系统软件中的对象,提取出人们所关注的对象,对这些对象再分析与应用系统相关的特征,对不同特征的对象进行分类,把具有相同或相似的对象进行归类,即抽象成类,如图1-3所示。 

 

例如,要研发一款学校管理系统软件,依据学校汇总的对象特征,分为人、场馆、物品、课程等类别。学校中的“人”,根据特征可分为管理人员、教师、后勤人员、学生等类别,这种“类别”在面向对象中称为“类”。类是具有相同状态和操作的一组对象的集合 

类是对象的抽象,仅仅是模板,比如说“人”类。对类进行实例化得到对象,对象是一个一个看得见、摸得着的独一无二的具体实体,一个对象具有唯一的状态和操作,如图1-4所示。

 

面向对象技术利用“面向对象思想”去描述“面向对象的世界”。面向对象是把问题分解成各个对象,在系统分析阶段把这些对象抽象成不同的类,建立类和描述这类对象在解决问题时的特征(状态和操作),形成类模板。其中的操作,在类定义中是用方法来实现的 

 

3.       课堂练习

课堂练习1-1】指出下面词语哪些是类?哪些是对象?

笔记本电脑 院中的那辆白色轿车 员工 同事小李

汽车 大象 我家的小狗 越野车

 

我的手机 我选的本学期的课程 我选的C#课程 教师

 

【例1-1】  使用面向对象的思想描述并抽象出学生类。

功能描述:常用的学生信息有姓名、性别、年龄、班级等基本信息,学习完一门课程后需要参加考试,只有考试通过后才能进入下一门课的学习。请根据描述,从对象抽象出学生类。要求定义学生类,并在主方法中实例化学生对象。

思路分析如下。

1)分析问题:学生学习课程。

2)提炼对象:学生。

3)分析对象的状态:姓名、性别、年龄、班级等。

4)分析对象的操作:学习、考试等。

5)定义类:学生类Student

状态:

姓名name

性别gender

年龄age

班级grade

操作:

显示学习的课程Studycourse),course是显示的课程名称

显示考试的课程Examcoursescore),course课程,score成绩

 

课堂练习1-2】请使用面向对象的思想描述并抽象出“台湾烧仙草奶茶连锁店”的类。

功能描述:不同的“台湾烧仙草奶茶连锁店”具有相同的环境、奶茶品种、价格、服务等,显示某编号奶茶店的信息。

 

【例1-2】  使用面向对象的思想描述长方体类。

功能描述:长方体有3条棱,分别叫作长方体的长,宽,高。用这3条棱既能描述一个长方体,也可以计算长方体的体积、表面积。

思路分析如下。

1)  分析问题:用长方体的3条棱就能描述一个长方体,计算长方体的体积、表面积。

2)  提炼对象:长方体。

3)  分析对象的状态:长,宽,高。

4)  分析对象的操作:计算长方体的体积、表面积。

5)  定义类:长方体类Cuboid

状态:

length

width

height

操作:

计算长方体的体积Cubage,长方体的体积=长×宽×高计算长方体的表面积TotalArea,长方体的表面积=(长×宽+长×高+宽×高)×2

1.1.2 由类创建对象 

在编程阶段,由类模板生成(或创建)对象(实例),如图1-5所示。

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型对象中的方法和变量的模板。例如,由“人”类创建“刘强”“王芳”对象,如图1-6所示。

 类是具有相同状态(特征)和操作(方法或函数)的一组对象集合。类是对象的类型,不同于基本数据类型(例如,int类型),类具有操作。对象是一个能够看到、摸得着的具体实体。

1.1.3 对象之间的通信

 对象之间的通信称为消息,如图1-7所示。在对象的操作中,当一个对象的消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接收消息的对象名、发送给该对象的消息名(即对象名、方法名)。

 

 面向对象的思想就是以对象为中心,先开发类,然后实例化对象,通过对象之间相互通信实现功能。

1.1.4 面向对象开发的特点

面向对象开发就是采用“现实模拟”的方法设计和开发程序,面向对象是把问题分解成各个对象,描述这个对象再解决问题时的状态和操作,面向对象技术利用“面向对象的思想”去描述“面向对象的世界”。面向对象开发主要特点如下。

1)       虚拟世界和现实世界的一致性。

2)       客户与软件开发工程师交流更顺畅。

3)       软件开发人员内容交流更顺畅。

4)       代码重用性搞,可靠性高,开发效率高。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!