Основной вопрос Понимание абстракции в программировании

Я использовал интерфейс и абстрактный класс и упускал из виду несколько вещей. Я всегда игнорировал несколько важных вещей, о которых я хотел бы узнать подробнее сейчас:

Итак, я понимаю, что абстракция - это процесс сокрытия ненужных функций от пользователя, мне интересно, когда я использую интерфейс, он обеспечивает абстракцию и скрывает ненужный код. Я хочу знать, кто является пользователем в приведенном ниже коде и где на самом деле происходит абстракция.

public class Program
{
    public static void Main()
    {
        IFile file1 = new FileInfo();
        FileInfo file2 = new FileInfo();
    
    file1.ReadFile(); 
    file1.WriteFile("content"); 
    
    file2.ReadFile(); 
    file2.WriteFile("content"); 
}
}

interface IFile
{
    void ReadFile();
    void WriteFile(string text);
}

class FileInfo : IFile
{
    public void ReadFile()
    {
        Console.WriteLine("Reading File");
    }
public void WriteFile(string text)
{
    Console.WriteLine("Writing to file");
}
}

Пожалуйста, объясните мне, кто здесь пользователь и где происходит абстракция. У меня слабый мозг, когда дело доходит до понимания некоторых определений.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
7
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Метод Main в классе Program — это пользователь. Метод Main создает экземпляры интерфейса IFile и класса FileInfo и вызывает их методы.

Абстракция используется в коде через интерфейс IFile. Интерфейс абстрагируется от конкретных деталей реализации класса FileInfo. Пользователь (метод Main) взаимодействует с интерфейсом IFile, который предоставляет набор методов (а именно, ReadFile и WriteFile), определяющих желаемую функциональность. Пользователю не нужно знать о внутренней реализации класса FileInfo; им нужно знать только об абстракции, предоставляемой интерфейсом.

При использовании интерфейса абстракция достигается за счет сокрытия ненужных деталей кода и предоставления упрощенного интерфейса, ориентированного на желаемую функциональность. Пользователь может использовать методы ReadFile и WriteFile, не беспокоясь о том, как они реализованы в классе FileInfo.

Таким образом, пользователь — это метод Main, а абстракция происходит за счет использования интерфейса IFile, который скрывает детали реализации класса FileInfo и предоставляет упрощенный и согласованный интерфейс для работы с файлами.

Вот аналогия, которая может помочь вам понять абстракцию в этом контексте:

Представьте, что вы посетитель ресторана. Вам не нужно знать, как шеф-повар готовит вашу еду, чтобы наслаждаться ею. Вы просто заказываете еду из меню, а шеф-повар позаботится обо всем остальном. Шеф-повар — это деталь реализации, а меню — абстракция. Меню предоставляет вам упрощенный интерфейс, который позволяет вам заказывать еду, которую вы хотите, не беспокоясь о деталях того, как она готовится.

Точно так же интерфейс IFile предоставляет упрощенный интерфейс, который позволяет пользователю работать с файлами, не беспокоясь о деталях их реализации. Это достигается за счет абстракции.

Другие вопросы по теме