內容參考於《抽象接**術和元件開發規範及其思想》基於多型可以實現「與硬體無關」的應用程式。 在 c 程式設計中,多型的核心解決方法是充分利用「函式指標」,抽象介面就是只包含函式指標的類, 它們非常抽象,不包含任何具體的實現,僅定義了函式的呼叫規則。應用不在依賴具體的實現,根據介面去編寫應用。實際上之前的綜合示例最後乙個示例已經完全體現。
1. 示例:
時間示例
介面與應用程式(與底層無關)
itime.h
struct tm
;struct itime
;static
inline
intitime_time_get
(struct itime *p_this,
struct tm *p_tm)
static
inline
intitime_time_set
(struct itime *p_this,
struct tm *p_tm)
void
(struct itime *p_time)
itime_time_get
(p_watch->p_rtc,
&now_tm)
;// 獲取當前時間
printf
("now time is : %04d-%02d-%02d %02d:%02d:%02d \r\n"
, now_tm.tm_year +
1900
, now_tm.tm_mon +
1, now_tm.tm_mday,
now_tm.tm_hour, now_tm.tm_min, now_tm.tm_sec)
;// ...其它處理, 如在 lcd 上顯示時間等
}
某一型號為 pcf85063 的 rtc 晶元
底層實現
pcf85063.h
#include
"itime.h"
struct pcf85063
;#endif
/* __pcf85063_h */
pcf85063.c
#include
"pcf85063.h"
static
int__pcf85063_time_get
(struct itime *p_this,
struct tm *p_tm)
return-1
;// 獲取時間失敗
}static
int__pcf85063_time_set
(struct itime *p_this,
struct tm *p_tm)
return-1
;}struct itime *
pcf85063_init
(struct pcf85063 *p_dev)
;
main.c
#include
"pcf85063.h"
static
struct pcf85063 pcf85063_dev;
intmain()
2. 分析
示例中,應用程式、 介面與實現類之間的關係
傳統設計應用程式和實現的關係
物件導向(繼承 抽象 介面)
一 繼承的好處 1.提高 的復用性。2.讓類與類之間產生了關係,有了這個關係,才有了多型的特性。二 如何使用乙個繼承體系中的功能那?想要使用體系,先查閱體系最父類的描述,因為最父類中定義的是該體系中的共性功能。通過了解共性功能,就可以知道該體系的基本功能。那麼這個體系已經可以基本使用了。三 那麼在具...
java 物件導向 介面 抽象
乙個物件例項化過程 person p new person 1,jvm會讀取指定的路徑下的person.class檔案,並載入進記憶體,並會先載入person的父類 如果有直接的父類的情況下 2,在堆記憶體中的開闢空間,分配位址。3,並在物件空間中,對物件中的屬性進行預設初始化。4,呼叫對應的建構函...
C 與C 對比學習 物件導向,介面,抽象類
物件導向程式設計語言中最重要的概念無疑是class,所謂一切皆物件.不過要是老天天呆電腦前寫 研究物件導向語言,那要真找物件找老婆就很成問題.可不是滿世界的美女們都皆是你物件.類是乙個抽象的概念,和我們現實生活中對事物分類起名差不多,比如美女,帥哥,二奶,官二代這樣的名詞就是乙個類,代表具有相似屬性...