es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Dónde ocurre exactamente la abstracción?

Soy consciente del concepto de abstracción en programación y del uso de interfaces y clases abstractas, pero estoy un poco confundido/a en cuanto a cómo se logra realmente y dónde ocurre la abstracción. Considera el siguiente ejemplo básico con una interfaz en C#:

interface MyInterface 
{
    int Add(int num1, int num2);
}

public class MyClass : MyInterface
{
    public int Add (int num1, int num2)
    {
        return num1 + num2;
    }
}

public class Program 
{
    public static void Main (string[] arg) 
    {
        MyClass MyObject = new MyClass(); 
        Console.WriteLine(MyObject.Add(1,2));
    }  
}

¿Dónde se produce la abstracción? Para mí, como programador/a, no parece haber ninguna. No parece haber ocultamiento de detalles de implementación. Simplemente puedo crear un nuevo objeto MyClass con una referencia a MyClass e interactuar directamente con sus métodos. ¿Cómo abstrae la interfaz a MyClass y sus métodos?

Quizás si la función “Add” ejecuta otra función de otra clase, entonces esa función y esa clase en particular estarían ocultas y abstraídas. Pero no entiendo por qué se necesita una interfaz o una clase abstracta para facilitar esto.

Supongo que la abstracción a través de una interfaz debe ocurrir cuando he creado mi programa, digamos como una especie de biblioteca, y otro usuario quiere usar mi biblioteca de clases en su código.

¡Agradecería mucho alguna aclaración!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La abstracción en programación ocurre cuando se utiliza una representación simplificada de algo complejo para interactuar con ese algo. En el caso de las interfaces y las clases abstractas en C#, la abstracción ocurre al proporcionar un contrato que establece cómo una clase debe comportarse, sin especificar cómo debe hacerlo. En el ejemplo dado, la interfaz MyInterface establece un contrato para que una clase tenga un método Add que tome dos enteros como parámetros y devuelva su suma. La clase MyClass, entonces, implementa esta interfaz al proporcionar su propia implementación del método Add.

    La abstracción ocurre cuando el usuario de la clase solo se preocupa por el contrato proporcionado por la interfaz y no por los detalles específicos de implementación de MyClass. El usuario puede interactuar con MyClass utilizando su interfaz, sin saber cómo realmente funciona. La interfaz proporciona un nivel de abstracción al simplificar la interacción con MyClass y permitir que el usuario se centre en la funcionalidad proporcionada por el contrato.

    En el ejemplo dado, la abstracción podría ser útil si múltiples clases implementan la interfaz MyInterface, permitiendo a los usuarios cambiar entre diferentes implementaciones sin cambiar su código. Además, si la interfaz se utiliza en una biblioteca, como se menciona en la pregunta, otros usuarios pueden interactuar con la biblioteca utilizando la interfaz sin necesidad de conocer los detalles de implementación de las clases en la biblioteca.

    En general, la abstracción proporcionada por las interfaces y las clases abstractas en C# permite una interacción simplificada con clases y bibliotecas complejas, lo que facilita a los usuarios centrarse en la funcionalidad en lugar de los detalles de implementación.

Comments are closed.