C++之面向程序设计浅析

结构化程序设计与面向对象浅析 结构化程序设计与面向对象浅析,包括简要定义以及优缺点对比 阅读详情

1.1什么是面向对象程序设计

面向过程的程序设计思想的核心是功能的分解。将数据结构和过程分离,着重点在过程,设计者首先考虑如何将功能分解,在每一个过程中安排程序的操作序列。缺点之一,当程序的数据结构需要变更的时候,需要修改与之相关的缩影模块,造成了可重用性差,维护代价高。

面向对象程序设计中,着重点在被操作的数据而不是实现这些操作的过程。

程序=对象+消息

基本元素是对象,主要结构特点:1)程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定他们之间传递消息的规律;2)程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作;3)类由继承关系产生相互之间的关系。

 

1.2对象和类

1.2.1概念

人是一个“类”,类是具有相同的数据和相同的操作的一组对象的集合。

杨也或者刘恩平是一个实实在在的人,是人这个类的一个实例,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象=属性+方法。可以理解为属性是类中的数据成员,而方法是成员函数。

!类是一种新型的数据结构,只在源程序的代码中出现,并不会在一个正在运行的程序中出现,即类只在编译时存在;而对象作为类的实例在运行的程序中出现,并占有内存空间,程序的计算任务有对象完成。

 

1.2.2对象的交互

一个对象向另一个对象发出的请求被称为消息。

属于一个类的对象具有相同的行为,当某个行为作用在对象时,即对象执行了一个方法。

消息的三个性质:1)同一个对象可以接收不同形式的多个消息,做出不同的响应;2)相同形式的消息可以传递给不同的对象,所作出的响应式可以不同的;3)接收对象对消息的响应并不是必须的,对象可以响应消息当然也可以不响应。

 

1.2.3类的确定和划分

面向对象程序设计的难点:类的确定和划分。按照实际情况合理划分类。

 

1.3数据的抽象和封装

面向对象系统突出特点:抽象与封装、继承和多态。

 

1.3.1现实世界的抽象和封装

封装:录音机有很多的按键,我们通过按键操作录音机,而其内部电路的细节对用户是隐蔽的。

抽象:录音机的使用说明书告诉我们让机器播放或者是停止。抽象出来的是做什么,而不关心怎么去做。

 

1.3.2基本概念

数据的抽象通过对数据实例的分析,抽取其共同性质的的结果。

数据的封装则是隐藏了抽象的内部实现细节的结果。

抽象和封装时互补的,重要的是抽象先于封装。

1)对象具有一个清楚的边界,对象的属性和方法被封装在边界内;

2)具有一个描述该对象与其他对象之间进行交互的接口;

3)对象的内部代码和数据应该受到保护,不被轻易修改。

 

1.3.3对象的特性

1)封装性

2)模块的独立性

3)动态链接性(通过消息机制)

 

1.4继承性

分类:

单继承和多继承(从继承源划分)

取代继承、包含继承、受限继承、特化继承等(内容划分)

类之间继承关系的几个特性:1)类间具有共享特性;2)类间具有差别或者是新增部分3)类间具有层次结构。

继承机制的引入并不影响对象的封装性。

 

1.5多态性

多态性是指不同的对象收到相同的消息时产生多种不同的行为方式。

C++支持两种多态性,编译时多态(通过重载来实现)和运行时多态(通过虚函数来实现)。

重载:函数和运算符重载。

Class a{

Public:

Void print(int i);

Void print(float f);

Void print(const  char *c);

//.....

};

目的:为了更好的表达行为共享,将相似的操作划分在一起

Java语言基础知识_1.1:Java与面向对象程序设计简介 目录 1.0 导学 1.1 Java与面向对象程序设计简介 1.2 基本数据类型与表达式 1.3 数组 1.4 算法的流程控制 1.5 第一章小结 1.0 导学 1)构建环境 JDK安装网站 Eclipse安装网站 构建JAVA开发环境。其中JDK是JAVA本地编译和解释的环境,而Eclipse则是使得开发效率更加便捷的编译环节。 注:下载时使用JAVA E... 阅读详情

相关推荐

[STM32H750]HAL库下FMC驱动正点原子MCU屏的移植与优化

本文详细介绍了在STM32H750平台上使用HAL库移植与优化正点原子MCU屏幕驱动的完整过程。重点解析了FMC硬件配置、Cache一致性处理、精确延时实现等关键技术难点,提供了实用的移植方案和性能优化技巧,帮助开发者高效解决屏幕显示问题。

rock5的博客 286

python中面向对象的缺点_Python 面向对象之初识面向对象

面向对象关于面向过程编程与面向对象编程的优缺点:面向过程编程:优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。面向对象编程:优点是:解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。缺点:可控性差,无法向面向过程的程序设计流水线式的可以很精准的...

weixin_39970064的博客 268

用《Flappy Bird》游戏带你搞懂强化学习:从Q-learning到DQN的保姆级实战

本文通过《Flappy Bird》游戏实战,详细讲解了从Q-learning到DQN的强化学习技术。从环境搭建、Q表格构建到深度Q网络(DQN)的实现,逐步展示如何训练AI自主玩游戏。文章包含代码示例、训练技巧和性能优化方法,帮助读者深入理解强化学习的核心概念和应用。

weixin_42526415的博客 347

面向过程编程及各种表达式

面向过程编程: 核心是’过程’二字,过程 指的是一种解决问题的步骤,即先干什么再敢什么 基于该编程思想编写程序,就好比在设计一条工厂流水线,一种机械式的思维方式 -优点:将复杂的问题流程化,进而简单化 -缺点:若修改当前程序设计的某一部分,会导致其他部分同时需要修改 牵一发而动全身,可扩展性差 三元表达式:可以将if…else…分支编成一行。 语法: 条件成立,返回左边的值 if 判断条件 el...

挽不了风丶的博客 421

K型热电偶分度表读取方法

K型热电偶分度表读取方法

guaizaiguaizai的博客 5890

LTE随机接入实战:如何通过PRACH前导码优化小区覆盖半径(附计算公式)

本文深入探讨了LTE网络中PRACH前导码格式对小区覆盖半径的关键影响。通过解析不同前导码格式(如Format 0-3)的物理参数与覆盖能力,提供了核心计算公式与实战Python脚本,指导网络工程师根据覆盖需求、环境多径和容量等因素,科学选择前导码格式以优化边缘用户接入成功率,实现精准的网络规划与优化。

qq_27496129的博客 573

面向过程的程序设计

概念: 核心是“过程”二字,“过程”指的是解决问题的步骤,即先干什么再干什么,基于面向过程设计程序就好比在设计一条流水线,是一种机械式的思维方式。若程序一开始是要着手解决一个打的问题,面向过程的基本设计思路就是把这个大的问题分解成很多个小问题或子过程,这些子过程再执行的过程中继续分解,知道小问题足够简单到可以在一个小步骤范围内解决。 优点: 复杂的问题流程化,进而简单化(一个复杂的问题,分成一个个小的步骤去实现,是仙女小的) ...

Time_xiaoxia的博客 1524

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 249

过程式设计和面向对象设计的比较(组图)

本文比较了过程式设计和面向对象设计,主要论述了过程式设计在程序开发中的一些问题及面向对象设计是如何解决这些问题的。    过程式设计    总的来说,过程式的程序设计是一种自上而下的设计方法,设计者用一个main函数概括出整个应用程序需要做的事,而main函数由对一系列子函数的调用组成。对于main中的每一个子函数,都又可以再被精炼成更小的函数。重复这个过程,就可以完成一个过程式的设计。其特征是以

JAVA|J2EE|J2ME|JDK|JSP 693

Qt 5.9.1 32位下,手把手搞定周立功CAN二次开发库的加载与配置(含常见错误排查)

本文详细介绍了在Qt 5.9.1 32位环境下配置周立功CAN二次开发库的完整流程,包括环境准备、项目配置、常见错误排查及性能优化建议。特别针对MinGW 32bit环境,提供了.pro文件的精准配置和DLL部署策略,帮助开发者快速解决库文件匹配、编译报错和运行时问题,实现高效的CAN总线通信开发。

weixin_28717431的博客 356

达梦数据库集群部署(主备)

达梦数据库集群部署(主备)

m0_71845127的博客 1461

1.面向过程的程序设计&面向对象的程序设计

面向过程的程序设计 核心是“过程”二字,“过程”指的是解决问题的步骤,即先干什么再干什么…,基于面向过程设计程序就好比在设计一条流水线,是一种机械式的思维方式。若程序一开始是要着手解决一个大的问题,面向过程的基本设计思路就是把这个大的问题分解成很多个小问题或子过程,这些子过程在执行的过程中继续分解,直到小问题足够简单到可以在一个小步骤范围内解决。 优点: 复杂的问题流程化,进而简单化(一个复杂的问...

jianpeng的工程笔记 2280

KingSCADA3.8保姆级安装教程

大家好,我是雷工!最近开始学习KingSCADA,今天这篇详细记录安装KingSCADA3.8的过程。首先下载需要的安装版本,此处以从官网下载的最新版本KingSCADA3.8为例,双击:Setup.exe;

做有价值的事,积累有价值的笔记! 1万+

浅析何谓“面向对象的程序设计”

C++面向对象程序设计1. 程序设计的分类2. 面向对象程序设计的特点3. C++中的“类”编写实例关于类的用法 1. 程序设计的分类 关于程序设计,分为两类,面向对象的程序设计与结构化程序设计。 直接来说,在结构化程序设计中,程序=数据结构+算法。 程序由全局变量以及众多相互调用的函数组成,各个函数之间可以互相调用,各个函数也可以使用各个(全局)变量,如下图所示。 这种编程方法,在程序较为短小时还好,当工程规模愈发庞大,就会变得难以理解,错综复杂的关系也会使得程序扩充与重用性差、难以查错、没有“封装”和“

胖虎的博客 474

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTLG-01-12:面向过程和面向对象程序设计浅析

面向过程和面向对象程序设计基本概念浅析

cdlislxjt的博客 1143

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

c++程序设计 思想与方法第三版_浅析基于C++的程序设计

1.引言 在计算机课程中,“C++程序设计是计算机专业的一门必修基础课,该语言以其高效而又实用的特性:既可以进行过程化程序设计,又可进行面向对象的程序设计,因此逐步成为各高校程序设计课程中的主流。C++语言既是进行软件开发的直接工具,又是“数据结构”、“操作系统”、“编译原理”、等课程的先修课程,因此,在整个教学体系中占据十分重要的地位。 根据本人自身教学经验和讲授过程中出现的问题,在此进行分析和...

weixin_39768444的博客 509

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【JavaScript执行原理浅析】程序设计语言及其翻译

程序设计语言 机器语言(Machine Language)与汇编语言(Assemble Language) 0、 1代码与助记符:更接近于计算机硬件指令系统的工作 高级语言(High Level Language) 其表示方法更接近于待解问题的表示方法 定义数据、描述运算、控制流程、传输数据 如: C、 FORTRAN、 PASCAL、 C++、 JAVA、 SQL(数据定义、数据操作) ...

kiku 575

浅析面向协议编程

从编程范式讲起 或许你经常听到诸如面向对象编程、面向过程编程、面向协议编程、函数式编程这些词,心中也不免疑惑,这些词都是些啥? 编程范式 on wiki 相比于本文要介绍的面向协议编程,面向对象编程的名声似乎更响。面向对象由于C++和java的流行,成为近二十年来最为流行的**编程范式。其他编程范式还有比面向对象更早的面向过程编程**、指令编程,以及新兴的以Haskell为代表的**函数式编程和苹...

weixin_34038652的博客 1794

浅析C++中引用与指针

浅析C++中引用与指针

fkuner的博客 200

浅析C++继承与派生

测试环境: Target: x86_64-linux-gnu gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2.1) 定义 要分析继承,首先当然要知道什么是继承:继承是面向对象程旭设计中使代码可以复用的最重要的手段,它允许程序员在原有类特性的基础上进行扩展,增加功能。这样产生的新类,就叫做派生类(子类)。继承呈现了面向对象程

Fireplusplus的博客 1万+

C++ 宏、范型和RTTI 浅析

RTTI(Run-Time Type Identification)是面向对象程序设计中一种重要的技术。现行的C++标准对RTTI已经有了明确的支持。不过在某些情况下出于特殊的开发需要,我们需要自己编码来实现。本文介绍了一些关于RTTI的基础知识及其原理和实现,并分析比较三者是线上的差异与联系。

稚枭天卓 1542

浅析C与C#

C++是向下完全兼容C的,C++与C相比最显著的变化就是增加了面向对象的成分,也就是增加了类的概念,因为它的增加使软件开发可以比较容易地描述人类的思维,使得软件的开发和维护变得相对简单,直接降低了软件的成本,但因为C++是面向对象的语言,这本身就制约它的速度,所以C++适合开发那些大型项目,现代的大部分语言都或多或少的借鉴了C++和C的某些特性。C是完全面向过程的程序设计语言,而C++可认为是半个面向对象,JAVA从C++发展而来,吸取了C++精华,C#更是JAVA的超级版,C#是完全面向对象的。

2509_93935796的博客 1617

C++继承浅析

面向对象程序设计中最重要的一个概念就是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。 当创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,又称为父类,新建的类称为派生类,又称为子类。 一、派生类的定义格式和声明:class Base { p

Amber的博客 337

浅析C++中static关键字

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 一、面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#i nclude <...

weixin_30648587的博客 105

JAVA和C++区别浅析

JAVA和C++区别浅析    JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,    而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,

peng521321的专栏 286

浅析程序设计语言

从类型检查方面来划分         编译时做类型检查:C,C++,Java,Go…(遇到可能出错的地方,尽量把这些出错的地方前移,让程序在编译时就保存,使程序更加健壮,变量的类型不变)         运行时做类型检查:Python,Perl,JavaScript,Ruby(运行的过程中才可以知道每个变量的具体类型,变量在运行过程中可以改变类型) 从运行/编译场景来划分         编译为机...

qq_37117521的博客 270
上一篇: C++之函数简介
下一篇: C++之多态
Shicuf
博客等级 码龄16年 11粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值