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

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

14.11.2020, 13:59. Показов 3908. Ответов 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__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru