java: вопрос: создание контейнера для фигур

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

yko
Интересующийся
Сообщения: 7
Зарегистрирован: 06 дек 2014, 23:40
Контактная информация:

java: вопрос: создание контейнера для фигур

Непрочитанное сообщение yko » 06 дек 2014, 23:51

всем доброго времени суток

есть сл. задание, состоящее из двух частей

//первая часть:
* определить иерархию фигур: Figure, Cirlce, Square, Rectangle.
* каждая фигура должна иметь метод получения площади фигуры,
* метод смещения фигуры на dx, dy и метод, который возвращает название фигуры.

public abstract class Figure {
double area();
void move(double dx, double dy);
public String name() {...}
}


моя реализация первой части представлена тут http://pastebin.com/2hpUcE66

//вторая часть:
* создать контейнер для фигур - класс Desc.
* контейнер должен агрегировать массив фигур
* и иметь групповые методы area, move, printNames.

private Figure[] figures;
public double area() {}
public void move(double dx, double dy) {...}
public void printNames() {...}


у меня два вопроса:
1 - правильность "дизайна" для первой части с точки зрения ООП - есть ли минусы в такой реализации. может я что-то упускаю.
2 - не представляю как реализовать "контейнер" для фигур, который может,к примеру, содержать 1 квадрат и 10 прямоугольников..
просьба проговорить решение вопроса аналитически (без кода), используя весь основной функционал языка.

большое спасибо.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: java: вопрос: создание контейнера для фигур

Непрочитанное сообщение Olej » 07 дек 2014, 11:21

yko писал(а): есть сл. задание, состоящее из двух частей
Вообще то, это (фигуры) - классическая задача, которую показывают к разговору про наследование классов ;-).
yko писал(а): моя реализация первой части представлена тут http://pastebin.com/2hpUcE66
Вы для оперативности обсуждения либо а). вкопируйте сюда примеры кода под тегом <code>, либо б). прикрепляйте файл с кодом к сообщению ... чтобы не бегать по ссылкам.

Ваша ... реализация ;-) - это ещё не реализация ;-) , она у вас компилировалась, кстати?
Всегда к реализации приделывайте какую-то main() тестовую функцию, которая могла бы показать ... ну, хотя бы создание объектов и их содержимое. И делать это на самых ранних этапах работы над задачей...
yko писал(а): вторая часть:
* создать контейнер для фигур - класс Desc.
* контейнер должен агрегировать массив фигур
* и иметь групповые методы area, move, printNames.
Контейнер - это любой тип, который вы можете наполнять другими объектами...
Пусть это будет массив ... но в общем виде вы можете выбирать разную реализацию.
yko писал(а): у меня два вопроса:
1 - правильность "дизайна" для первой части с точки зрения ООП - есть ли минусы в такой реализации. может я что-то упускаю.
2 - не представляю как реализовать "контейнер" для фигур, который может,к примеру, содержать 1 квадрат и 10 прямоугольников..
просьба проговорить решение вопроса аналитически (без кода), используя весь основной функционал языка.
1. Есть. ;-)
- Характеристические размеры (радиус, сторона, стороны, ... ) ваших фигур вовсе не нужно тащить (не должны присутствовать) в суперкласс.
- Не нужно вызывать явно (без нужды) суперкласс в конструкторах производных классов.
- Если вас просят String - только имя, то выдавать нужно только имя ... а не многословные объяснения.

2. ... ;-) а это вы не внимательно читали про наследование, и о присвоении ссылке суперкласса ссылки на производный класс. ;-)
Делайте контейнер для суперкласса.

3. "проговорить решение вопроса аналитически (без кода)" - это дело дурное ;-)
Программирование - это ремесло (в отличие от того, что разные учёные умники называют его то наукой, то искусством ;-) ... ).
Ремесло - это как гончар горшок лепит: можно только наблюдать со стороны и пробовать самому повторить. Другого способа нет.
Поэтому единственный способ обсуждения - показывать и смотреть код.
Я вам возможный вариант приложу, ... вы можете его для начала не смотреть ;-) :

Код: Выделить всё

[Olej@modules class]$ java FigureTest
это круг : [4.0,5.0] площадью 28.274333882308138
это квадрат : [-1.0,-3.0] площадью 25.0
это прямоугольник : [2.0,4.0] площадью 8.0
размерность контейнера = 11
наполнение: квадрат прямоугольник прямоугольник круг круг круг круг круг круг круг круг
суммарная площадь = 755.5618846132168
Здесь вам: 1 квадрат + 2 прямоугольника + 8 кругов ;-)
Вложения
FigureTest.java
(2.98 КБ) 260 скачиваний

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей