五 抽象介面與依賴反轉(C物件導向開發)

2021-10-25 05:52:35 字數 1867 閱讀 8482

內容參考於《抽象接**術和元件開發規範及其思想》

基於多型可以實現「與硬體無關」的應用程式。 在 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,所謂一切皆物件.不過要是老天天呆電腦前寫 研究物件導向語言,那要真找物件找老婆就很成問題.可不是滿世界的美女們都皆是你物件.類是乙個抽象的概念,和我們現實生活中對事物分類起名差不多,比如美女,帥哥,二奶,官二代這樣的名詞就是乙個類,代表具有相似屬性...