всем доброго времени суток
есть сл. задание, состоящее из двух частей
//первая часть:
* определить иерархию фигур: 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 прямоугольников..
просьба проговорить решение вопроса аналитически (без кода), используя весь основной функционал языка.
большое спасибо.
java: вопрос: создание контейнера для фигур
Модератор: Olej
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: java: вопрос: создание контейнера для фигур
Вообще то, это (фигуры) - классическая задача, которую показывают к разговору про наследование классов .yko писал(а): есть сл. задание, состоящее из двух частей
Вы для оперативности обсуждения либо а). вкопируйте сюда примеры кода под тегом <code>, либо б). прикрепляйте файл с кодом к сообщению ... чтобы не бегать по ссылкам.yko писал(а): моя реализация первой части представлена тут http://pastebin.com/2hpUcE66
Ваша ... реализация - это ещё не реализация , она у вас компилировалась, кстати?
Всегда к реализации приделывайте какую-то main() тестовую функцию, которая могла бы показать ... ну, хотя бы создание объектов и их содержимое. И делать это на самых ранних этапах работы над задачей...
Контейнер - это любой тип, который вы можете наполнять другими объектами...yko писал(а): вторая часть:
* создать контейнер для фигур - класс Desc.
* контейнер должен агрегировать массив фигур
* и иметь групповые методы area, move, printNames.
Пусть это будет массив ... но в общем виде вы можете выбирать разную реализацию.
1. Есть.yko писал(а): у меня два вопроса:
1 - правильность "дизайна" для первой части с точки зрения ООП - есть ли минусы в такой реализации. может я что-то упускаю.
2 - не представляю как реализовать "контейнер" для фигур, который может,к примеру, содержать 1 квадрат и 10 прямоугольников..
просьба проговорить решение вопроса аналитически (без кода), используя весь основной функционал языка.
- Характеристические размеры (радиус, сторона, стороны, ... ) ваших фигур вовсе не нужно тащить (не должны присутствовать) в суперкласс.
- Не нужно вызывать явно (без нужды) суперкласс в конструкторах производных классов.
- Если вас просят 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
- Вложения
-
- FigureTest.java
- (2.98 КБ) 263 скачивания
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя