Професионална програма
Loading...
+ Нов въпрос
djc_bg2015 avatar djc_bg2015 923 Точки

[Homework] Java OOP - Въпрос относно Problem 1. Geometry

Здравейте,

започнах да пиша домашното към темата, и имам един въпрос относно задача 1:

Ето как съм конструирал проекта до тук:

- абстрактен клас Vertex с наследници Vertex2d/Vertex3d

- абстрактен клас Shape с абстрактни наследници PlaneShape/SpaceShape и всички конкретни форми като наследници

 

Как точно ще стане това абстрактния клас Shape да има лист от Vertex а неговите абстрактни наследници PlaneShape и SpaceShape да имат листове от сътвтно Vertex2d и Vertex3d ? Проблема е че когато добавя полето лист от вектори в Shape заедно с конструктор и после опитам в PlaneShape да преизползвам родителския конструктор , с лист от Vertex2d и ми казва че е невъзможно...

 

Май го написах доста объркващо, но ако някой ме разбере нека пише :)

Тагове:
2
Java Advanced 29/10/2015 22:27:31
Filkolev avatar Filkolev 4485 Точки
Best Answer

Мисля, че проблемът е, че опитваш да запазиш ArrayList<Vertex2d> в поле ArrayList<Vertex>. Поне доколкото рабрах от обяснението ти.

Решението е да си ползваш списъка с абстрактни точки, в конструктора на PlaneShape да приемаш като параметър списък с двуизмерни точки и да ги напълниш ръчно в списъка, който е в родителския клас (вместо да присвояваш целия списък). Направи си обаче някакъв метод/пропърти в Shape, с който наследниците да могат да достъпват и да пълнят списъка на родителя.

1
djc_bg2015 avatar djc_bg2015 923 Точки

Абсолютно си ме разбрал правилно! :)

Благодаря за подсказката - продължавам по задачата.

Поздрави!

0
Filkolev avatar Filkolev 4485 Точки

Надявам се, че си ме разбрал, че не ми е много подробно обяснението. В списък от Vertex може да вкарваш Vertex2D, но в променлива List<Vertex> не може да сложиш List<Vertex2D>, защото второто не е наследник на първото, и двете са списъци. 

0
djc_bg2015 avatar djc_bg2015 923 Точки

Ами разбрах как да реша проблема :)

А сега след втория ти пост, вече разбрах и какъв е проблема. То близко да акъла, но кой д се сети..

А и интелито не помага много .. само ми пишеше - едното в другото не влиза и до там.

Благодаря ти отново!

0
29/10/2015 23:13:18