A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de Introducci贸n a Solidity

Curso de Introducci贸n a Solidity

Sebasti谩n Leonardo Perez

Sebasti谩n Leonardo Perez

Herencia

17/21
Recursos

Aportes 9

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Hola, para aclarar que Solidity s铆 es un lenguaje orientado a objetos, en la documentaci贸n oficial lo definen as铆:

Solidity is an object-oriented, high-level language for implementing smart contracts. Smart contracts are programs which govern the behaviour of accounts within the Ethereum state.

Fuente: Documentaci贸n oficial

17 - Herencia

鈥淣o hay que reinvetar la rueda鈥

Utilizamos la Herencia para reutilizar codigo en nuevos contratos. Solidity no es POO, pero se comporta similar. Solidity es orientado a contratos. Identificaremos con la sentencia is. Si un contrato tiene un constructor con parametros, debemos indicar que valores debe tomar ese constructor para poder derivarse.

Entonces, se busca generar una relacion entre contratos para reutilizar el codigo mediante la Herencia. Por lo que la capacidad de agregar/modificar una funcion ya escrita en el contrato anterior nos sera de mucha utilidad.

Las funciones virtuales son funciones definidas para que se puedan reescrbir por las funciones override. Para esto debemos establecer una relacion de Herencia. Si una funcion virtual no define implementacion, el contrato se convierte en un contrato abstracto. Tambien hay contratos abstractos que usamos como moldes vacios para usar en futuros contratos.

Las interfaces no van a tener codigo. su funcion es indicarnos un comportamiento que queremos que tenga un contrato. Solo tiene declaraciones (definiciones de funciones) sin codigo.

  • super (sentencia) nos sirve para hacer referencia a una funcion de clase superior.

Ejemplo practico: Buscamos 2 funciones virtuales en Modificadores馃摋 e Interface馃摌 para colocar en nuestro archivo/contrato de Herencia 馃摃馃摌馃摋.

Vamos a tener que importar el directorio de los demas contratos, en este caso se encuentran en la misma carpeta los contratos. Coloco los emojis de libros para hacer referencia a un contrato, si hay varios libros es porque es una Herencia que contiene otros contratos.

  • Herencia.sol 馃摃馃摌馃摋
// SPDX-Licence-Identifier: UNLICENSED

pragma solidity >=0.7.0 < 0.9.0;

import "./Interface.sol";
import "./Modificadores.sol";

contract Herencia is Suma, Modificadores {

    constructor(string memory nombreNuevo) Modificadores(nombreNuevo) {

    }

    function sumar(uint numero1, uint numero2) public override EsOwner() view returns(uint) {
        return numero1 + numero2;
    }
}

Es buena practica traer todo el encabezado de la funcion de 鈥淚nterface鈥, por lo que es recomendable copiar y pegar 鈥渇unction sumar(uint numero1, uint numero2)鈥

  • Interface.sol 馃摌
// SPDX-Licence-Identifier: UNLICENSED

pragma solidity >=0.7.0 < 0.9.0;

interface Suma {

    function sumar(uint numero1, uint numero2) external returns (uint);
}
  • Modificadores.sol 馃摋
// SPDX-Licence-Identifier: UNLICENSED

pragma solidity >=0.4.0 < 0.9.0;

contract Modificadores {


    address private owner;
    string private nombreOwner;

    constructor(string memory nombre {
        owner = msg.sender;
        nombreOwner = nombre;
    }

    function Suma(uint numero1, uint numero2) public view EsOwner() returns (uint) {
        return numero1 + numero2;
    }

    modifier EsOwner() {
        if (msg.sender != owner) revert();
        _;
    }
}

Es muy importante comprender los conceptos de POO para poder sacarle el maximo provecho a solidity, recomiendo tomar cualquier curso de programaci贸n orientada a objetos en platzi para poder entenderlos a profundidad, o si no, el libro 鈥淎n谩lisis y Dise帽o Orientado a Objetos鈥 de Graady Booch.

Muy parecido a los conceptos de Java. Quien sabe de POO puede entender esto facilmente

Solidity es un lenguaje orientado a 鈥渃ontratos鈥.

Solidity es un lenguaje de alto nivel orientado a objetos para implementar contratos inteligentes. Los contratos inteligentes son programas que rigen el comportamiento de las cuentas dentro del estado Ethereum.

Creo que para personas que conocen m谩s del entorno esto les servir铆a mucho para optimizar sus tiempos y c贸digos ya que solo hay que realizar algunas modificaciones馃

Excelente clase, muy entendible todo

No me queda muy claro para qu茅 sirven las interfaces, si lo unico que tienen es una funci贸n pero sin ninguna funcionalidad, por lo que pude ver en la clase