C语言中利用宏进行面向对象(OOP)的操作

/*************   lw_oopc.h  *******************/

# include"malloc.h"
# ifndef LOOPC_H
//假如没有定义 LOOPC_H 那么就执行 #define 到 #endif 之间的指令 定义了 就跳过
# define LOOPC_H

# define PI
3.14156

# define CLASS(type)/
typedef
struct type type ;/
struct type

# define CTOR(type) /
void* type## New()///## 是告诉编译器 type 是一个 变量
{ /
struct type *t;/
t
= (struct type*)malloc(sizeof(struct type));

# define CTOR2(type ,type2)/
void* type2##New()/
{ /
struct type *t;/
t
= (struct type*)malloc(sizeof(struct type));

# define END_CTOR
return (void*)t; };
# define FUNCTION_SETTING(f1,f2) t
->f1 = f2;
# define IMPLEMENTS(type)
struct type type
# define INTERFACE(type)
struct type
#endif


附注:

物件導向ANSI-C

 

---- 適用於與ANSI-C相容的開發環境,

      例如TurboC, VC++, DEV-C++等。

---- Windows平台的應用程式為例。

 

 

高煥堂 

 

  

  著作權說明:

1.          lw_oopc.h巨集檔內容著財權為本書作者:高煥堂 所擁有。

2.          任何營利性、商業性使用,必須先取得本書作者的書面同意。

Full copyright of lw_oopc.h content lies with the Author, Huantang Kao(高煥堂). No part of it may be reproduced, in any form or by any means, without permission in writing by the Author.(詳細請閱第28)

 

 

 

                                 序言

   

   

       近年來,嵌入式(Embedded)軟體應用愈來愈廣,如數位家電、手機、數字化汽車等。而嵌入式軟開發所使用的語言中,C語言仍約佔80%之多,其中ANSI-C在業界佔有極重要的地位。由於嵌入式軟體應用愈來愈廣,軟體品質大大影響了數位產品的穩定和可靠度,因之如何提升ANSI-C程式的簡潔性、易讀性及重覆使用性,乃是當今軟體業的熱門話題。例如世界知名的麥肯錫(McKinsey)顧問公司,在2006年的報告("Getting better software to manufactured products")呼籲軟體業積極提昇其系統分析及設計的能量,才能解決軟體含量愈來愈多的數位產品的信賴度問題。

如何解決上述問題呢?其方向已經很清楚了,就是:讓C語言與物件導向程式設計(Object-Oriented Programming,簡稱OOP)技術結合。就像當今的其他主流電腦語言(C#Java)一般。一旦C語言與物件導向技術結合了,也能進一步與UML相結合,更提昇系統分析與設計的品質了。因此筆者撰寫本書,期望陪伴眾多C程式人員更上層樓,強化系統分析及設計的技能,迎接日益廣大的嵌入式應用市場。

      也許你會問到:在1986年時,貝爾(Bell)實驗室已經將C語言與物件導向技術結合成為C++語言了,為何還需要OOPC呢?其答案是:C++語言有些貪心,將整套的物件導向技術涵括進去,導致C++的效率遠比單純C語言慢了許多。由於嵌入式軟體所處的硬體資源大都極為有限,對程式執行效率斤斤計較;所以在今天嵌入式軟體開發上,使用最廣的仍是C語言。

      本書所介紹的物件導向ANSI-C語言並不是一個新的語言,它只運用單純ANSI-C語言的巨集(Macro)技巧,實現了物件導向的基本技術,讓系統分析與設計階段的UML模型能與C程式緊密對應,以提升C程式的品質。此外,這些巨集在編譯階段就被翻譯為單純C程式碼了,仍然保持其單純C的高效率,符合嵌入式軟體環境之需要。本書由淺入深分為四篇(18),希望本書能陪伴你馳聘於嵌入式應用領域之中,並鴻圖大展。

 

        高煥堂  謹識於 2008年元月

        
 
 
 

目錄

 

第一篇 認識 ANSI-C 語言
 

1  嵌入式時代最划算策略, 7

1.1  迎接高品質的嵌入式軟體時代

1.2  基於TurboC 2.0環境的評量

1.3  基於Visual C++ 環境的評量

1.4  LW_OOPC C++ 的比較與評量
 

2  認識物件導向ANSI-C, 29

2.1  簡介ANSI-C語言

2.2  簡介LW_OOPC:替ANSI-C黃袍加身

2.3  ANSI-C 的基本組成:函數與變數
 

3   C的基本資料型態, 47

3.1 簡介資料型態

3.2 整數型態

3.3 無正負號整數

3.4 整數的輸出格式

3.5 字元型態

3.6 浮點數型態
 

4   C的資料運算, 59

4.1 簡介資料運算

4.2 算術與指定運算

4.3 關係運算

4.4 邏輯運算

4.5 算術指定運算

4.6 1 及減1 運算

4.7 位址運算

4.8 逐位元運算
 

5 C的決策與迴圈, 71

5.1 邏輯運算與決策

5.2 巢狀 if 指令

5.3 多選1 的抉擇

5.4  while 迴圈

5.5  for迴圈

5.6  do 迴圈
 

6 C的指標, 81

6.1  指標是什麼 ?

6.2  傳遞指標參數

6.3  函數回傳指標

6.4  函數指標
 

7 C的結構(struct), 89

7.1  什麼是結構(struct)

7.2  結構的指定運算

7.3  結構指標

7.4  動態記憶體分配

7.5  組合
 

8C的儲存種類, 97

8.1  變數的儲存種類

8.2  靜態函數

8.3  extern 種類
 

9 C的陣列及字串, 103

9.1  陣列的意義

9.2  一維陣列

9.3  一維陣列與指標

9.4  二維陣列與多維陣列

9.5  二維陣列與指標

9.6  給予陣列初值

9.7  使用字串
 

10 C前置處理程式, 119

10.1  前置處理程式的工作

10.2  使用巨集

10.3  含入標頭檔

10.4  有條件的編譯

 

第二篇 介紹物件導向觀念及 OOPC
 

11  認識物件(Object), 134

11.1  自然界之物件

11.2  軟體物件

11.3  物件與函數

11.4  物件與類別

11.5  物件指標

11.6  建構式

11.7  類別設計之實例說明
 

12  物件溝通方法, 155

12.1 「訊息傳遞」溝通方法

12.2 「訊息傳遞」範例() --- Toggle Light電燈為例

12.3  OOPC實現:使用Turbo C

12.4  OOPC實現:使用VC++ 2005

12.5 「訊息傳遞」範例 ( ) --- 以冰箱小燈控制為例
 

13 物件溝通實例, 177

13.1  以向量(Vector)類別封裝一維陣列

13.2  以矩陣 (Matrix) 類別封裝二維陣列
 
第三篇   如何規劃精緻的介面
 

14 認識介面(Interface), 196

14.1  如何定義介面?

14.2  多個類別實現同一介面

14.3  以介面實現多型性(Polymorphic)

14.4  一個類別實現多個介面
 

15 介面與樣式:降低物件間之相依性, 215

15.1  物件相依性:細節設計優劣之評量

15.2  樣式觀念

15.3  軟體設計樣式

15.4  簡介IoC樣式

15.5  IoCCOR樣式的攜手合作

 

第四篇 LW_OOPC 實用範例
 

16   LW_OOPC實用範例之一, 238

16.1  認識「錄音」概念和和技術

16.2  單純「錄音」的範例分析

16.3  「錄音/播放」範例之分析

16.4  「錄音 / 播放」範例之實作:使用 LW_OOPC
 

17   LW_OOPC實用範例之二, 265

17.1  什麼是半加器?

17.2  設計「位元計算機」

17.3  實現位元計算機:使用 LW_OOPC
 

18   LW_OOPC實用範例之三, 281

18.1  形形色色的塗鴉程式

18.2  塗鴉程式範例說明

18.3  塗鴉系統分析與設計

18.4  塗鴉程式之實作:使用 LW_OOPC
 
 
---- END ----

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值