// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
/**
* @title AbstractHelloWorld
* @dev Abstract contract that defines a template for setting and getting a value,
* as well as adding a number to the stored value. This contract serves as a base
* for other contracts to implement its functions.
*/
abstract contract AbstractHelloWorld {
// Function to get the stored value. Must be implemented by the inheriting contract.
function GetValue() virtual public view returns (uint);
// Function to set the stored value. Must be implemented by the inheriting contract.
function SetValue(uint _value) virtual public;
// Function to add a number to a value. Provides a default implementation that simply returns the input.
function AddNumber(uint _value) virtual public returns (uint) {
return _value;