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

Лаб_9 Головков И.Е. 12002108 Одиночка

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

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

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

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

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

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

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

Вариант № 3

Тема работы «Одиночка»

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

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

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

Проверил:

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

БЕЛГОРОД, 2024

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

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

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

Результат работы программы, использующей паттерны одиночка и адаптер (из л.р. 1), представлена на рисунках 2 и 3.

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

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

// Класс FxmlApplication

public class FxmlApplication extends Application { @Override public void start(Stage stage) throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(FxmlApplication.class.getResource("hello-view.fxml")); Scene scene = new Scene(fxmlLoader.load()); stage.setTitle("Lab 3 Singleton"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(); } }

// Класс FxmlController

public class FxmlController { @FXML private Button trackButton; @FXML private TextField trackField; @FXML private Label trackLabel; @FXML private void setTrackName() { IPlayer player = new PlayerAdapter(); trackLabel.setText(STR."Для человека с Id \{PersonSingleton.getInstance().hashCode()}" + STR." \{PersonSingleton.getInstance().playTrack(player, trackField.getText())}"); } }

//Интерфейс IPlayer

public interface IPlayer { String getPlayingTrack(String trackName); }

// Класс PersonSingleton

class PersonSingleton { private static volatile PersonSingleton instance; private PersonSingleton() { } public static synchronized PersonSingleton getInstance() { if (instance == null) { instance = new PersonSingleton(); } return instance; } public String playTrack(IPlayer player, String trackName) { return STR."\{player.getPlayingTrack(trackName)}" ; } }

// Класс Player

@Setter public class Player { private String trackName; public String play() { return STR."Играет песня: \{trackName}"; } }

// Класс PlayerAdapter

public class PlayerAdapter implements IPlayer { Player player = new Player(); @Override public String getPlayingTrack(String trackName) { player.setTrackName(trackName); return player.play(); } }