Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб_10 Головков И.Е. 12002108 Абстрактная фабрика

.docx
Скачиваний:
3
Добавлен:
26.06.2024
Размер:
262.91 Кб
Скачать

БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ

ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»

(НИУ «БелГУ»)

ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ

Кафедра информационных и робототехнических систем

Отчет по лабораторной работе № 10 по дисциплине «Методы и средства проектирования информационных систем и технологий»

Вариант № 3

Тема работы «Абстрактная фабрика»

студента очного отделения

3 курса 12002108 группы

Головкова Игоря Евгеньевича

Проверил:

асс. Пузырев Никита Сергеевич

БЕЛГОРОД, 2024

Вариант №3

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

Диаграмма классов для программы представлена на рисунке 1.

Рисунок 1 – Диаграмма классов

Результат работы программы, использующей паттерн абстрактная фабрика, представлена на рисунке 2.

Рисунок 2 – Результат работы программы, использующей паттерн абстрактная фабрика

// Класс Main public class Main { public static void main(String[] args) { Auto sedan = new Auto(new SedanCarFactory()); sedan.useCorpus(); sedan.useEngine(); Auto universal = new Auto(new UniversalCarFactory()); universal.useCorpus(); universal.useEngine();} }

// Абстрактный класс Corpus

public abstract class Corpus { public abstract void useCorpus(); }

// Класс DieselEngine

public class DieselEngine extends Engine { @Override public void useEngine() { System.out.println("Используется дизельный двигатель"); } }

// Абстрактный класс Engine

public abstract class Engine { public abstract void useEngine(); }

// Класс PetrolEngine

public class PetrolEngine extends Engine { @Override public void useEngine() { System.out.println("Используется бензиновый двигатель"); } }

// Класс SedanCorpus

public class SedanCorpus extends Corpus { @Override public void useCorpus() { System.out.println("Используется корпус седана"); } }

// Класс UniversalCorpus

public class UniversalCorpus extends Corpus { @Override public void useCorpus() { System.out.println("Используется корпус универсала"); } }

// Класс Auto

public class Auto { private final Corpus corpus; private final Engine engine; public Auto(AutoFactory autoFactory) { this.corpus = autoFactory.createCorpus(); this.engine = autoFactory.createEngine(); } public void useEngine() { engine.useEngine(); } public void useCorpus() { corpus.useCorpus(); } }

// Абстрактный класс AutoFactory

public abstract class AutoFactory { public abstract Corpus createCorpus(); public abstract Engine createEngine(); }

// Класс SedanCarFactory

public class SedanCarFactory extends AutoFactory { @Override public Corpus createCorpus() { return new SedanCorpus(); } @Override public Engine createEngine() { return new PetrolEngine(); } }

// Класс AutoFactory

public class UniversalCarFactory extends AutoFactory { @Override public Corpus createCorpus() { return new UniversalCorpus(); } @Override public Engine createEngine() { return new DieselEngine(); } }