C语言的面向对象技术
引言:面向过程的C有效率高,代码紧凑的特点,在单片机嵌入式领域是C的主要阵地,while(1)+中断是其主要的开发模式,但是当系统复杂到一定程度,想要添加一个功能需要改动很多地方,耦合性太强;跟别人交流程序时对方根本理解不了,后台的while(1)中有的关键部分很容易被中断打断,我们只能不断的通过很多的“Disable_Inturrupt,Enble_Inturrput"补丁来解决,那么有没有好的解决办法呢:答案当然是有,且有多种方法。
方法一:上微操作系统:ucos/ ecos/ mbed/free rtos/qnx/linux等待,通过系统的任务调度实现组装式多任务开发和之间的耦合关系
方法二:利用C++开发:这类虽然在单片机嵌入式上可以实现,因为EDA、编译器、处理器内存和FLASH的增大价格的走低都提供了条件。但是比起C还是编译效率不高。
方法三:利用状态机思路,包括很多人自己研究车的架构或者QPc类的利用UML语言实现的状态机(以后文章总结),http://www.dzsc.com/data/html/2007-9-28/44546.html
UML+OOPC嵌入式C语言开发精讲 (高焕堂) http://www.jb51.net/books/464915.html
方法四:利用C的结构体封装(结构体指针、指针函数)的特性和架构分层的思想对实现进行抽象和封装,使其结构清晰,低耦合,但这需要较高的C语言功底和分析概况能力。面向对象的三大特性:封装、继承和多态。顶级存在是类和对象,具体是将数据和方法进行糅合。
参考文章1:https://wenku.baidu.com/view/3e608b7ff61fb7360a4c6537.html
参考David Hanson 的《C语言接口与实现:创建可重用软件的技术》
或者STM32中的GPIO初始化函数、Linux的开发的技巧就是这种体现。
C语言的面向对象技术的更多相关文章
- 《C#语言和数据库技术基础》单词必备
<C#语言和数据库技术基础> 第一章1..NET Framework 框架2.sharp 尖锐,强烈的3.application 应用程序4.devel ...
- 比较分析C++、Java、Python、R语言的面向对象特征,这些特征如何实现的?有什么相同点?
一门课的课后题答案,在这里备份一下: 面向对象程序设计语言 – 比较分析C++.Java.Python.R语言的面向对象特征,这些特征如何实现的?有什么相同点? C++ 语言的面向对象特征: 对象模 ...
- 用C语言实现面向对象的开发
C语言的对象化模型 面向对象的特征主要包括: .封装,隐藏内部实现 .继承,复用现有代码 .多态,改写对象行为 采用C语言实现的关键是如何运用C语言本身的特性来实现上述面向对象的特征. 1.1 封装 ...
- 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\
1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...
- 【UML】概述以及面向对象技术总结
导读:结束了软工文档后,就开始了UML的学习,不管学习什么,都要先从整体上去把握,然后再从细节上去分析理解.在视频的开头,就对UML进行了概述.然后接着讲了面向对象技术,用例图,类图和包图等.看着软工 ...
- 使用面向对象技术创建高级 Web 应用程序
作者: 出处: 使用面向对象技术创建高级 Web 应用程序 来源:开源中国社区 作者:oschina 最近,我面试了一位具有5年Web应用开发经验的软件开发人员.她有4年半的JavaScript编程经 ...
- 面向对象技术-原文转载自jingwhale
面向对象技术 --原文转载自jingwhale,文章底部附原文链接 对象是面向对象的程序设计的核心,它由描述状态的属性(变量)和用来实现对象行为的方法(函数)组成,完成了从数据模型到处理模型的结合与统 ...
- 使C语言实现面向对象的三个要素,你掌握了吗?
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
随机推荐
- FFmpeg big changes. ffmpeg 接口的一些改变
Big changes have been made from FFmpeg 0.5.1… Refer to http://cekirdek.pardus.org.tr/~ismail/ffmpeg- ...
- 简单实现php文件管理
如何能够利用PHP语言来进行空间中的文件管理,为我们带来良好的空间布局呢?今天我们就为大家介绍一种简便的PHP文件管理的实现方法. PHP预定义变量数组种类概览 PHP uploaded_files函 ...
- BZOJ-4488:最大公约数(GCD)
给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列{Al,Al+1...Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L,R) = (R-L+1) ...
- HDU2586(LCA应用:在带权树中求任意两点之间的距离)
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- HDU 1143 Tri Tiling 递归问题
将一个3*n的矩形用1*2的矩形填充,n为奇数时一定不能被填满,n*3%2==1 接下来处理这个问题我们要从简单的情况开始考虑,所谓递归就是要能将问题的规模不断减小,通过小问题的解决最后将复杂问题解决 ...
- windows install JDK&&JRE
重装系统后,安装的java环境没了,只能重装一下~~~~ 1.下载JDK 2.这里会安装两次,其中第一次为安装 JDK,第二次安装JRE,建议不要将这两个放在同一个文件夹. 3.配置环境变量 用鼠标右 ...
- pdf2swf 转换时报This file is too complex to render- SWF only supports 65536 shapes at once
ERROR ID Table overflow ERROR This file is too complex to render- SWF only supports 65536 shapes ...
- CodeForces 349B Color the Fence (DP)
题意:给出1~9数字对应的费用以及一定的费用,让你输出所选的数字所能组合出的最大的数值. 析:DP,和01背包差不多的,dp[i] 表示费用最大为 i 时,最多多少位,然后再用两个数组,一个记录路径, ...
- Lombok减少代码冗余量
Eclipse需要安装,具体用法见: https://projectlombok.org/ 用maven project的朋友,一定要记得安装到IED里面才能使用,不然无法直接使用哦 从此以后和get ...
- HDU - 3410 Passing the Message 单调递减栈
Passing the Message What a sunny day! Let’s go picnic and have barbecue! Today, all kids in “Sun Flo ...