Sobes.tech
Junior — Middle
75

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

Answer from AI

sobes.tech AI

Абстракция — это выделение существенных характеристик объекта и скрытие деталей, несущественных для текущей задачи.

На примере магазина с несколькими отделами абстракция позволит описать общий интерфейс магазина, не вдаваясь в детали каждого отдела. Например, можно создать класс Магазин с методами продатьТовар(), получитьСписокОтделов(), а конкретные отделы (одежда, электроника, продукты) будут реализовывать эти методы по-своему.

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

Пример на Java:

interface Отдел {
    void продатьТовар(String товар);
}

class ОтделОдежды implements Отдел {
    public void продатьТовар(String товар) {
        System.out.println("Продажа одежды: " + товар);
    }
}

class Магазин {
    private List<Отдел> отделы = new ArrayList<>();

    public void добавитьОтдел(Отдел отдел) {
        отделы.add(отдел);
    }

    public void продатьВМагазине(String товар) {
        for (Отдел отдел : отделы) {
            отдел.продатьТовар(товар);
        }
    }
}

Здесь Магазин абстрагирует работу с отделами, а конкретные отделы реализуют детали продажи.