1面向对象

news2024/9/29 9:28:10

基本概念

面向对象的基本概念有:对象、类、消息。

面向过程程序设计

在面向过程的结构化程序设计中,程序模块是由函数构成,函数将对数据处理的语句放在函数体内,完成特定的功能,数据则通过函数参数传递进入函数体。

面向对象程序设计

在面向对象的程序设计中,程序模块是由类构成的类是对逻辑上相关的函数与数据的封装,它是对问题的抽象描述。

面向对象的程序设计方法就是运用面向对象的观点来对现实世界中的各种问题进行抽象,然后用计算机程序来描述并解决该问题,这种描述和处理是通过类与对象实现的。

现实世界是本质上是由对象所组成,而不是由“各种过程”所组成。

软件开发的目的是为了解决现实世界中的问题,这些问题都是由对象所组成。面向对象的方法强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为软件系统中的对象。

类与对象是C++程序设计中最重要的概念。

对象是用来描述客观事物的一个实体(定义一个对象时,通常说明其包含的属性,操作和方法)。

类是集合,由一组具有相同属性和服务的对象组成。

对象

对象是一个包含属性,操作和方法的封装体,有名字,有唯一标识。一般用于描述现实中客观存在的事物。

对象具有静态特征和动态特征,静态特征是可以用数据来描述事物的特征,动态特征为对象所表现的行为或具有的功能。

对象由一组属性和对这组属性进行操作的一组服务构成。属性是用来描述对象静态特征的数据项。服务是用来描述对象动态特征(行为)的操作序列。

对象与对象之间通过消息(message)进行相互通信。

类是一个集合,由一组元素组成,这组元素具有相同属性和行为特征。(类由一组具有相同属性和行为特征的对象组成)。

比如:老虎 狮子 猫 都是动物

类是抽象的,对象是具体的,任何一个对象都是某一个类的具体实例。

对象是类的实例(元素)

类,定义相同点,定义对象的行为、状态。

方法,一个方法对应一个行为动作,一个类可以包含多个方法。

比如:动物 人类 都会吃饭 吃饭是一个行为动作

消息

消息是从一个对象(发送者)向另外一个或几个其它对象(接收者)发送信号,或由一个对象(发送者或调用者)调用另一个对象(接受者)的操作。

消息是对象之间在一次交互中所传递的信息。在面向对象的方法中把对象发出的服务请求称为消息。

消息有不同的实现方式,如函数调用、程序间的内部通信、各种事件的发生和响应等。

消息不能简单地等同于对象的成员函数调用,事实上两者之间是有区别的:消息是表示对象间信息传递的抽象概念,而对象的成员函数调用只是消息在程序设计中的具体表现形式之一。

软件开发

面向对象的软件开发就是将面向对象的思想应用于软件开发过程中的各个阶段。

过程:先从实际问题出发,用面向对象的方法分析用户需求,建立分析模型;再进行设计,建立系统的设计模型;最后编程实现,测试软件和维护。

面向对象的软件开发包括面向对象的分析、面向对象的设计、面向对象的编程、面向对象的测试和面向对象的维护

基本特征

面向对象的四大基本特征:抽象性,封装性,继承性,多态性。

1、抽象性

将具有相同属性和行为的一组对象的抽象为类。

面向对象的方法中的对象(object)是软件开发所涉及的问题域中一些事物的抽象,是一些属性、操作和方法的封装体。

通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类(class)。

2、封装

封装是把对象的属性和服务结合成一个独立的系统单位(即对象); 封装将尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口与外部发生联系; 封装可以有效地控制一个对象内部发生变化时对其它对象的影响; 封装能够通过对象接口简化对象的使用; 封装便于通过继承机制实现代码重用;

3、继承

继承是指特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承;

特殊类中不必重新定义已在它的一般类中定义过的属性和行为,自动地、隐含地拥有其一般类的所有属性与行为。

通常将一般类称为基类(base class)或父类(super class)

将特殊类称为派生类(derived class)或子类(subclass);

继承简化了人们对客观事物的认识和描述。采用继承机制之后,在定义特殊类时,只需要声明它是继承自哪个类,并增加它自己的特殊属性与行为,继承机制具有传递性,可以被一层一层的不断继承下去,实现代码重用,减轻程序开发工作的强度,提高程序开发的效率。

4、多态性

多态性是指在一般类中定义的属性或行为,被特殊类继承之后,具有不同的数据类型或表现出不同的行为,这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义,即具有继承关系的不同对象接收到同一消息时有不同的行为。

多态性可以为具有继承关系的不同类所形成的类族(具有继承关系的类的树状层次集合)提供统一的外部接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2176314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一练 2024.9.29(2)

目录 解题思路与代码实现 题目分析 一、解题策略 关键步骤: 二、代码实现 三、代码解析 四、复杂度分析 五、运行示例 示例1: 示例2: 六、总结 解题思路与代码实现 题目分析 这道题目要求我们找到字符串列表 strs 中的相似字符组…

Arch - 架构安全性_验证(Verification)

文章目录 OverView导图1. 引言:数据验证的重要性概述2. 数据验证的基本概念3. 数据验证的层次前端验证后端验证 4. 数据验证的标准做法5. 自定义校验注解6. 校验结果的处理7. 性能考虑与副作用8. 小结 OverView 即使只限定在“软件架构设计”这个语境下&#xff0c…

物理学基础精解【40】

文章目录 矢量积矢量积(又称叉积、外积)的几何意义一、面积表示二、垂直性三、方向性四、应用实例五、数学表达 矢量积(叉积)的坐标表示法矢量积的坐标表示法的几何意义矢量积的性质矢量积的应用 矢量积(又称叉积、外积…

Linux——k8s组件

kubernetes 使用1.31.1 版本搭建集群核心组件,选择flannel 网络插件为整体集群的运行提供网络通信功能。 flannel 网络插件 kube-flannel kube-flannel-ds-9fgml 1/1 Running 1 (18m ago) 2d21h kube-flannel kube-flannel-ds-ghwbq …

<<迷雾>> 第 3 章 怎样才能让机器做加法 示例电路

全加器示意图 info::操作说明 鼠标单击开关切换开合状态 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch03-01-full-adder.txt 原图 由3个全加器组成的3比特加法机 info::操作说明…

Linux——pod的调度

pod的调度 控制器: rc/rs 副本数量控制器 主要保证pod的数量符合管理员要求,并不会对pod进行额外的管理 以下三种控制器,本质上是服务控制器。具备以下特性: 副本数量的控制服务的滚动更新(更新pod)支持更新失…

基于springboot vue 投票系统设计与实现

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

基于51单片机的2路电压采集proteus仿真

地址:https://pan.baidu.com/s/1oNOJJv78ecfWZkdlMyhNVQ 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectron…

Linux:LCD驱动开发

目录 1.不同接口的LCD硬件操作原理 应用工程师眼中看到的LCD 1.1像素的颜色怎么表示 ​编辑 1.2怎么把颜色发给LCD 驱动工程师眼中看到的LCD 统一的LCD硬件模型 8080接口 TFTRGB接口 什么是MIPI Framebuffer驱动程序框架 怎么编写Framebuffer驱动框架 硬件LCD时序分析…

OpenAI全新多模态内容审核模型上线:基于 GPT-4o,可检测文本和图像

在数字时代,内容安全问题愈发受到重视。9月26日,OpenAI 正式推出了一款全新的多模态内容审核模型,名为 “omni-moderation-latest”。 该模型基于最新的 GPT-4o 技术,能够准确地识别检测有害文本图像。这一更新将为开发者提供强大…

Java | Leetcode Java题解之第445题两数相加II

题目&#xff1a; 题解&#xff1a; class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {Deque<Integer> stack1 new ArrayDeque<Integer>();Deque<Integer> stack2 new ArrayDeque<Integer>();while (l1 ! null) {stack1.…

AI Agent应用出路到底在哪?

1 Agent/Function Call 的定义 Overview of a LLM-powered autonomous agent system&#xff1a; Agent学会调用外部应用程序接口&#xff0c;以获取模型权重中缺失的额外信息&#xff08;预训练后通常难以更改&#xff09;&#xff0c;包括当前信息、代码执行能力、专有信息源…

《深度学习》OpenCV 角点检测、特征提取SIFT 原理及案例解析

目录 一、角点检测 1、什么是角点检测 2、检测流程 1&#xff09;输入图像 2&#xff09;图像预处理 3&#xff09;特征提取 4&#xff09;角点检测 5&#xff09;角点定位和标记 6&#xff09;角点筛选或后处理&#xff08;可选&#xff09; 7&#xff09;输出结果 3、邻域…

深度学习反向传播-过程举例

深度学习中&#xff0c;一般的参数更新方式都是梯度下降法&#xff0c;在使用梯度下降法时&#xff0c;涉及到梯度反向传播的过程&#xff0c;那么在反向传播过程中梯度到底是怎么传递的&#xff1f;结合自己最近的一点理解&#xff0c;下面举个例子简单说明&#xff01; 一、…

Qt开发技巧(九)去掉切换按钮,直接传样式文件,字体设置,QImage超强,巧用Qt的全局对象,信号槽断连,低量数据就用sqlite

继续讲一些Qt开发中的技巧操作&#xff1a; 1.去掉切换按钮 QTabWidget选项卡有个自动生成按钮切换选项卡的机制&#xff0c;有时候不想看到这个烦人的切换按钮&#xff0c;可以设置usesScrollButtons为假&#xff0c;其实QTabWidget的usesScrollButtons属性最终是应用到QTabWi…

衡石分析平台系统管理手册-功能配置之AI 助手集成嵌入指南

AI 助手集成嵌入指南​ 本文档将引导您通过几个简单的步骤&#xff0c;将 AI 助手集成或嵌入到您的系统中。HENGSHI SENSE AI 助手提供了多种集成方式&#xff0c;您可以通过 iframe、JS SDK 或 API 调用等方式将 AI 助手嵌入集成到您的系统中。 1. 通过 iframe 集成​ ifra…

老板最想要的20套模板!基于 VUE 国产开源 IoT 物联网 Web 可视化大屏设计器

如有需求&#xff0c;文末联系小编 Cola-Designer 是一个基于VUE开发&#xff0c;实现拖拽和配置方式生成数据大屏&#xff0c;提供丰富的可视化模板&#xff0c;满足客户业务监控、数据统计、风险预警、地理信息分析等多种业务的展示需求。Cola-Designer 帮助工程师通过图形化…

MySQL - 单表增删改

1. MySQL 概述 MySQL 是一种流行的开源关系型数据库管理系统 (DBMS)&#xff0c;广泛应用于互联网公司和企业开发中。它支持 SQL 语句操作数据&#xff0c;并提供多种版本供选择。 1.1 MySQL 安装和连接 社区版&#xff1a;免费版本&#xff0c;适合开发者使用。商业版&…

sizeof 和 strlen

一 . sizeof 关键字 这个是我们的老朋友了昂&#xff0c;经常都在使用&#xff0c;它是专门用来计算变量所占内存空间大小的&#xff0c;单位是字节&#xff0c;当然&#xff0c;如果我们的操作对象是类型的话&#xff0c;计算的就是类型所创建的变量所占内存的大小&#xff0…

【笔记】神领物流day1.1.13前后端部署【未完】

使用jenkins 前端部署 需要将前端开发的vue进行编译&#xff0c;发布成html&#xff0c;然后通过nginx进行访问&#xff0c;这个过程已经在Jenkins中配置&#xff0c;执行点击发布即可 网址栏输入神领TMS管理系统 (sl-express.com)即可看见启动成功 后端部署看linux 回到Jenki…