【读书笔记】UML+OOPC嵌入式C语言开发精讲-认识对象
文章目录
- 认识对象
- 自然界的对象( Natural Object)
- 软件对象(Software Object)
- 对象与函数
- 对象与类
- 构造器(Constructor)
认识对象
自然界的对象( Natural Object)
对个人而言,所认识的东西,皆是“对象”(object)。
一旦认识某样东西,就能说出其特点,并与别的对象进行比较。
其特点包括:
对象的特征或属性( Attribute)
对象的行为( Behavior)
了解东西的特征和行为,就表示对该事物有些认识和概念( Concepts)了。尽管有些东西并不存在,但只要对其有概念,就是对象了。例如,龙、凤凰、月中白兔、嫦娥等皆是我们熟悉的对象。但对于未听过嫦娥奔月故事的外国人来说,嫦娥并非对象。
软件对象(Software Object)
牛津字典对“抽象”( Abstraction)的定义是,“人们脑海中对重点与细节的区分行动”(The Act of Separating in Thought)。抽象的主要目的有:
掌握重点( Essential),避免被复杂的细节( Detail)所迷惑。例如,准备联考令考生千头万绪,“重点复习”令其事半功倍。
舍异求同,找出对象间的共同性。例如,动物和植物有所区别也有相同处,若不计较其相异处,可发现它们的共同点一活生生的,因此属于相同种类一一生物
软件对象 = 数据 + 函数
数据表达自然界对象的特征,函数表达自然界对象的行为。
对象与函数
传统程序直接由函数或子程序所组成,OOP软件则将函数纳入对象中,再由对象组成庞大程序。函数隶属于对象,与对象中的数据密切联系在一起。软件的建造理念和高楼大厦的建造观念是一致的。函数的角色为:
- 从对象本身观之,函数表达了对象的动态行为。
- 从整个系统观之,函数是支持中层模块(即对象)的支架。
在“泪眼问花花不语,乱红飞过秋千去”的例子中,女主角的行为有“流泪”(Cry)及问”(Ask),花的行为有“语”(Say)和“飞”(Fly),秋千的行为有“摆荡”( Swing)。
以对象来组织这些函数。
对象与类
类是群体(或集合),而对象是类中的一份子。人们常用“是一个”(is a)来表达对象与
类之间的关系。例如:
- 月亮是一个星球。
- 嫦娥是一位(个)美丽的神。
- 毕加素是一个艺术家
- 张大千是一个画家。
- 贝多芬是一个音乐家。
所以“月球”是对象,属于“星球”类的一份子。毕加索是对象,艺术家是类,同样地,画家也是类,其中画家是艺术家群体中的小群体(部分集合)。毕加索和张大千同属于“画
家”类,所以具有共同特点一一精于美术绘画
类的用途:描述对象的共同特点
C语言已定义的 double、int等数据类型,其变量含有+、-、*、/等基本运算(行为),凡 double的变量皆能做这些运算。同理,如果我们创造了新的数据类型(即类)一花,
且定义如下:
CLASS(花)
{char name[10];int clolr;void fly();void say(); };
这就是花类的定义,说明了
花类内的对象(即“花”数据类型的变量)皆具两项共同特征:name和 color
类的目的是创造新数据类型。为了描述自然界的万事万物,必须有各式各样的数据类型,才能充分贴切地表达自然界的静态与动态之美。C语言只提供有限几种基本数据类型,欲表达人类社会或大自然的景象,实在不够。
然而C语言加上“类”( Class)概念之后,就很容易解决这个问题了。它让程序员定义与创造自己心爱的数据类型来描述心中所想的、眼睛所看到的任何自然界景象
在C语言里,int、 double及char等常被称为“基本数据类型"( Fundamental Data Type)借类而创造出来的数据类型则被称为“抽象数据类型”( Abstract Data_Type)。“抽象”意味着类只描述自然事物的重要( Essential)特征和行为,而忽略不重要的细节。于是,有个不成
文的规则是:
由基本数据类型所声明的变量,称为变量
由抽象数据类型(类)所声明的变量,称为对象。
此规则的目的是让已受古典程序熏陶的C程序员,能区别C与OOPC的不同。如果您对软件的认识才刚起步,宜把变量和对象视为同义词,这是OOP的本质,只因C++从C演变而来,担负了新旧传承的任务,才加以区分的。
类是一群具有共同重要特性的对象。类的定义就是说明这群对象具有什么样的重要特性。特性包括对象的特征及行为。
软件中的对象用数据来表达特征,用函数来表达行为。
因此,类的定义就是说明软件中的对象,应含哪些数据及哪些函数。定义类时,应考虑:
- 想描述哪些对象
- 对象有哪些特征
构造器(Constructor)
在OOPC程序中,设计类是一件重要工作,其目的是借之产生对象。其中有个幕后工作者,它依照类的定义产生对象,可称之为“对象之母”。这个幕后工作者就是“构造器”
( Constructor)函数。它的主要功能为,依照类的定义分配内存空间给所声明的对象。在lw_ oopc.h头文件里已经定义了构造器宏,可以直接使用。
【读书笔记】UML+OOPC嵌入式C语言开发精讲-认识对象相关推荐
- uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言
分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...
- uml+oopc嵌入式c语言开发精讲_新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?...
来源:嵌入式时代@头条号 在2000年前后,嵌入式软件工程师有着一套非常具体的技能,他们通常是电气工程师,不仅了解底层硬件的工作原理,还可以在底层编写汇编代码或者C语言代码,以使系统满足实时需求.嵌入 ...
- uml+oopc嵌入式c语言开发精讲_当前火爆的嵌入式领域,为什么选择C语言作为开发语言?了解一下...
C语言和嵌入式C编程有什么区别?其区别在于嵌入式的C语言是跑在嵌入式的开发板上的,CPU和电脑不一样,所以编译器也是不一样的,生成的可执行程序也是不一样的.选择嵌入式开发语言归结于嵌入式系统开发的特点 ...
- 嵌入式C语言数据结构精讲-曹国辉-专题视频课程
嵌入式C语言数据结构精讲-236人已学习 课程介绍 系统学习嵌入式开发中常用的数据结构知识,包括顺序表,链表,栈和队列. 包括理论讲解和代码实现,配套课件和源码资料齐全,代码全部采用C ...
- 《嵌入式设备驱动开发精解》——导读
前言 嵌入式设备驱动开发精解 本书的编写主要是针对从事嵌入式软件开发人员.本书的内容主要涵盖ARM CPU以及各种常用外部设备驱动开发的方方面面,包括各种硬件接口.硬件接口协议说明以及各种外设的使用及 ...
- 视频教程-基于Java开发精讲支付宝SDK-Java
基于Java开发精讲支付宝SDK 具有多年互联网大型系统开发经验,曾带领团队完成公安业务系统.某互联网企业B2C项目,并具有5年讲师经验,授课风格深入浅出. 谢少华 ¥12.00 立即订阅 扫码下载「 ...
- 全国计算机二级考试c语言指针,全国计算机二级考试C语言 指针精讲课件.ppt
全国计算机二级考试C语言 指针精讲课件 第七章:指 针;第一节:指针概述;如:执行以下说明语句后: int a=3,b=4; float c=4.5,d=8.6; char e='x',f='y';其 ...
- 2022计算机全程:C语言程序设计精讲
01.第一章C语言的概述.mp4 大小:152.79 M 02.第二章数据类型.运算符及表达式(一).mp4 大小:114.09 M 03.第二章数据类型.运算符及表达式(二).mp4 ...
- PHP实例开发精讲视频课程-张双老师-张双-专题视频课程
PHP实例开发精讲视频课程-张双老师-2069人已学习 课程介绍 本课程所包含知识模块如下: 1.PHP的基本语法: 2.PHP操作mysql数据库: 3.数组及其处理函数: 4.个人 ...
最新文章
- Nginx 的recv() failed 错误解决一例
- loj 300 [CTSC2017]吉夫特 【Lucas定理 + 子集dp】
- 从零点五开始用Unity做半个2D战棋小游戏(八)
- MATLAB数字图像处理学习笔记
- leetcode 551. 学生出勤记录 I(Java版)
- 复习深入笔记01:对象/可变与不可变类型/字符编码/闭包
- Xshell远程访问工具及epel-release包安装
- 测试使用navicat工具将MySQL格式SQL文件导入到MogDB数据库
- 推特股东起诉马斯克逾期披露推特持股信息
- 怎么用html做随机颜色,JavaScript 实现网站标签随机颜色的方法
- 计算机管理如何格式化u盘,优盘格式化,教您如何格式化u盘
- python gui与pyside
- Freeradius安装和配置
- Python基础(Day 2)(数值 字符串 布尔 列表)
- 五级流水线CPU之低功耗设计 (一) :Bypassing(旁路)
- 小菜鸟szx的测试博文
- 怎么知道本台计算机的用户名和密码,访问其它电脑时“开始-运行-\输入要连接的电脑的IP,用户名和密码输入什么?...
- java微信公众号自动回复文字加图片
- oracle—ebs_采购功能点操作手册,oracle—EBS_采購功能点操作手册.doc
- 清华大学计算机学院曹伦郗,四川文理第一名填报北大 高分“学霸”们最后选了啥专业...