1.11 Interface 學校圖書館系統

閱讀時間約 3 分鐘
interface

interface

  • interface的主要作用是定義合約的函數規範,但不包含具體的實現。它提供了一種清晰的方式來描述合約之間的互動方式,從而使得不同的合約可以進行互操作性。

學校圖書館系統, 包括兩個主要的合約:Library合約和Student合約。

  1. Library合約:這個合約負責管理圖書館的書籍,包括書籍的借閱、歸還和查詢功能。
  2. Student合約:這個合約代表了學生,學生可以借閱圖書並查詢圖書館的書籍。
  • 我們有兩個合約:LibraryContractStudentContract,分別實現了 LibraryStudent 這兩個interface。這樣,其他合約可以通過interface與這兩個合約進行互動,從而實現合約之間的互操作性。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

// 圖書館合約的interface
interface Library {
function borrowBook(uint256 bookId) external returns (bool);
function returnBook(uint256 bookId) external returns (bool);
function getBookInfo(uint256 bookId) external view returns (string memory);
}

// 學生合約的interface
interface Student {
function borrowBook(uint256 bookId) external returns (bool);
function returnBook(uint256 bookId) external returns (bool);
function searchBook(uint256 bookId) external view returns (string memory);
}

// 實現Library接口的合約
contract LibraryContract is Library {
function borrowBook(uint256 bookId) external returns (bool) {
// 實現借閱書籍功能的代碼
}

function returnBook(uint256 bookId) external returns (bool) {
// 實現歸還書籍功能的代碼
}

function getBookInfo(uint256 bookId) external view returns (string memory) {
// 實現查詢書籍信息功能的代碼
}
}

// 實現Student接口的合約
contract StudentContract is Student {
function borrowBook(uint256 bookId) external returns (bool) {
// 實現學生借閱書籍功能的代碼
}

function returnBook(uint256 bookId) external returns (bool) {
// 實現學生歸還書籍功能的代碼
}

function searchBook(uint256 bookId) external view returns (string memory) {
// 實現學生查詢書籍信息功能的代碼
}
}
    尋大神腳印, 亦步亦趨。
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    ForLoop // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract ArtAuction { mapping(uint => uint) public artworks; uint public con
    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract GiftShop { mapping(address => uint) public loyaltyPoints; mapping(string =>
    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract TuitionPayment { address public school; uint public tuitionFee; mapping(
    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SchoolGreetings { address public principal; event GreetingReceived(string g
    一個智能合約,名為 UniformShop,它用於販售學校制服。 我們希望合約在收到以太幣後自動處理購買制服的操作。 UniformShop 合約定義了一個 fallback 函式,用於接收以太幣並購買制服。 當有人向合約地址轉帳時,如果轉帳金額足夠支付制服的價格,則 fallback 函式將
    try-catch 語句用於處理外部函數調用或合約創建過程中可能發生的錯誤 以下是一個使用小朋友睡著作為例子的簡單程式碼 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Child { bool publ
    ForLoop // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract ArtAuction { mapping(uint => uint) public artworks; uint public con
    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract GiftShop { mapping(address => uint) public loyaltyPoints; mapping(string =>
    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract TuitionPayment { address public school; uint public tuitionFee; mapping(
    // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SchoolGreetings { address public principal; event GreetingReceived(string g
    一個智能合約,名為 UniformShop,它用於販售學校制服。 我們希望合約在收到以太幣後自動處理購買制服的操作。 UniformShop 合約定義了一個 fallback 函式,用於接收以太幣並購買制服。 當有人向合約地址轉帳時,如果轉帳金額足夠支付制服的價格,則 fallback 函式將
    try-catch 語句用於處理外部函數調用或合約創建過程中可能發生的錯誤 以下是一個使用小朋友睡著作為例子的簡單程式碼 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Child { bool publ
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    臨時請假一天,繼續崩潰。 知道作業趕不完,不敢睡到九點了,一大早七點就跟老公一起出門,那麼早常去的咖啡廳沒開,只能去星巴克報到。
    ▍盤勢分析 加權難得開高走高 終場上漲 79 點,收 17545.32,站回五日線 櫃買也是開高走高,一舉收復十日線 ▍籌碼分析 現貨: 外資買超 36 E => 多 期貨: 空單增加 754 口,來到 -25,309 口 => 空 小台散戶做多
    Thumbnail
    今天24/1/11臺灣時間19:57,即將迎來本年度第一次的新月,摩羯座的新月對於制定一年計劃是一個好的時機。在這個新月的日子裡,可以明確自己的目標,並且想像未來充滿信心的自己,更容易實現目標,可以幫助改變人生。
    大盤熱錢資金目前流往通路 網通 航運 資安 
    Thumbnail
    很開心遇到《整理想法的技術》這本書,它的言簡意賅,讓我閱讀中有了不少啟發,對我而言,如果問我看這本書,最大的收獲是什麼?我要說的整理就是「捨」,書中很多道理相近,我自己「分類」後,我覺得就是「捨的力量」!而這個捨的力量,運用在日常生活中竟是出奇的有意思,今天就來分享一下我把這本書運用在生活中的例子,
    Thumbnail
    1/10 今日加權指數在平盤附近震盪,震幅縮小到剩下60點,收下影線的小黑K,下跌69點,收17465,成交量縮2579億。 1/10 今日otc在平盤附近震盪,震幅縮小留比較長下影線的十字線,下跌0.07點,收229.41,成交量577.91億。 今天三大法人,外資賣超31億、投信買超24
    Thumbnail
    客戶的岳父有台老corolla , 快30年老車只開11萬多公里 這種車的通病 : "時速表不準 , 轉速表抖動" 轉速表恢復正常 時速表路試正常
    Thumbnail
    烏俄戰爭更新,美國班機延誤,世界銀行下修預期,老鮑的獨立性
    Thumbnail
    2022.01.11 願 新的一年裡 第一聲鐘響 : 一元復始 一生健康 快樂平安
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    臨時請假一天,繼續崩潰。 知道作業趕不完,不敢睡到九點了,一大早七點就跟老公一起出門,那麼早常去的咖啡廳沒開,只能去星巴克報到。
    ▍盤勢分析 加權難得開高走高 終場上漲 79 點,收 17545.32,站回五日線 櫃買也是開高走高,一舉收復十日線 ▍籌碼分析 現貨: 外資買超 36 E => 多 期貨: 空單增加 754 口,來到 -25,309 口 => 空 小台散戶做多
    Thumbnail
    今天24/1/11臺灣時間19:57,即將迎來本年度第一次的新月,摩羯座的新月對於制定一年計劃是一個好的時機。在這個新月的日子裡,可以明確自己的目標,並且想像未來充滿信心的自己,更容易實現目標,可以幫助改變人生。
    大盤熱錢資金目前流往通路 網通 航運 資安 
    Thumbnail
    很開心遇到《整理想法的技術》這本書,它的言簡意賅,讓我閱讀中有了不少啟發,對我而言,如果問我看這本書,最大的收獲是什麼?我要說的整理就是「捨」,書中很多道理相近,我自己「分類」後,我覺得就是「捨的力量」!而這個捨的力量,運用在日常生活中竟是出奇的有意思,今天就來分享一下我把這本書運用在生活中的例子,
    Thumbnail
    1/10 今日加權指數在平盤附近震盪,震幅縮小到剩下60點,收下影線的小黑K,下跌69點,收17465,成交量縮2579億。 1/10 今日otc在平盤附近震盪,震幅縮小留比較長下影線的十字線,下跌0.07點,收229.41,成交量577.91億。 今天三大法人,外資賣超31億、投信買超24
    Thumbnail
    客戶的岳父有台老corolla , 快30年老車只開11萬多公里 這種車的通病 : "時速表不準 , 轉速表抖動" 轉速表恢復正常 時速表路試正常
    Thumbnail
    烏俄戰爭更新,美國班機延誤,世界銀行下修預期,老鮑的獨立性
    Thumbnail
    2022.01.11 願 新的一年裡 第一聲鐘響 : 一元復始 一生健康 快樂平安