【读书笔记】UML+OOPC嵌入式C语言开发精讲-认识对象

认识对象

自然界的对象( 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头文件里已经定义了构造器宏,可以直接使用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值