面向对象程序设计(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)       代码重用性搞,可靠性高,开发效率高。

第1章 类和对象—面向对象概念相关推荐

  1. 第三章类与对象基础 ① 笔记

    1. 内容回顾 1.1. 课前测试 1.2. 上节内容 2. 本章重点 2.1. 类和对象的概念 2.2. 类的基本组成 2.3. 构造方法 2.4. 成员方法 3. 具体内容 3.1. 类和对象的概 ...

  2. Java-入门之面向对象以及类和对象的概念(一)

    面向对象,类,对象? 前言:只有光头才能变强! 一:面向对象 当我们初学java时,扑面而来的一个词就是面向对象,那什么是面向的对象呢 ? 在说面向对象之前,大家先要知道对象是什么,如果你脑子里第一想 ...

  3. 面向对象——类与对象的概念

    ● 类:类是一个模板,它描述一类对象的行为和状态. (1)什么是类?类是分类和类别的意思 通过分类,可以区别不同的事物种类,  类是一组具有共同特性(属性)与行为(方法)的事物集合 (2)类与对象之间 ...

  4. java怎么给类中的私有变量赋值_Java核心技术笔记分享------第二章 类与对象

    对象与类 一.面向对象思想的概述 1>面向对象与面向过程: 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象. 面向对 ...

  5. Python程序开发——第六章 类与对象

    目录 一.类 (一)类.对象 (二)类的定义 (三)对象的创建和使用 二.限制对象访问 (一)定义私有成员.方法 (二)访问私有成员.方法 三.构造方法和析构方法 (一)构造方法 (二)析构方法 四. ...

  6. java什么是类和对象,Java类和对象的概念

    Java是一门面向对象的编程(Object Oriented Programming, OOP)语言,面向对象是相对于面向过程而言.那么什么是面向对象,什么又是面向过程呢? 面向过程--步骤化 面向过 ...

  7. JAVA入门第二季 第一章 类和对象

    面向对象编程 Object Oriented Programming OOP 第一.什么是类和对象 在具体说明类和对象之前,先说说别的. 眼睛在人类身体上最为有用的器官.如果一个没有了眼睛,这个人与世 ...

  8. 学习java要学类与对象的使用吗_java 类与对象 的概念理解(可以用我们学习多年的蚂蚁哲学套用)...

    面向对象其实是一种思考的思想,是解决问题,架构工程的整体解决方案.二早期编程语言的思想是面向过程. 面向过程注重的是过程,过程所涉及的行为,也就是功能.通过选择循环语句等逻辑将参与者连接起来. 面向对 ...

  9. C++语言程序设计——知识点复盘(第四章 类与对象)

    目录 面向对象程序设计的基本特点 1.抽象 2.封装 3.继承 4.多态 类和对象 类的成员函数 1.成员函数的实现 2.目的对象. 3.带默认形参值的成员函数 4.内联成员函数 构造函数 析构函数 ...

最新文章

  1. SummarizedExperiment类使用
  2. mysql sqlserver对比_很用心的写了 9 道 MySQL 面试题
  3. win docker运行nginx
  4. Windows-Qt-EclipseCDT 环境问题集
  5. oom 如何避免 高并发_【面试】如何避免OOM的发生
  6. 容器编排技术 -- Kubernetes kubectl rollout pause 命令详解
  7. 深入理解SQL Server的规划和安装
  8. git问题ERROR: Repository not found.的解决办法
  9. [Python] np.ones_like(ndarray)和np.zeros_like(ndarray)
  10. 自动垃圾回收学习笔记-垃圾回收算法
  11. 多重判断php d代码,phpd代码审计
  12. mysql 判断指定条件数据存不存在,不存在则插入
  13. 左神进阶班-KMP算法
  14. 国外十大在线支付服务网站
  15. React Native从入门到实战--开发环境搭建
  16. JAVA Date 工具类 常用
  17. 升级Windows11后鼠标卡顿
  18. 王思聪他们家到底是干什么的
  19. bootstrap侧面菜单栏
  20. 代码记录丨小青蛙和汉诺塔

热门文章

  1. Jmeter做接口的压力测试
  2. 一用就上瘾的智能手环 荣耀手环6使用感受
  3. 【矩阵论笔记】内积空间定义、长度、Cauchy-Schwartz、三角不等式
  4. 人力资源管理专业知识与实务(初级)【3】
  5. linux分区_解决Linux下挂载的NTFS分区(Windows分区)只读问题。
  6. 华为鸿蒙能行吗,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
  7. 荒野行动服务器信息连不上,荒野行动服务器连接不上怎么办_荒野行动服务器连接不上解决方法说明_3DM手游...
  8. 【每日一P】魔幻森林-美女与野兽场景合成教程
  9. Nginx 连接 Redis 实现数据库操作
  10. 视频号新手如何打造爆款内容?