文章目录

  • 认识对象
    • 自然界的对象( 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)来表达对象与
类之间的关系。例如:

  1. 月亮是一个星球。
  2. 嫦娥是一位(个)美丽的神。
  3. 毕加素是一个艺术家
  4. 张大千是一个画家。
  5. 贝多芬是一个音乐家。

所以“月球”是对象,属于“星球”类的一份子。毕加索是对象,艺术家是类,同样地,画家也是类,其中画家是艺术家群体中的小群体(部分集合)。毕加索和张大千同属于“画
家”类,所以具有共同特点一一精于美术绘画

类的用途:描述对象的共同特点

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语言开发精讲-认识对象相关推荐

  1. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言

    分享本文,介绍下更接近硬件底层的C语言与汇编,解释 CPU 如何执行代码. 高级语言与低级语言 学习编程其实就是学习与计算机交流的语言.因为计算机不理解人类语言,通过编译器把人类写的代码转成二进制代码 ...

  2. uml+oopc嵌入式c语言开发精讲_新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?...

    来源:嵌入式时代@头条号 在2000年前后,嵌入式软件工程师有着一套非常具体的技能,他们通常是电气工程师,不仅了解底层硬件的工作原理,还可以在底层编写汇编代码或者C语言代码,以使系统满足实时需求.嵌入 ...

  3. uml+oopc嵌入式c语言开发精讲_当前火爆的嵌入式领域,为什么选择C语言作为开发语言?了解一下...

    C语言和嵌入式C编程有什么区别?其区别在于嵌入式的C语言是跑在嵌入式的开发板上的,CPU和电脑不一样,所以编译器也是不一样的,生成的可执行程序也是不一样的.选择嵌入式开发语言归结于嵌入式系统开发的特点 ...

  4. 嵌入式C语言数据结构精讲-曹国辉-专题视频课程

    嵌入式C语言数据结构精讲-236人已学习 课程介绍         系统学习嵌入式开发中常用的数据结构知识,包括顺序表,链表,栈和队列. 包括理论讲解和代码实现,配套课件和源码资料齐全,代码全部采用C ...

  5. 《嵌入式设备驱动开发精解》——导读

    前言 嵌入式设备驱动开发精解 本书的编写主要是针对从事嵌入式软件开发人员.本书的内容主要涵盖ARM CPU以及各种常用外部设备驱动开发的方方面面,包括各种硬件接口.硬件接口协议说明以及各种外设的使用及 ...

  6. 视频教程-基于Java开发精讲支付宝SDK-Java

    基于Java开发精讲支付宝SDK 具有多年互联网大型系统开发经验,曾带领团队完成公安业务系统.某互联网企业B2C项目,并具有5年讲师经验,授课风格深入浅出. 谢少华 ¥12.00 立即订阅 扫码下载「 ...

  7. 全国计算机二级考试c语言指针,全国计算机二级考试C语言 指针精讲课件.ppt

    全国计算机二级考试C语言 指针精讲课件 第七章:指 针;第一节:指针概述;如:执行以下说明语句后: int a=3,b=4; float c=4.5,d=8.6; char e='x',f='y';其 ...

  8. 2022计算机全程:C语言程序设计精讲

    01.第一章C语言的概述.mp4     大小:152.79 M 02.第二章数据类型.运算符及表达式(一).mp4     大小:114.09 M 03.第二章数据类型.运算符及表达式(二).mp4 ...

  9. PHP实例开发精讲视频课程-张双老师-张双-专题视频课程

    PHP实例开发精讲视频课程-张双老师-2069人已学习 课程介绍         本课程所包含知识模块如下: 1.PHP的基本语法: 2.PHP操作mysql数据库: 3.数组及其处理函数: 4.个人 ...

最新文章

  1. Nginx 的recv() failed 错误解决一例
  2. loj 300 [CTSC2017]吉夫特 【Lucas定理 + 子集dp】
  3. 从零点五开始用Unity做半个2D战棋小游戏(八)
  4. MATLAB数字图像处理学习笔记
  5. leetcode 551. 学生出勤记录 I(Java版)
  6. 复习深入笔记01:对象/可变与不可变类型/字符编码/闭包
  7. Xshell远程访问工具及epel-release包安装
  8. 测试使用navicat工具将MySQL格式SQL文件导入到MogDB数据库
  9. 推特股东起诉马斯克逾期披露推特持股信息
  10. 怎么用html做随机颜色,JavaScript 实现网站标签随机颜色的方法
  11. 计算机管理如何格式化u盘,优盘格式化,教您如何格式化u盘
  12. python gui与pyside
  13. Freeradius安装和配置
  14. Python基础(Day 2)(数值 字符串 布尔 列表)
  15. 五级流水线CPU之低功耗设计 (一) :Bypassing(旁路)
  16. 小菜鸟szx的测试博文
  17. 怎么知道本台计算机的用户名和密码,访问其它电脑时“开始-运行-\输入要连接的电脑的IP,用户名和密码输入什么?...
  18. java微信公众号自动回复文字加图片
  19. oracle—ebs_采购功能点操作手册,oracle—EBS_采購功能点操作手册.doc
  20. 清华大学计算机学院曹伦郗,四川文理第一名填报北大 高分“学霸”们最后选了啥专业...

热门文章

  1. 【原创】Syncthing搭建自己的中继服务和发现服务
  2. 30天自制操作系统 Day3
  3. Java源码学习笔记之lang包——包装类Integer.class
  4. 转:GIS不是花瓶——由地震引起的思考
  5. 【操作系统】操作系统知识点整理;C++ 实现线程池与windows 线程池的使用;
  6. edge浏览器 您的flash可能被禁用或者版本过低
  7. 我最喜欢的一位女明星哦!
  8. ImageJ工具的使用
  9. WebAPI_AutoFac(依赖注入)的简单使用
  10. 登录IE时常出现闪退:Internet Explorert停止工作解决办法