面向对象程序设计(Object-Oriented Programming,OOP)是一种程序设计架构,同时也是一种程序开发的方法。对象指的是类的实例,它将对象作为程序的基本单元,将程序和数据封装其中,以提高代码的重用性、灵活性和扩展性。
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
操作:
显示学习的课程Study(course),course是显示的课程名称
显示考试的课程Exam(course,score),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) 代码重用性搞,可靠性高,开发效率高。
来源:https://www.cnblogs.com/qy1234/archive/2020/02/25/12363411.html