面向对象(OOP)的基本特征

2023-11-08

面向对象(OOP)的基本特征
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


  面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法——结构化程序设计所不能解决的代码重用问题。

  面向对象的编程方法具有四个基本特征:

 

1.抽象:

  抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。

 

2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。继承性很好的解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。

 

3.封装:

  封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。

 

4. 多态性:

  多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

 

面向对象程序设计具有许多优点:

1、开发时间短,效率高,可靠性高,所开发的程序更强壮。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。

2、应用程序更易于维护、更新和升级。继承和封装使得应用程序的修改带来的影响更加局部化。

转载于:https://www.cnblogs.com/lizhi/archive/2007/01/24/629269.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面向对象(OOP)的基本特征 的相关文章

  • Linux 重启(重启)命令

    当内核更新时 除非您使用Livepatch或KernelCare 否则您需要重新启动Linux系统 在其他情况下也可能需要重新启动系统 例如 排除硬件问题 安装应用程序等时 如果您运行的是无头 Linux 服务器 您需要知道如何从命令行重新
  • 如何创建可启动的 Linux USB 驱动器

    通常 在笔记本电脑或 PC 上安装某些 Linux 发行版的全新副本时 您需要一个包含要安装的发行版的可启动 USB 本教程将引导您完成在 Windows macOS 和 Linux 计算机上创建可启动 Linux USB 记忆棒所需的步骤
  • 如何在 Debian 10 上安装 Visual Studio Code

    视觉工作室代码是微软开发的免费开源跨平台代码编辑器 它具有内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 可以使用扩展来扩展 Visual Studio Code 功能 本教程介绍如何在 Debian 1
  • 如何检查 PostgreSQL 版本

    PostgreSQL 通常简称为 Postgres 是一个开源通用对象关系数据库管理系统 在某些情况下 了解系统上安装并运行的 PostgreSQL 服务器版本可能很重要 例如 如果您要安装需要特定 PostgreSQL 版本的应用程序 则
  • 如何在 Ubuntu 20.04 上安装 R

    R 是一种开源编程语言和免费环境 专门从事统计计算和图形表示 它主要由统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本文介绍了在 Ubuntu 20 04 上安装 R 所需的步骤 先决条件 在继续本教程之前 请确保您已满足以下先决条
  • 如何在 Debian 10 上安装 TeamViewer

    团队查看器是一款跨平台应用程序 可用于远程控制 桌面共享 在线会议以及计算机之间的文件传输 本教程介绍如何在 Debian 10 Buster 上安装 TeamViewer 先决条件 在继续本教程之前 请确保您以以下身份登录具有 sudo
  • 如何在 Python 中注释

    编写 Python 代码时 让代码简洁且易于理解始终是一个好习惯 组织代码 为变量和函数指定描述性名称是实现此目的的几种方法 提高代码可读性的另一种方法是使用注释 注释是用于解释代码的人类可读的解释或注释 例如 如果您编写了一个复杂的正则表
  • 如何在 Debian Linux 9 上安装 VirtualBox

    虚拟盒子是一款开源跨平台虚拟化软件 允许您同时运行多个来宾操作系统 虚拟机 本教程介绍如何在 Debian 9 上安装最新的 VirtualBox 6 0 先决条件 您需要以以下身份登录具有 sudo 访问权限的用户能够在 Debian 系
  • 如何在 Debian 10 上安装 TensorFlow

    TensorFlow是谷歌打造的一个开源机器学习平台 它可以在不同设备上的CPU或GPU上运行 TensorFlow 可以在 Python 虚拟环境中安装在系统范围内 作为Docker容器 或使用 Anaconda 在本教程中 我们将解释如
  • 如何在 Ubuntu 16.04 上将 Apache Web 根移动到新位置

    介绍 在 Ubuntu 上 默认情况下 Apache2 Web 服务器将其文档存储在 var www html 它通常与操作系统的其余部分一起位于根文件系统上 但有时 将文档根移动到另一个位置会很有帮助 例如单独安装的文件系统 例如 如果您
  • 如何在 Ubuntu 16.04 上使用 Apache 和 mod_wsgi 为 Django 应用程序提供服务

    介绍 Django 是一个功能强大的 Web 框架 可以帮助您快速启动 Python 应用程序或网站 Django 包含一个简化的开发服务器 用于在本地测试代码 但对于任何与生产稍微相关的事情 都需要更安全 更强大的 Web 服务器 在本指
  • Java线程等待、通知和notifyAll示例

    java中的Object类包含三个final方法 允许线程就资源的锁定状态进行通信 这些方法是wait notify and 通知全部 那么今天我们就来研究一下java程序中的wait notify和notifyAll Java中的等待 通
  • Systemd 要点:使用服务、单位和期刊

    介绍 近年来 Linux 发行版越来越多地从其他 init 系统过渡到systemd The systemd工具套件提供了快速灵活的初始化模型 用于从启动开始管理整个机器 在本指南中 我们将向您快速介绍您在管理应用程序时需要了解的最重要的命
  • Primefaces FileUpload 组件示例教程

    今天我们将研究 Primefaces FileUpload 组件 HTML 为您提供file输入标签来选择文件 但是我们需要更多信息才能将文件上传到服务器 Primefaces 为您提供现成的解决方案 消除了这种负担文件上传组件帮助您创建漂
  • 如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书

    介绍 TLS 或传输层安全 及其前身SSL代表安全套接字层 是用于将正常流量包装在受保护的加密包装器中的 Web 协议 使用此技术 服务器可以在服务器和客户端之间安全地发送流量 而不会出现消息被外部各方拦截的可能性 证书系统还帮助用户验证他
  • 如何在 Angular Material 中使用自定义 SVG 图标

    介绍 The 角材料库提供了一套采用 Material Design 风格的 Angular 组件 其中一个这样的组件是
  • 如何在 Ubuntu 12.04 上安装 MongoDB

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • React Router v6 抢先体验

    在撰写本文时 React Router v6 仍处于 alpha 阶段 但现在是时候开始使用它并探索未来的发展了 本指南将带您了解新功能 变化 如您所知 主要维护者分叉了反应路由器项目创建一个轻量级替代品 称为到达路由器2018年初 在此期
  • 在 Linux 中减小 PDF 文件大小

    在我们的 Linux 系统中 如果我们有一个很大的 PDF 文件 我们可能想减小它的大小 在本教程中 我们将了解在 Linux 中减小 PDF 大小或压缩 PDF 文件的不同方法 让我们找出一些命令行和 GUI 方法来处理这个问题 在 Li
  • 如何在 FreeBSD 10.1 上安装 Apache、MySQL 和 PHP (FAMP) 堆栈

    介绍 FAMP 堆栈类似于 Linux 上的 LAMP 堆栈 是一组开源软件 通常安装在一起以使 FreeBSD 服务器能够托管动态网站和 Web 应用程序 FAMP 是首字母缩略词 代表FfreeBSD 操作系统 A阿帕奇 网络服务器 M

随机推荐

  • 如何使用 JSON.parse() 和 JSON.stringify()

    介绍 The JSON object在所有现代浏览器中都可用 有两种有用的方法来处理 JSON 格式的内容 parse and stringify JSON parse JSON parse 获取 JSON 字符串并将其转换为 JavaSc
  • C++ 中的字符串连接:连接字符串的 4 种方法

    在本文中 我们将揭示在中执行字符串连接的各种方法C 语言 该方法在编程时可用于多种目的 但总的来说 这个概念与组合来自不同位置的两个字符串并将它们放在一起是相同的 C 中的字符串连接技术 在 C 中连接字符串时可以考虑以下技术 C 连接 运
  • 如何在 CentOS 7 上安装和使用 PostgreSQL

    介绍 关系数据库管理系统是许多网站和应用程序的关键组件 它们提供了一种结构化的方式来存储 组织和访问信息 PostgreSQLPostgres 或 Postgres 是一个关系数据库管理系统 提供 SQL 查询语言的实现 它是许多小型和大型
  • 如何在 VPS 上使用 Nginx 设置 FastCGI 缓存

    Prelude Nginx 包含一个 FastCGI 模块 该模块具有用于缓存 PHP 后端提供的动态内容的指令 设置此功能无需额外的页面缓存解决方案 例如反向代理 想想Varnish 或特定于应用程序的插件 还可以根据请求方法 URL c
  • DNS 术语、组件和概念简介

    介绍 DNS 即域名系统 通常是学习如何配置网站和服务器的一个非常困难的部分 了解 DNS 的工作原理将帮助您诊断配置网站访问的问题 并让您更深入地了解幕后发生的事情 在本指南中 我们将讨论一些基本的 DNS 概念 这些概念将帮助您开始使用
  • Web 服务面试问题 - SOAP、RESTful

    欢迎来到 Web 服务面试问题及其详细答案 最近我写了很多关于 Web 服务的文章 我们如何用 Java 创建 SOAP 和 RESTful Web 服务 Web 服务面试问题 Here I am providing you a list
  • 如何在 CentOS 6 上使用 Logstash 和 Kibana 集中日志

    状态 已弃用 本文介绍不再受支持的 CentOS 版本 如果您当前运行的服务器运行 CentOS 6 我们强烈建议您升级或迁移到受支持的 CentOS 版本 Reason CentOS 6 于 2020 年 11 月 30 日达到生命周期终
  • Java 是按值传递,而不是按引用传递

    介绍 许多 Java 程序员质疑 Java 是否按值传递 or 通过引用传递 本文总结了为什么 Java 总是按值传递 首先 按值传递和按引用传递是什么意思 按值传递 将方法参数值复制到另一个变量 然后将复制的对象传递给方法 该方法使用副本
  • 如何在 Angular 中使用 Chart.js 和 ng2-charts

    介绍 Chart js是一个流行的 JavaScript 图表库ng2 charts是 Angular 2 的包装器 用于将 Chart js 集成到 Angular 中 在本教程中 您将使用 Chart js 和ng2 charts在 A
  • 将 CSV 文件读入 R 中的数据帧

    借助 R 提供的特定函数 将 CSV 文件读入数据帧要容易得多 什么是 CSV 文件 CSV 扩展为逗号 分隔 值 在此文件中 存储的值用逗号分隔 存储数据的过程要容易得多 为什么 CSV 是最常用的数据存储文件格式 将数据存储在 Exce
  • 如何在 Ubuntu 16.04 上为多个平台构建 Go 可执行文件

    介绍 The Go编程语言附带丰富的工具链 使获取包和构建可执行文件变得异常容易 Go 最强大的功能之一是能够为任何 Go 支持的外部平台交叉构建可执行文件 这使得测试和包分发变得更加容易 因为您不需要访问特定平台即可为其分发包 在本教程中
  • mongodb使用使用 SCRAM 验证客户端设置访问控制

    1 在没有访问控制的情况下启动 MongoDB 启动没有访问控制的mongodb实例 打开终端并以mongod用户身份运行以下命令 mongod port 27017 dbpath var lib mongodb 若是按照我前几篇的步骤来的
  • 贪心算法在计算机体系结构中的应用

    目录 一 前言 二 离线缓存 Offline caching 1 高速缓存技术的简要介绍 2 问题引入 3 精确问题 寻找思路 4 引入贪心算法 5 最优子结构性质的证明 1 变量准备 2 反证法证明 cut paste 法 6 递推表达式
  • 园区消防系统组成

    园区消防系统是一个关键的安全设施 它由多个组成部分构成 以确保园区内的火灾风险得到有效控制和管理 这些组成部分包括火灾报警系统 消防水系统 自动喷水灭火系统 消防通道和紧急出口等 首先 火灾报警系统是园区消防系统的核心组成部分之一 它通过安
  • 准备先敲一遍cesium源码

    由于cesium的例子中 关于shader只有后处理 对基本的单个模型和fbo都没有涉及 而目前公司没人去研究cesium源码 没办法 只能进行下去 否则 没法玩了 FBO什么的都加不上了
  • 美容院管理系统

    新经济环境下 美容院向智能互联网时代转型是大势所趋 在美容院不断拔地而起的今天 市场优胜劣汰 美容院业务范围的扩张和发展 让美容院对智能管理需求也越来越大 如 员工管理 产品管理 客户管理 订单管理 进销存管理 营销管理 报表管理等等 都向
  • 四、C语言进阶:宏定义和头文件

    4 宏定义和头文件 4 1 什么是宏定义 宏是用来表示一段代码的标识符 4 2 宏怎么用 三种用法 当作常量使用 当作函数使用 编译预处理 4 2 1 宏定义常量 预定义宏 ANSI C标准定义有些定义好的宏定义 称为预定义宏 这些宏定义以
  • 八数码深度优先搜索_程序员必知的十大基础实用算法之-DFS(深度优先搜索)...

    深度优先搜索 深度优先搜索是一种在开发爬虫早期使用较多的方法 它的目的是要达到被搜索结构的叶结点 即那些不包含任何超链的HTML文件 在一个HTML文件中 当一个超链被选择后 被链接的HTML文件将执行深度优先搜索 即在搜索其余的超链结果之
  • LoRa Mesh 自组网 采集器

    外观结构 分为主机跟从机 1个网络需要1个主机 技术参数和指标 电源 无线参数 有线参数 应用场景 无线抄表 实时监控 数据采集
  • 面向对象(OOP)的基本特征

    面向对象 OOP 的基本特征