Interface & Inheritance
Interface ve Inheritance (kalıtım), Solidity'de kodun yeniden kullanılabilirliğini ve modülerliğini artırmak için kullanılan güçlü araçlardır. Bu özellikler, akıllı kontratları daha esnek ve yönetilebilir hale getirir.
1. Interface
Interface, bir kontratın başka bir kontrat veya dış bir sistemle nasıl etkileşime gireceğini tanımlayan bir yapıdır. Interface'ler sadece fonksiyon başlıklarını içerir, fonksiyonların nasıl çalıştığı hakkında bilgi vermez. Interface'ler, diğer kontratların belirli bir arayüzü izlemesini sağlar ve fonksiyonların hangi isimlere sahip olduğunu ve parametrelerin neler olduğunu belirtir.
Bir interface tanımlarken sadece fonksiyonun adı ve parametreleri yazılır, fonksiyon içeriği yazılmaz.
Syntax
interface IExample {
function doSomething(uint256 _value) external returns (bool);
}Bu örnekte, IExample adında bir interface tanımlanmış ve doSomething fonksiyonu için başlık verilmiştir. Bu fonksiyonun nasıl çalıştığı hakkında bilgi içermez.
Interface Kullanımı
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface ICalculator {
function add(uint256 a, uint256 b) external pure returns (uint256);
}
contract CalculatorUser {
ICalculator public calculator;
constructor(address _calculatorAddress) {
calculator = ICalculator(_calculatorAddress);
}
function calculateSum(uint256 a, uint256 b) public view returns (uint256) {
return calculator.add(a, b);
}
}Bu örnekte:
ICalculatoradında bir interface tanımlanmıştır.CalculatorUserkontratı, bu interface'i kullanarak başka bir kontratınaddfonksiyonunu çağırır.
2. Inheritance (Kalıtım)
Inheritance, bir kontratın başka bir kontratın özelliklerini ve fonksiyonlarını miras almasını sağlar. Bu, kodun yeniden kullanılabilirliğini artırır ve kodun daha modüler olmasını sağlar. Kalıtım, bir kontratın başka bir kontratın tüm fonksiyonlarını ve durum değişkenlerini devralmasını sağlar.
Syntax
Bu örnekte:
Parentkontratı birvaluedeğişkeni vesetValuefonksiyonunu içerir.Childkontratı,Parentkontratını miras alır vevaluedeğişkenine vesetValuefonksiyonuna erişebilir. AyrıcadoubleValueadında bir fonksiyon ekler.
3. Çoklu Kalıtım
Solidity'de bir kontrat birden fazla kontratı miras alabilir. Bu, çoklu kalıtım olarak bilinir ve çeşitli arayüzler veya kontratlar arasında kod paylaşımını sağlar.
Syntax
Bu örnekte:
Derivedkontratı, hemBase1hem deBase2kontratlarını miras alır ve her iki kontratın fonksiyonlarına erişebilir.
Örnek Uygulama
Aşağıda, bir akıllı kontratın arayüzü ve kalıtım özelliklerini kullanan bir örnek bulunmaktadır:
Bu örnekte:
IStoreadında bir interface tanımlanmış vesetvegetfonksiyonları için başlık verilmiştir.Storagekontratı,valuedeğişkenini saklar ve bu değeri ayarlamak ve almak için fonksiyonlar içerir.EnhancedStoragekontratı, hemStoragekontratını hem deIStorearayüzünü miras alır veincrementfonksiyonunu ekler.
Last updated