Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
5 / 5 / 2
Регистрация: 22.10.2012
Сообщений: 249

Возврат экземпляра класса

14.11.2020, 13:59. Показов 3954. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Поясните пожалуйста как выполнить задание:

Дан абстрактный класс прямоугольника Rectangle. А также интерфейс фабрики прямоугольников RectangleFactory.

1. Создайте конкретный класс RectangleFactoryImpl реализующий RectangleFactory

2. Фабрика должна возвращать экземпляры классов унаследованные от Rectangle и реализующие методы draw и getSquare

3. getSquare возвращает площадь прямоугольника int.

4. draw возвращает String в виде столбцов и строк заполненных звездочками. Например:
***
***
***
***
где число столбцов width = 3, а число строк height = 4.

Последняя строка звездочек также содержит перевод строки в конце.
Для проверки решения щелкните Check

Ожидаемый результат: Тесты должны завершиться успешно с надписью Correct.


Код:
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 abstract class Rectangle {
    protected int width;
    protected int height;
 
    public Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
    }
 
    public Rectangle() {
        this(25, 10);
    }
 
    public abstract int getSquare();
    public abstract String draw();
 
    public int getWidth() {
        return width;
    }
 
    public int getHeight() {
        return height;
    }
}
Java
1
2
3
4
public abstract class RectangleFactory {
    public abstract Rectangle getRectangle();
    public abstract Rectangle getRectangle(int witdh, int height);
}
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 class RectangleFactoryImpl extends RectangleFactory {
 
    @Override
    public Rectangle getRectangle() {
        Rectangle rectangle = new Rectangle() {
            @Override
            public int getSquare() {
                return 0;
            }
 
            @Override
            public String draw() {
                return null;
            }
        };
        return rectangle;
    }
 
    @Override
    public Rectangle getRectangle(int witdh, int height) {
        return null;
    }
 
}
процедуры (задание 3,4) сделал:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    
public int getSquare (int witdh, int height){
        return witdh * height;
    }
 
public String draw (int witdh, int height){
        StringBuilder tabl = new StringBuilder();
 
        if (witdh > 0 & height > 0){
            for(int i = 0; i < height; i++)
            {
                for(int j = 0; j < witdh; j++){
                    tabl.append("*");
                }
                tabl.append("\n");
            }
        }
 
        return tabl.toString();
    }
Добавил их в класс public class RectangleFactoryImpl extends RectangleFactory.

Таким образом:

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
public class RectangleFactoryImpl extends RectangleFactory {
 
    @Override
    public Rectangle getRectangle() {
        Rectangle rectangle = new Rectangle() {
            @Override
            public int getSquare() {
                return 0;
            }
 
            @Override
            public String draw() {
                return null;
            }
        };
        return rectangle;
    }
 
    @Override
    public Rectangle getRectangle(int witdh, int height) {
        return null;
    }
    public int getSquare (int witdh, int height){
        return witdh * height;
    }
 
    public String draw (int witdh, int height){
        StringBuilder tabl = new StringBuilder();
 
        if (witdh > 0 & height > 0){
            for(int i = 0; i < height; i++)
            {
                for(int j = 0; j < witdh; j++){
                    tabl.append("*");
                }
                tabl.append("\n");
            }
        }
 
        return tabl.toString();
    }
 
}

Не понимаю как сделать п. 2. Подскажите пожалуйста. На сколько я понимаю при вызове примерно так:
Java
1
RectangleFactory factory = new RectangleFactoryImpl();
по переменной factory должны быть доступны getRectangle() и getRectangle(int witdh, int height).

А уже после вызова Rectangle rectangle = factory.getRectangle(); должны быть доступны public int getSquare (int witdh, int height) и public String draw (int witdh, int height) но в данной ситуации не понимаю откуда мы получаем int witdh, int height.

Но если вызывать Rectangle rectangle = factory.getRectangle(25, 10); то всё вроде получается. Но проверочная система ругается.

Прошу помощи
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.11.2020, 13:59
Ответы с готовыми решениями:

Как при создании экземпляра класса инициализировать переменные вложенного класса
Здравствуйте. Подскажите пожалуйста как при создании екземпляра класа инициализировать переменные вложеного класа. Добавлено через 22...

Как передать входящее значение одного метода класса на возврат в другой метод того же класса?
Я самый новейший новичок. Помогите.Как передать входящее значение (количество еды) метода feed класса Cat на возврат(return) в метод...

Добавление экземпляра класса в список
Добрый день, дорогие форумчане, мне дали задание : Создать пользовательский класс с полем string, создать список и заполнить его...

2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.11.2020, 15:19
JleHuH213, как минимум,
Цитата Сообщение от JleHuH213 Посмотреть сообщение
public abstract class RectangleFactory {
это должен быть интерфейс, а не абстрактный класс
Соответственно RectangleFactoryImpl implements RectangleFactory

Да и возвращаться должны наследники Rectangle.
0
 Аватар для Aviz__
2757 / 2064 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
14.11.2020, 15:52
Цитата Сообщение от JleHuH213 Посмотреть сообщение
А также интерфейс фабрики
мне думается, что это значит следующее.
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public class Helper {
 
    public static void main(String[] args) {
        RectangleFactoryImpl factory = new RectangleFactoryImpl();
        AbstractRect rect1 = factory.getRectangle('R', 10,11);
        AbstractRect rect2 = factory.getRectangle('S', 10,11);
        System.out.println(rect1.getArea() + "\n" + rect2.getArea());
    }
}
abstract class AbstractRect {
    protected char typeRect;
    protected int width;
    protected int height;
 
    AbstractRect(char typeRect, int width, int height) {
        this.typeRect = typeRect;
        this.width = width;
        this.height = height;
    }
 
    public abstract int getArea();
    public abstract void draw();
 
    public int getWidth() {
        return width;
    }
 
    public int getHeight() {
        return height;
    }
 
    @Override
    public String toString() {
        return  "typeRect=" + typeRect +
                ", width=" + width +
                ", height=" + height;
    }
}
class Rectangle extends AbstractRect {
 
    Rectangle(int width, int height) {
        super('R',width, height);
    }
 
    public Rectangle() {
        this(25, 10);
    }
 
    @Override
    public int getArea() {
        return super.width * super.height;
    }
 
    @Override
    public void draw() {
        System.out.println("Draw Rectangle");
    }
 
 
}
class Square extends AbstractRect {
 
    Square(int width) {
        super('S',width, width);
    }
 
    public Square() {
        this(10);
    }
 
    @Override
    public int getArea() {
        return super.width * super.height;
    }
 
    @Override
    public void draw() {
        System.out.println("Draw Rectangle");
    }
}
interface RectangleFactory {
    AbstractRect getRectangle(char type, int width, int height);
}
class RectangleFactoryImpl implements RectangleFactory {
    @Override
    public AbstractRect getRectangle(char type, int width, int height) {
        if (type == 'R') return new Rectangle(width, height);
        else return new Square(width);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2020, 15:52
Помогаю со студенческими работами здесь

Использование одного экземпляра класса
Всем добрый день! Вот хоть убей, не могу понять как! Суть такая. Есть игра, в игре 4 класса, а именно. Main в котором идет игра....

Непонятный пример экземпляра класса
Что значит? Выходит на 36 строке. Сам код public class delegate { private interface Graphics { void draw(); }

Использование одного экземпляра класса
Добрый день! Помогите, никак не могу накопать нужную информацию. Как использовать один и тот же экземпляр класса, одну инстанту? В...

Создание экземпляра класса-фабрики BorderPaneBuilder
Вот прочитал в книге: Компонент BorderPane представлен классом javafx.scene.layout.BorderPane, экземп- ляр которого может быть...

OutOfMemoryError при создании экземпляра класса в цикле
Здравствуйте! У меня есть функция, реализующая поиск на отрезке методом дихотомии. Там используется цикл, где на каждой итерации создается...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru