С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
25 / 9 / 17
Регистрация: 22.12.2015
Сообщений: 2,097

Создать взаимодействие классов с выводом на консоль

27.02.2018, 23:08. Показов 1132. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
суть
Квартиросъемщик отправляет Заявку, в которой указывает вид работ, масштаб и желаемое время исполнения. Диспетчер формирует соответствующую Бригаду и регистрирует ее в Плане работ.

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

Цель работы: Изучить реализацию принципов ООП (наследование и полиморфизм), а
также механизмы взаимодействия между классами; ознакомиться с UML и применить ее к
проектирование систем.

Задание:
- разработает UML-диаграмму классов системы в соответствии варианта задания (таблица)
- реализуйте разработанную диаграмму классов на java

//кот ест
public void eat(){
System.out.print("Eating...\n");

Добавлено через 41 секунду
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//Квартиросъемщик 
public class tenant {
     int count; // количество
        zayavka z;//тип заявка
    }
 
//Заявка
public class zayavka {
    string work; // вид работ
        string scale;//масштаб
       string time;//желаемое время исполнения
    }
 
//Диспечер
public class dispatcher
 {
    string name; // имя диспечера
        zayavka z;
        brigada b;// 
       planwork  pw;// 
       bool reg;
    }
//Бригада 
public class brigada {
    string name; // имя бригаді
        int count;//к-во бригад
        string manager;//руководитель бригаді
    }
 
//План работ
public class planwork 
 {
       string date;
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.02.2018, 23:08
Ответы с готовыми решениями:

Как добавить взаимодействие классов в диаграмму классов?
Нужна диаграмма классов для пояснительной записки вот такого вида Диаграмма классов которую генерирует visual studio 2012 ...

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

Выводом строки в консоль
Задача такова. Ввести с клавиатуры имя. Программа заносит это имя в STR и выводит Hello, %STR%. Но выводит она кракозябру. .model small ...

1
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
06.03.2018, 14:44
Я решил сделать следующим образом: клиент свои хотелки формализует в заказ, с которым будет работать диспетчер (а можно и еще кого-нибудь достаточно просто прикрутить), строя на его основе рабочий план и отдавая на выполнение.
Три паттерна: наблюдатель, билдер, фабрика и с натяжкой посредник в лице диспетчера.
Java
1
2
3
public interface Executable {
    void execute();
}
Java
1
2
3
4
5
public interface Observable {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers();
}
Java
1
2
3
public interface Observer {
    void update(String orderId, WorkType workType, boolean isComplex, String desiredDateOfCompletion);
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Client {
    private Order order;
 
    public Client() {
        System.out.println("Client: I want this and that and that");
        order = new Order(WorkType.WASH_WINDOWS, true, "22-12-2018");
    }
 
    public Order getOrder() {
        return order;
    }
 
    public void callDispatcher(Dispatcher dispatcher) {
        System.out.println("Client: I am calling dispatcher");
        order.registerObserver(dispatcher);
    }
 
    public void done() {
        System.out.println("Client: I am done with ordering, you can work");
        order.notifyObservers();
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public final class Dispatcher extends Worker implements Observer {
    private WorkPlan workPlan;
 
    @Override
    public void doWork() {
        System.out.println("Dispatcher: I am sending client request to service");
        workPlan.execute();
    }
 
    @Override
    public void update(String orderId, WorkType workType, boolean isComplex, String desiredDateOfCompletion) {
        WorkPlan.Builder builder = WorkPlan.newBuilder()
                .withOrderId(orderId)
                .withCompletionDate(desiredDateOfCompletion)
                .withWorker(workType.getWorker());
 
        if (isComplex)
            builder.withWorker(new Expert());
 
        workPlan = builder.build();
 
        System.out.println("Dispatcher: client request received");
    }
}
Java
1
2
3
4
5
6
public class Expert extends Worker {
    @Override
    public void doWork() {
        System.out.println("Expert engineer: I am verifying work all those guys did. Gimme $ !!");
    }
}
Java
1
2
3
4
5
6
public class Forester extends Worker {
    @Override
    public void doWork() {
        System.out.println("Forester: I am cutting trees");
    }
}
Java
1
2
3
4
5
6
public class ItGuy extends Worker {
    @Override
    public void doWork() {
        System.out.println("It guy: I am fixing PC");
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public final class Order implements Observable {
    private static int instanceCounter = 0;
 
    private List<Observer> observers;
 
    private String orderId;
 
    private WorkType workType;
 
    private boolean isComplex;
 
    private String desiredDateOfCompletion;
 
    public Order(WorkType workType, boolean isComplex, String desiredDateOfCompletion) {
        this.orderId = String.valueOf(++instanceCounter);
        this.workType = workType;
        this.isComplex = isComplex;
        this.desiredDateOfCompletion = desiredDateOfCompletion;
        this.observers = new ArrayList<>();
    }
 
    @Override
    public String toString() {
        return "Order " + orderId + "\n" +
                "type : " + workType + "\n" +
                "expert engineer requested : " + (isComplex ? "YES" : "NO") + "\n" +
                "desired completion date : " + desiredDateOfCompletion;
    }
 
    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
 
    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }
 
    @Override
    public void notifyObservers() {
        for (final Observer observer : observers) {
            observer.update(orderId, workType, isComplex, desiredDateOfCompletion);
        }
    }
}
Java
1
2
3
4
5
6
public class WindowWasher extends Worker {
    @Override
    public void doWork() {
        System.out.println("Window washer: I am washing windows");
    }
}
Java
1
2
3
public abstract class Worker {
    public abstract void doWork();
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
public final class WorkPlan implements Executable {
    private String orderId;
    private String completionDate;
    private String description;
 
    private List<Worker> workers;
 
    public static Builder newBuilder() {
        return new Builder();
    }
 
    private WorkPlan(final Builder builder) {
        this.orderId = builder.orderId;
        this.completionDate = builder.completionDate;
        this.workers = builder.workers;
        constructDescription();
    }
 
    @Override
    public void execute() {
        if (workers != null)
            workers.forEach(Worker::doWork);
    }
 
    @Override
    public String toString() {
        return description;
    }
 
    private void constructDescription() {
        description = "Work order " + orderId + "\n" +
                "for date : " + completionDate + "\n" +
                "assigned workers:";
        for (final Worker worker : workers) {
            description += " " + worker;
        }
    }
 
    public static class Builder {
        private String orderId;
        private String completionDate;
 
        private List<Worker> workers;
 
        public Builder withOrderId(final String orderId) {
            this.orderId = orderId;
            return this;
        }
 
        public Builder withCompletionDate(final String completionDate) {
            this.completionDate = completionDate;
            return this;
        }
 
        public Builder withWorker(final Worker worker) {
            if (workers == null)
                workers = new ArrayList<>();
 
            workers.add(worker);
 
            return this;
        }
 
        public WorkPlan build() {
            return new WorkPlan(this);
        }
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public enum WorkType {
    FIX_PC(new ItGuy()),
    WASH_WINDOWS(new WindowWasher()),
    CUT_TREES(new Forester());
 
    private Worker worker;
 
    WorkType(Worker worker) {
        this.worker = worker;
    }
 
    public Worker getWorker() {
        return worker;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Main {
    public static void main(String[] args) {
        Client client = new Client();
 
        Dispatcher dispatcher = new Dispatcher();
 
        client.callDispatcher(dispatcher);
 
        client.done();
 
        dispatcher.doWork();
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2018, 14:44
Помогаю со студенческими работами здесь

Что то с выводом в консоль
Ребят нужна помощь Простенькая программка объявляю динамический массив на 10 элементов и пытаюсь вывести их в консоль на VC++ 2008 ...

Ошибка с выводом в консоль
Добрый день столкнулся с такой проблемой в с++ 2008; #include &quot;stdafx.h&quot; int _tmain(int argc, _TCHAR* argv) { int i, c, k; ...

Что с выводом на консоль?
Имеется классическая функция рекурсивного поиска чисел Фибоначчи. Вывод на консоль ведёт себя неожиданно. Вот в этом варианте ...

Уравнение с выводом ответа в консоль
Есть уравнение из двух систем первая y1= x-2, если x&gt;=2; 8 если x&lt;2; вторая 4 если x=0, a-x если x&lt;&gt;0 Есть кое-какие наброски,...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru