首页 > 编程语言 >模块1 课程准备 --- 第三章:建立面向对象的编程思想

模块1 课程准备 --- 第三章:建立面向对象的编程思想

时间:2024-07-21 11:08:13浏览次数:14  
标签:封装 对象 编程 --- 面向对象 面向对象编程 方法 属性

第三章 建立面向对象的编程思想

主要知识点:

  1、理解面向对象编程的基本思想。

  2、掌握面向对象编程的一般方法。

  3、能够运用Java语言编写简单的应用程序。

学习目标:

  掌握面向对象编程的基本思想

  解释:面向过程编程 从解决每一个步骤入手,适合于解决比较小的简单问题;面向对象编程的设计方法则是按照现实世界的特点来管理复杂的事务,把它们抽象为对象,把每一个对象的状态和行为封装在一起,通过对消息的反应来完成一定的任务。

  面向对象编程方法主要解决两个方面的问题:

  (1)避免程序的重复利用,共享代码,增加程序的开发速度。

  (2)降低维护难度,将具有独立性的代码封装起来,在修改部分程序代码时,不会影响到程序的其他部分。

3.1 面向对象的思想

3.1.1 面向对象的基本概念

  面向对象的程序设计语言必须有描述对象以及其相互之间关系的语言成分。归结为以下几类:系统中的一切皆对象。对象是什么?对象是属性及其操作的封装体。主要概念如下:

  (1)对象:从简单的整数到复杂的飞机等均可以看作是对象,不仅表示具体的事物,还可以表示抽象的规则,计划或事件。

  (2)对象的状态和行为:数值是对象的状态,操作是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

  (3)类:具有相同或相似性质的对象的抽象就是类。

  (4)类的结构:客观世界中存在若干类,这些类中存在一定的结构关系。通常有两种主要的结构关系,即一般与具体、整体与部分的结构关系。类中操作的实现过程称为方法,一个方法包括方法名、参数、方法体。

  (5)消息和方法:对象之间进行通信的结构称为消息。

3.1.2 面向对象思想的基本特征

  1、唯一性:每个对象都有唯一的标识,标识不会改变,不同的对象不能有相同的标识;

  2、分类型:具有一致的数据结构(属性)和行为(操作)的对象抽象成为类。任何类的划分都是主观的,但必须与具体的应用有关;

  3、继承性:子类自动共享父类数据结构和方法的机制,这是类之间的一种关系;在类层次中,子类只继承一个父类的数据结构和方法,则称为单一继承,子类集成多个父类的数据结构和方法,则称为多重继承

  4、多态性:相同的操作、函数或过程可作用于多种类型的对象上并获得不同的结构,不同的对象。

3.1.3 面向对象思想的基本要素

  1、抽象:抽象是指强调实体的本质,内在的属性。使用抽象可以尽可能避免过早的考虑一些细节。

  2、封装性:类定义将其说明与实现,显式地分开,其内部实现按其作用域提供保护。对象是封装的最基本单位,封装防止了程序相互依赖性而带来的变动影响。面相对象的封装比传统语言的封装更加清晰。

  3、共享性:???

3.2 面向对象的编程方法

3.2.1 面向对象编程的基本步骤

  面向对象编程通常要经过9个步骤:

  (1)分析确定在问题空间和解空间出现的全部对象及其属性;

  (2)确定应施加于每个对象的操作,即对象固有的处理能力;

  (3)分析对象间的联系,确定对象彼此间传递的消息;

  (4)设计独享的消息模式,消息模式和处理能力共同构成对象的外部特性;

  (5)分析各对象的外部特性,将具有相同外部特性的对象归为一类,从而确定所需要的类。

  (6)确定类间的继承关系,将各对象的共同性质放在较上层的类中描述,通过继承来共享对共同性质的描述。

  (7)设计每个类关于对象外部特性的描述。

  (8)设计每个类的内部实现(数据结构和方法)

  (9)创建所需的对象(类的实例),实现对象间的联系(发消息)。

3.3.2 主要概念解析

  1、对象、类和消息

    对象是变量和相关方法的集合,其中变量是对象的状态,方法表示对象所具有的行为。也就是说面向对象的程序设计实现了对对象的封装,使用者不必关心对象的行为是如何实现的。

  2、继承

    通过对象、类,可以实现封装,通过子类则可以实现继承

  3、抽象与接口

    抽象化的概念被提出,是为了降低程序版本更新后,在维护方面的负担,使功能的提供者和功能的使用者能够彼此分开,各自独立,互不影响。接口定义了功能数量、函数名称、参数顺序等。是一个声明属性、事件和方法的编程结构。只提供定义,并不实现这些成员,而是留给用户自己扩充。

  4、多态

    通过方法重载方法覆盖来实现多态。首先一个类中可以包含多个重名的方法。但是参数不允许完全相同。其中方法重载可以具有多个相同名字的方法,通过参数来区别哪一个方法。在方法覆盖中,子类可以实现父类的某些方法,使其具有自己的特征。

3.3.3 类的实现

  一个类包含类声明和类体两部分内容。

  1、类声明

  一个最简单的类声明如下:

public class simple {

}  

  2、类体

  类体中定义了类的所有属性(变量)和类所支持的方法(函数),通常属性在方法前定义。例如:

class 类名{
    属性声明;
    方法声明;
}

 

  3、属性

  最简单的属性声明格式为:

类型 属性名;

  注意:在方法中声明的局部变量是不同的,局部变量的作用域只是方法内部。使用final来声明一个常量。常量通常使用大写字母来定义;

习题

一、简单题

  1、面向对象思想有哪些基本特征?

  2、面向对象思想包括哪些基本要素?

  3、面向对象编程需要哪些步骤?

  4、什么是类?类由哪些成分构成?

  5、解释以下概念:类、对象、继承、封装、抽象。

二、操作题

  1、定义一个类Person,并设置若干成员变量和成员方法;

  2、定义一个类Teacher,并设置若干成员变量和成员方法;

  3、分析Teacher和Person的关系;

标签:封装,对象,编程,---,面向对象,面向对象编程,方法,属性
From: https://www.cnblogs.com/kuangmeng/p/18312688

相关文章

  • 【软考】数据结构与算法基础 - 数组和链表
    一、数组和链表的区别(很简单,但是很常考,记得要回答全面)什么是数组:C++语言中,可以用数组,处理一组数据类型相同的数据,不可以动态定义数组的大小(使用前,必须指定大小。)在实际应用中,用户使用数组之前,无法确定数组的大小只能够将数组定义成足够大小,多余出来空间可能不被使用,......
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号1
    本来打算找到工作再整理高级的题库,但一直没什么面试机会。宅在家里也不知道干些什么。索性就把高级的题库整理出来了。也算有头有尾。高级的题库更新之后,专业性更强了,不是真正从事这一行的,很难做出来。本人就是个小菜鸡,有一些题,我也不想不明白。题目的答案我尽可能的找到出......
  • 编解码器无法解码位置 2-3 中的字节:截断的 \UXXXXXXXX 转义 (Python QREADER)
    我正在尝试pythonqreader模块,但每次我尝试运行它时,我都会收到SyntaxError:(unicodeerror)'unicodeescape'codeccan'tDecodebytesinposition2-3:truncated\UXXXXXXXXescapeerror.fromqreaderimportQReaderfromcv2importQRCodeDetector,imreadfrompyz......
  • vue2-常用富文本编辑器使用介绍
    mavon-editor安装命令[email protected]全局配置修改main.js文件,添加如下配置importmavonEditorfrom'mavon-editor'import'mavon-editor/dist/css/index.css'Vue.use(mavonEditor)组件使用不含视频上传功能<el-row><......
  • Android10.0 锁屏分析-KeyguardPatternView图案锁分析
    首先一起看看下面这张图:通过前面锁屏加载流程可以知道在KeyguardSecurityContainer中使用getSecurityView()根据不同的securityModeinflate出来,并添加到界面上的。我们知道,Pattern锁所使用的layout是R.layout.keyguard_pattern_view;<com.android.keyguard.KeyguardPat......
  • Java基础编程500题
    前言✌大家好,我是安晴晚风。本专栏整理了《Java基础编程题500题》,涵盖的知识点包括顺序结构、分支结构、循环结构、数组、方法、字符串、面向对象、集合、正则表达式、StreamAPI、反射、多线程等知识点。题目✨题目正在持续更新中,敬请期待吧~✨欢迎点赞、评论、收......
  • AI跟踪报道第48期-新加坡内哥谈技术-本周AI新闻:Open AI 和 Mistral的小型模型
       每周跟踪AI热点新闻动向和震撼发展想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行!订阅:https:......
  • 【独家首发】Matlab实现淘金优化算法GRO优化Transformer-LSTM实现负荷数据回归预测
    %导入数据集load(‘load_data.mat’);%假设负荷数据保存在load_data.mat文件中%数据预处理%这里省略了数据预处理的步骤,包括数据归一化、特征提取等%构建Transformer-LSTM模型model=create_transformer_lstm_model();%自定义创建Transformer-LSTM模型的函数......
  • 【独家首发】Matlab实现狮群优化算法LSO优化Transformer-LSTM实现负荷数据回归预测
    %导入数据集load(‘load_data.mat’);%假设负荷数据保存在load_data.mat文件中%数据预处理%这里省略了数据预处理的步骤,包括数据归一化、特征提取等%构建Transformer-LSTM模型model=create_transformer_lstm_model();%自定义创建Transformer-LSTM模型的函数......
  • 【中项】系统集成项目管理工程师-第3章 信息技术服务-3.6服务发展
    前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。     软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”,目前涵盖了计算机软件、计算机网络、计算机应用技术......