2024-04-12|閱讀時間 ‧ 約 24 分鐘

1.11 Interface 學校圖書館系統

    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) {
    // 實現學生查詢書籍信息功能的代碼
    }
    }
    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.