CursosEmpresasBlogLiveConfPrecios

Polimorfismo en contratos inteligentes

Clase 18 de 21 • Curso de Introducción a Solidity

Clase anteriorSiguiente clase

Contenido del curso

Por qué debes aprender Solidity

  • 1
    Curso de Solidity: Fundamentos y Desarrollo en Blockchain

    Curso de Solidity: Fundamentos y Desarrollo en Blockchain

    01:24 min
  • 2
    Programación en Solidity para Contratos Inteligentes en Blockchain

    Programación en Solidity para Contratos Inteligentes en Blockchain

    03:23 min

Introducción a la programación con Solidity

  • 3
    Estructura Básica de Contratos en Solidity

    Estructura Básica de Contratos en Solidity

    10:29 min
  • 4
    Tipos de datos y variables en Solidity: enteros, booleanos y direcciones

    Tipos de datos y variables en Solidity: enteros, booleanos y direcciones

    12:38 min
  • 5
    Estructuras y Arrays en Contratos Inteligentes

    Estructuras y Arrays en Contratos Inteligentes

    09:20 min
  • 6
    Estructuras de datos en Solidity: Mappings y enums

    Estructuras de datos en Solidity: Mappings y enums

    11:53 min
  • 7
    Estructuras de control en Solidity

    Estructuras de control en Solidity

    10:48 min
  • 8
    Manejo de Eventos con Solidity

    Manejo de Eventos con Solidity

    05:29 min

Programación de Funciones en Solidity

  • 9
    Cómo implementar funciones en Solidity

    Cómo implementar funciones en Solidity

    09:13 min
  • 10
    Uso de Modificadores en Solidity

    Uso de Modificadores en Solidity

    08:41 min
  • 11
    Manejo de errores

    Manejo de errores

    07:35 min

Gestionando costos de gas y comisiones

  • 12
    Tipos de almacenamiento

    Tipos de almacenamiento

    05:17 min
  • 13
    Manejo del gas y comisiones

    Manejo del gas y comisiones

    08:37 min
  • 14
    Transferencias de ether desde un contrato

    Transferencias de ether desde un contrato

    09:47 min
  • 15
    Recibir ether desde un contrato

    Recibir ether desde un contrato

    11:50 min

Conceptos avanzados de Solidity

  • 16
    Manejo de dependencias y librerías

    Manejo de dependencias y librerías

    08:12 min
  • 17
    Uso de la herencia en Solidity

    Uso de la herencia en Solidity

    14:41 min
  • 18
    Polimorfismo en contratos inteligentes

    Polimorfismo en contratos inteligentes

    Viendo ahora
  • 19
    Tokens

    Tokens

    13:34 min
  • 20
    Application Binary Interface (ABI)

    Application Binary Interface (ABI)

    06:50 min

Cómo continuar mi camino desarrollando en Blockchain

  • 21
    Cómo continuar mi camino con Solidity

    Cómo continuar mi camino con Solidity

    01:58 min
  • Tomar el examen del curso
    • Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 4 años

      Polimorfismo

      Capacidad de poder utilizar contratos derivados en estructuras superiores.

        Pepe Sosa

        Pepe Sosa

        student•
        hace 4 años

        Polimorfismo es una propiedad de la POO que permite (a nivel general digamos) enviar mensajes iguales a objetos de diferentes tipos.

        En limpio: tus objetos deben de "saber" responder al mensaje que les estás enviando, esta es la propiedad polimórfica.

        No tiene nada qué ver con contratos ni nada por el estilo, es puramente un tema de objetos.

        Elías Muñiz

        Elías Muñiz

        student•
        hace 3 años

        Polimorfismo, hablando de una forma más abstracta y en POO, _es la capacidad que tiene un objeto o función de tener distintos comportamientos de acuerdo al contexto. _ Por ejemplo: un método que se puede redefinir dependiendo de la cantidad de parámetros o tipos de datos que reciba.

      Felix Manuel Figueroa Araujo

      Felix Manuel Figueroa Araujo

      student•
      hace 4 años

      Esta clase le falta herramientas graficas para mejorar su entendimiento, el mismo instructor se marea con un juego de palabras y términos de su localidad.

      Adolfo Sebastián Jara Gavilanes

      Adolfo Sebastián Jara Gavilanes

      student•
      hace 4 años

      Aquí podemos ver un ejemplo gráfico de como funciona el polimorfismo

      Polimorfismo.jpg

        Jorge Guzman Suir

        Jorge Guzman Suir

        student•
        hace 4 años

        Muchas gracias. Esta genial el ejemplo.

        Jorge Guzman Suir

        Jorge Guzman Suir

        student•
        hace 4 años

        Encontre esta definicion en un libro de programacion que puede ser de ayuda. Polimorfismo: Habilidad de los objetos de diferentes clases relacionadas por la herencia de responder de manera diferente al mismo mensaje(es decir, una llamada de una funcion miembro). El mismo mensaje enviado a diferentes tipos de objetos toma "muchas formas "; de aqui el termino polimorfismo. Por ejemplo: si la clase "rectangulo" se deriva de "forma", entonces un objeto "rectangulo" es una version mas especifica de un objeto "forma". Una operacion (Por ejemplo: calcular el area) que puede realizarse sobre un objeto "forma" tambien puede realizarse sobre un objeto "rectangulo".

      Luis Alejandro Vera Hernandez

      Luis Alejandro Vera Hernandez

      student•
      hace 4 años

      Una convencion en las ´interfaces´ es llevar una i delante del nombre.

      Interfaces solo definen encabezados pero no pueden tener una implementacion en la red. No podemos hacer el deploy pero si podemos usar un contrato que lo implemente.

      Polimorfismo

      // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "./Interface.sol"; contract Polimorfismo { function sumarDesdeContrato(uint numero1, uint numero2, address direccionContrato) public returns(uint) { Suma interfaceSuma = Suma(direccionContrato); return interfaceSuma.sumar(numero1,numero2); } }

      ImplementacionSuma.sol

      // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "./Interface.sol"; contract ImplementacionSuma is Suma { function sumar(uint numero1, uint numero2) public override pure returns (uint) { return numero1 + numero2; } }

      Interface.sol

      // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; interface Suma { function sumar(uint numero1, uint numero2) external returns (uint); }

      Con el polimorfismo pudimos usar la suma que esta en otro contrato porque no llamamos directamente a la implementación de Suma sino que hicimos la llamada a la Interface, a pesar de que las interfaces no pueden ser implementadas en la red, pero con Polimorfismo pudimos hacerlo.

      Nicolas Felipe Diaz Rodriguez

      Nicolas Felipe Diaz Rodriguez

      student•
      hace 4 años

      Me surgio una duda platzinautas, para hacer polimorfismo siempre debo tener una interface, un contrato de implementacion y el contrato donde ejecutamos el polimorfismo?

        Agostina Yakoby Moris

        Agostina Yakoby Moris

        student•
        hace 4 años

        Hola @nicodev27, en este caso para que sea polimorfismo si es necesario. Pero es solo a fines de que podamos ver y entender el concepto de Polimorfismo.

        Es decir, podemos ejecutar una función de un contrato deployado en la red siempre y cuando conozcamos su tipo y su dirección. Si lo hacemos así sin usar una interfaz e implementación es válido, pero no seria polimorfismo.

        Espero se entienda! Sino consultame!

        slds

        Sebastian Perez

        Sebastian Perez

        teacher•
        hace 4 años

        Me sumo al comentario, siempre que sea necesario (que es lo primero que deberías analizar) ahí si necesitas todo lo que indicas. El mayor provecho es cuando tenés distintos contratos o implementaciones que responden a una misma interface, por lo tanto corregiría "un contrato de implementación" a "más de un contrato de implementación", pero claro que con uno alcanzaría para un ejemplo mínimo.

      Abidan Triguero Calle

      Abidan Triguero Calle

      student•
      hace 3 años

      RESUMEN CLASE 18: POLIMORFISMO

      I.- INSTANCIAR UN CONTRATO EN OTRO CONTRATO

      • Dentro de un contrato podemos hacer referencia a otro contrato ya implementado en la red a través de su dirección.

      • Para esto podemos utilizar el tipo de contrato al que referenciamos o bien alguna de sus clases superiores.

      II.- POLIMORFISMO

      • Capacidad de poder utilizar contratos derivados en estructuras superiores.

      REMIX:

      CLASE 18 PolimorfismoImagen1.png

      Polimorfismo.sol

      // SPDX-License-Identifier: GLP-3.0 pragma solidity >=0.7.0 <0.9.0; import "./Interface.sol"; contract Polimorfismo { function sumaDesdeContrato(uint numero1, uint numero2, address direccionContrato) public returns(uint) { Suma interfaceSuma = Suma(direccionContrato); return interfaceSuma.sumar(numero1,numero2); } }

      ImplementacionSuma.sol

      // SPDX-License-Identifier: GLP-3.0 pragma solidity >=0.7.0 <0.9.0; import "./Interface.sol"; contract ImplememntacionSuma is Suma { function sumar(uint numero1, uint numero2) public override pure returns (uint) { return numero1 + numero2; } }
      Dany R

      Dany R

      student•
      hace 3 años
      • El polimorfismo de contrato, es el uso de CONTRATOS EXTERNOS a partir del contrato que estamos desarrollando.
      • Si estamos usando un contrato externo mediante polimorfismo, y el CONTRATO EXTERNO tiene "Padres", entonces también podremos acceder a las FUNCIONES y VARIABLE de los contratos Padres.
      • Si el CONTRATO EXTERNO que deseamos llamar ya esta desplegado en la red (P.E. Uniswap), entonces para poder usar sus FUNCIONES o VARIABLES deben estar declaradas como externas, además se debemos hacer uso de una INTERFACE.
      • El principal uso de las INTERFACES es ser un medio para poder interactuar con CONTRATOS EXTERNOS..
      • Si se desea hacer uso de una función de un CONTRATO EXTERNO, entonces la INTERFACE debe tener una función con el mismo nombre y mismo tipo de parámetros.

      CONTRATO EXTERNO

      // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; contract Operaciones { function suma(uint numero1, uint numero2) external pure returns (uint){ return numero1 + numero2; } function multiplicacion(uint numero1, uint numero2) external pure returns (uint){ return numero1 + numero2; } }

      CONTRATO que hace uso de una INTERFACE para usar una función del contrato anterior

      // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; interface IOperaciones { function suma(uint numero1, uint numero2) external pure returns (uint); function multiplicacion(uint numero1, uint numero2) external pure returns (uint); } contract OperacionesAvanzadas { function Promedio(uint numero1, uint numero2, address _contrato) public pure returns (uint) { IOperaciones operacionesBasicas = IOperaciones(_contrato); uint prom; prom=operacionesBasicas.suma(numero1, numero2)/2; return prom; } }

      Notar que no se importo nada, solo se uso una INTERFACE

        Joan Sebastian Fuertes Garcia

        Joan Sebastian Fuertes Garcia

        student•
        hace 3 años

        Excelente resumen!

      Leonardo Jose Jimenez Ortiz

      Leonardo Jose Jimenez Ortiz

      student•
      hace 3 años

      no se puede tambien hacer polimorfismo colocando como contrato padre un contract, o tiene que ser a juro con interface para que el polimorfismo suceda???

        Sebastian Perez

        Sebastian Perez

        teacher•
        hace 3 años

        Hola Leonardo, es correcto lo que dices, puede hacerse con un contrato el polimorfismo. Es más común encontrarlo con interfaces, pero es válido hacerlo con contratos.

      Paul Rodas

      Paul Rodas

      student•
      hace 3 años

      Mi forma de explicar el polimorfismo: Una sola forma de llamar a una funcion (los mismos parametros) Varias formas de procesar esos parametros (codigo en cada implementacion) Me parece muy util este concepto en Solidity porque podemos definir una funcion por ejemplo una interface construirContrato, enviarle el nombre, identificacion personal y cada hacer implementaciones de esa interface ImplementacionCompraVenta, ImplementacionMatrimonio, etc.

      Edgar Alfredo López Salero

      Edgar Alfredo López Salero

      student•
      hace 3 años

      El polimorfismo permite que diferentes contratos respondan de manera distinta al mismo mensaje. Entre las ventajas que este nos permite utilizar una interfaz en distintos contratos, a partir de una contrato derivado a través de la dirección. Es decir tenemos una interfaz llamada mascotas, estas tienen como propiedad nombre y fecha de nacimiento. El uso de esta interfaz, generara distintos resultados dependiendo del tipo de animal, perro, gato, hamster. Es decir la llamada de este contrato mascota generara distinta salida de acuerdo al tipo de animal. Es decir cada animal tiene distinta forma, de alli el concepto polimorfismo.

      Bramucci Candela

      Bramucci Candela

      student•
      hace 3 años

      Polimorfismo

      Polimorfismo: Capacidad de poder utilizar contratos derivados en estructuras superiores.

      .

      Instanciar un contrato en otro contrato

      Dentro de un contrato podemos hacer referencia a otro contrato ya implementado en la red a través de su dirección. Para esto podemos utilizar el tipo de contrato al que referenciamos o bien alguna de sus clases superiores. .

      Ejemplo

      Interface.sol

      // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "./Interface.sol"; contract Polimorfismo { function sumarDesdeContrato(uint numero1, uint numero2, address direccionContrato) public returns(uint) { Suma interfaceSuma = Suma(direccionContrato); return interfaceSuma.sumar(numero1,numero2); } }

      ImplementacionSuma.sol

      // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "./Interface.sol"; contract ImplementacionSuma is Suma { function sumar(uint numero1, uint numero2) public override pure returns (uint) { return numero1 + numero2; } }
      Carlos Esteban León Pinilla

      Carlos Esteban León Pinilla

      student•
      hace 3 años

      Es complejo de entender... pero basicamente como lo entendi, lo que paso aqui es:

      • Creas una implementacion de una interfaz.
      • Usas la dirección generada de la interfaz y la pasas como parametro dentro del contrato que la quieres implementar.
      • Dentro del contrato a implementarla, referencias la direccion a la interfaz a la que pertenece lo cual genera una instancia, posteriormente puedes usar sus métodos.
      Mauro Volpe

      Mauro Volpe

      student•
      hace 4 años

      Me parece que se puede mejorar la explicación y ejemplo sobre polimorfismo, instanciando varios contratos y mostrando como ante la ejecución del mismo método el comportamiento es diferente. Y quizás suma mencionar ligadura dinámica y estática de código, ya que si SOLIDITY es OO deberia contar con esta habilidad. Saludos

    Escuelas

    • Desarrollo Web
      • Fundamentos del Desarrollo Web Profesional
      • Diseño y Desarrollo Frontend
      • Desarrollo Frontend con JavaScript
      • Desarrollo Frontend con Vue.js
      • Desarrollo Frontend con Angular
      • Desarrollo Frontend con React.js
      • Desarrollo Backend con Node.js
      • Desarrollo Backend con Python
      • Desarrollo Backend con Java
      • Desarrollo Backend con PHP
      • Desarrollo Backend con Ruby
      • Bases de Datos para Web
      • Seguridad Web & API
      • Testing Automatizado y QA para Web
      • Arquitecturas Web Modernas y Escalabilidad
      • DevOps y Cloud para Desarrolladores Web
    • English Academy
      • Inglés Básico A1
      • Inglés Básico A2
      • Inglés Intermedio B1
      • Inglés Intermedio Alto B2
      • Inglés Avanzado C1
      • Inglés para Propósitos Específicos
      • Inglés de Negocios
    • Marketing Digital
      • Fundamentos de Marketing Digital
      • Marketing de Contenidos y Redacción Persuasiva
      • SEO y Posicionamiento Web
      • Social Media Marketing y Community Management
      • Publicidad Digital y Paid Media
      • Analítica Digital y Optimización (CRO)
      • Estrategia de Marketing y Growth
      • Marketing de Marca y Comunicación Estratégica
      • Marketing para E-commerce
      • Marketing B2B
      • Inteligencia Artificial Aplicada al Marketing
      • Automatización del Marketing
      • Marca Personal y Marketing Freelance
      • Ventas y Experiencia del Cliente
      • Creación de Contenido para Redes Sociales
    • Inteligencia Artificial y Data Science
      • Fundamentos de Data Science y AI
      • Análisis y Visualización de Datos
      • Machine Learning y Deep Learning
      • Data Engineer
      • Inteligencia Artificial para la Productividad
      • Desarrollo de Aplicaciones con IA
      • AI Software Engineer
    • Ciberseguridad
      • Fundamentos de Ciberseguridad
      • Hacking Ético y Pentesting (Red Team)
      • Análisis de Malware e Ingeniería Forense
      • Seguridad Defensiva y Cumplimiento (Blue Team)
      • Ciberseguridad Estratégica
    • Liderazgo y Habilidades Blandas
      • Fundamentos de Habilidades Profesionales
      • Liderazgo y Gestión de Equipos
      • Comunicación Avanzada y Oratoria
      • Negociación y Resolución de Conflictos
      • Inteligencia Emocional y Autogestión
      • Productividad y Herramientas Digitales
      • Gestión de Proyectos y Metodologías Ágiles
      • Desarrollo de Carrera y Marca Personal
      • Diversidad, Inclusión y Entorno Laboral Saludable
      • Filosofía y Estrategia para Líderes
    • Diseño de Producto y UX
      • Fundamentos de Diseño UX/UI
      • Investigación de Usuarios (UX Research)
      • Arquitectura de Información y Usabilidad
      • Diseño de Interfaces y Prototipado (UI Design)
      • Sistemas de Diseño y DesignOps
      • Redacción UX (UX Writing)
      • Creatividad e Innovación en Diseño
      • Diseño Accesible e Inclusivo
      • Diseño Asistido por Inteligencia Artificial
      • Gestión de Producto y Liderazgo en Diseño
      • Diseño de Interacciones Emergentes (VUI/VR)
      • Desarrollo Web para Diseñadores
      • Diseño y Prototipado No-Code
    • Contenido Audiovisual
      • Fundamentos de Producción Audiovisual
      • Producción de Video para Plataformas Digitales
      • Producción de Audio y Podcast
      • Fotografía y Diseño Gráfico para Contenido Digital
      • Motion Graphics y Animación
      • Contenido Interactivo y Realidad Aumentada
      • Estrategia, Marketing y Monetización de Contenidos
    • Desarrollo Móvil
      • Fundamentos de Desarrollo Móvil
      • Desarrollo Nativo Android con Kotlin
      • Desarrollo Nativo iOS con Swift
      • Desarrollo Multiplataforma con React Native
      • Desarrollo Multiplataforma con Flutter
      • Arquitectura y Patrones de Diseño Móvil
      • Integración de APIs y Persistencia Móvil
      • Testing y Despliegue en Móvil
      • Diseño UX/UI para Móviles
    • Diseño Gráfico y Arte Digital
      • Fundamentos del Diseño Gráfico y Digital
      • Diseño de Identidad Visual y Branding
      • Ilustración Digital y Arte Conceptual
      • Diseño Editorial y de Empaques
      • Motion Graphics y Animación 3D
      • Diseño Gráfico Asistido por Inteligencia Artificial
      • Creatividad e Innovación en Diseño
    • Programación
      • Fundamentos de Programación e Ingeniería de Software
      • Herramientas de IA para el trabajo
      • Matemáticas para Programación
      • Programación con Python
      • Programación con JavaScript
      • Programación con TypeScript
      • Programación Orientada a Objetos con Java
      • Desarrollo con C# y .NET
      • Programación con PHP
      • Programación con Go y Rust
      • Programación Móvil con Swift y Kotlin
      • Programación con C y C++
      • Administración Básica de Servidores Linux
    • Negocios
      • Fundamentos de Negocios y Emprendimiento
      • Estrategia y Crecimiento Empresarial
      • Finanzas Personales y Corporativas
      • Inversión en Mercados Financieros
      • Ventas, CRM y Experiencia del Cliente
      • Operaciones, Logística y E-commerce
      • Gestión de Proyectos y Metodologías Ágiles
      • Aspectos Legales y Cumplimiento
      • Habilidades Directivas y Crecimiento Profesional
      • Diversidad e Inclusión en el Entorno Laboral
      • Herramientas Digitales y Automatización para Negocios
    • Blockchain y Web3
      • Fundamentos de Blockchain y Web3
      • Desarrollo de Smart Contracts y dApps
      • Finanzas Descentralizadas (DeFi)
      • NFTs y Economía de Creadores
      • Seguridad Blockchain
      • Ecosistemas Blockchain Alternativos (No-EVM)
      • Producto, Marketing y Legal en Web3
    • Recursos Humanos
      • Fundamentos y Cultura Organizacional en RRHH
      • Atracción y Selección de Talento
      • Cultura y Employee Experience
      • Gestión y Desarrollo de Talento
      • Desarrollo y Evaluación de Liderazgo
      • Diversidad, Equidad e Inclusión
      • AI y Automatización en Recursos Humanos
      • Tecnología y Automatización en RRHH
    • Finanzas e Inversiones
      • Fundamentos de Finanzas Personales y Corporativas
      • Análisis y Valoración Financiera
      • Inversión y Mercados de Capitales
      • Finanzas Descentralizadas (DeFi) y Criptoactivos
      • Finanzas y Estrategia para Startups
      • Inteligencia Artificial Aplicada a Finanzas
      • Domina Excel
      • Financial Analyst
      • Conseguir trabajo en Finanzas e Inversiones
    • Startups
      • Fundamentos y Validación de Ideas
      • Estrategia de Negocio y Product-Market Fit
      • Desarrollo de Producto y Operaciones Lean
      • Finanzas, Legal y Fundraising
      • Marketing, Ventas y Growth para Startups
      • Cultura, Talento y Liderazgo
      • Finanzas y Operaciones en Ecommerce
      • Startups Web3 y Blockchain
      • Startups con Impacto Social
      • Expansión y Ecosistema Startup
    • Cloud Computing y DevOps
      • Fundamentos de Cloud y DevOps
      • Administración de Servidores Linux
      • Contenerización y Orquestación
      • Infraestructura como Código (IaC) y CI/CD
      • Amazon Web Services
      • Microsoft Azure
      • Serverless y Observabilidad
      • Certificaciones Cloud (Preparación)
      • Plataforma Cloud GCP

    Platzi y comunidad

    • Platzi Business
    • Live Classes
    • Lanzamientos
    • Executive Program
    • Trabaja con nosotros
    • Podcast

    Recursos

    • Manual de Marca

    Soporte

    • Preguntas Frecuentes
    • Contáctanos

    Legal

    • Términos y Condiciones
    • Privacidad
    • Tyc promociones
    Reconocimientos
    Reconocimientos
    Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
    Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
    Logo reconocimientoPrimera Startup EdTech · 2018
    Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
    Logo reconocimientoCEO Mejor Emprendedor del año · 2024
    De LATAM conpara el mundo
    YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads