Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.02.2017
Сообщений: 4

Класс: Классы "Док" и "Корабль".

01.10.2017, 22:32. Показов 2531. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с заданием. Создайте на Java простые классы и продемонстрируйте их функции . Каждый класс должен иметь конструктор , атрибуты и методы.
Классы док и корабль. Класс-обработчик реализует выдачу разрешения на вход корабля в порт и помещает корабль в заданный свободный док.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2017, 22:32
Ответы с готовыми решениями:

Разработать классы Корабль, Река, Шлюз
Здравствуйте, уважаемые форумчане. У меня возникла небольшая проблема, прошу помочь мне по возможности. Помогите разработать классы...

Класс космический корабль
Создайте на языке Java класс космический корабль, который имеет массив строк - имен космонавтов экипажа. Должна быть функция Добавить(имя)...

Работа с классами. Разработать класс - космический корабль
Ребят, только начинаю осваивать классы, не могли бы вы мне хоть словами помочь, что мне нужно делать в этом задании?Пожалуйста не посылайте...

3
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
01.10.2017, 23:49
Лучший ответ Сообщение было отмечено ans3 как решение

Решение

ans3,
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
69
70
71
72
73
74
75
76
package com.mycompany.Entitys;
 
import java.util.HashSet;
import java.util.Set;
 
public class NewMain {
    public static boolean razreshenie = true;
    public static void main(String[] args) {
        Doc doc1 = new Doc(3, "Caribic");
        Doc doc2 = new Doc(1, "Caribic bue");
        Ship pirate1 = new Ship(15, "Pirate Jack");
        Ship pirate2 = new Ship(10, "Pirate Jimmy");
        Ship pirate3 = new Ship(12, "Pirate Joe");
        Ship pirate4 = new Ship(8, "Pirate Jesy");
        System.out.println(doc1.setShip(pirate1));
        System.out.println(doc1.setShip(pirate2));
        System.out.println(doc1.setShip(pirate3));
        System.out.println(doc1.setShip(pirate4));
                
    }
}
class Doc {
 
    private int capacity;
    public String name;
    private Set<Ship> ships;
    
    public Doc() {
    }
    
    public Doc(int capacity, String name) {
        this.capacity = capacity;
        this.name = name;
        ships = new HashSet<>(this.capacity);
    }
    public String setShip(Ship sh) {
        if(capacity > ships.size()) {
            ships.add(sh);
        return "ship "+ sh.name +" is Doc";
        }
        else return "Doc is full";
    }
    public Set<Ship> getShip() {
        return ships;
    }
    
    public int getCapacity() {
        return capacity;
    }
 
    public void setCapacity(int capacity) {
        this.capacity = capacity;
    }
    
}
class Ship {
 
    public Ship() {
    }
    private int size;
    public String name;
 
    public Ship(int size, String name) {
        this.size = size;
        this.name = name;
    }
 
    public int getSize() {
        return size;
    }
 
    public void setSize(int size) {
        this.size = size;
    }
    
}
Надо конечно подправить и доделать, но думаю что справитесь.

Да, разрешение забыл, но if() вначале вставиле и все ок. И еще с английским там беда (типа is..итд.) я быстренько делал не заморачивался
1
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
19.05.2018, 16:53
Лучший ответ Сообщение было отмечено ans3 как решение

Решение

Чуть усложненная версия. Двойной паттерн visitor. Добавлена сущность "капитан порта", который и выдает разрешение на причаливание. Он -- визитер №1. Корабль, запрашивает разрешение и пытается причалить. Он -- и визитер №2 (посещает порт), и посещаемый (его посещает капитан порта для принятия решения о выдаче разрешения).
Java
1
2
public interface Visitor {
}
Java
1
2
3
public interface Authorizer extends Visitor {
    void authorize(CruiseShip ship);
}
Java
1
2
3
public interface Dockable extends Visitor {
    void enter(Port port);
}
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
public class CruiseShip implements Dockable {
    private String name;
 
    private boolean isAuthorized;
 
    public CruiseShip(String name) {
        this.name = name;
    }
 
    public boolean isAuthorized() {
        return isAuthorized;
    }
 
    public void setAuthorized(boolean authorized) {
        isAuthorized = authorized;
    }
 
    public void requestAuthorization(Authorizer authorizer) {
        authorizer.authorize(this);
    }
 
    public String getName() {
        return name;
    }
 
    @Override
    public void enter(Port port) {
        requestAuthorization(port.getCaptain());
        port.tryAccept(this);
    }
}
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 Port {
    private List<CruiseShip> cruiseShips;
 
    private PortCaptain captain;
 
    public Port() {
        this.cruiseShips = new ArrayList<>();
        this.captain = new PortCaptain();
    }
 
    public void tryAccept(CruiseShip ship) {
        if (ship.isAuthorized()) {
            cruiseShips.add(ship);
            System.out.println(ship.getName() + " docked to pier " + cruiseShips.size());
        } else
            System.out.println(ship.getName() + " is not authorized to dock to pier " + (cruiseShips.size() + 1));
    }
 
    public PortCaptain getCaptain() {
        return captain;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class PortCaptain implements Authorizer {
    @Override
    public void authorize(CruiseShip ship) {
        ship.setAuthorized(Helper.randomBoolean());
    }
 
    private static class Helper {
        private static boolean randomBoolean() {
            return ThreadLocalRandom.current().nextBoolean();
        }
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Main {
    public static void main(String[] args) {
        CruiseShip queenMary = new CruiseShip("Queen Mary");
        CruiseShip princessAnastacia = new CruiseShip("Princess Ananstacia");
        CruiseShip stormbreaker = new CruiseShip("Stormbreaker");
 
        Port port = new Port();
 
        queenMary.enter(port);
        princessAnastacia.enter(port);
        stormbreaker.enter(port);
    }
}
3
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
19.05.2018, 18:55
HighPredator, шикарно!
Как всегда, впрочем...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.05.2018, 18:55
Помогаю со студенческими работами здесь

После програм создания док. -если окно формы списка открыто, то оно активизируется, а курсор не ставится на нужном док!
Добрый день. Проблема в следующем. После программного создания документа ДокТВ нужно чтоб открылась форма и курсор был установлен на вновь...

Создать иерархию типов – корабль, пассажирский транспорт и пассажирский корабль
Помогите пожалуйста кодом! А то не очень понимаю. Задание Создать иерархию типов – корабль, пассажирский транспорт и пассажирский...

ООП. Создать класс "космический корабль"
Создать класс &quot;космический корабль&quot;. Схематически изображенный космический корабль стартует, затем последовательно отделяет первую,...

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.)
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию...

Класс: Создать базовый класс «работник фирмы» и производные классы «стажер», «руководящий сотрудник», «директор»...
Всем привет, помогите пожалуйста, я уже всю голову сломал, не знаю как решить ее... Создать базовый класс «работник фирмы» и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru