Объясни абстракцию с точки зрения одного экземпляра магазина у которого есть множество отделов

«Объясни абстракцию с точки зрения одного экземпляра магазина у которого есть множество отделов» — вопрос из категории ООП, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Абстракция позволяет представить магазин как объект, скрывая детали работы отделов. Например:

class Store {
    private List<Department> departments;

    public void addDepartment(Department department) {
        departments.add(department);
    }

    public void open() {
        for (Department d : departments) {
            d.operate();
        }
    }
}

Здесь Store - абстракция, скрывающая:

  • Конкретные типы отделов (продукты, одежда)
  • Внутреннюю логику работы отделов
  • Способ хранения отделов

Мы работаем с магазином через простой интерфейс (addDepartment, open), не зная деталей реализации. Это упрощает использование и позволяет изменять внутреннюю структуру без изменения кода, который использует магазин.