Witam,
Kiedyś dostałem zadanie rekrutacyjne w pewnej firmie. Teraz znalazłem je na dysku i chciałem zrobić, ale nie do końca rozumiem o co chodzi.
Treść zadania:
Poniżej przekazujemy zadanie z prośbą o analizę poniższego kodu i zaimplementowanie metod findByCode, findByRenderer, count w klasie MyStructure - najchętniej unikając powielania kodu i umieszczając całą logikę w klasie MyStructure. Z uwzględnieniem w analizie i implementacji interfejs ICompositeNode!
interface IMyStructure {
// zwraca węzeł o podanym kodzie lub null
INode findByCode(String code);
// zwraca węzeł o podanym rendererze lub null
INode findByRenderer(String renderer);
//zwraca liczbę węzłów
int count();
}
public class MyStructure implements IMyStructure {
private List<INode> nodes;
}
interface INode {
String getCode();
String getRenderer();
}
interface ICompositeNode extends INode {
List<INode> getNodes();
}
Wydawało mi się, że zrobiłem to zadanie, ale nie doczytałem ostatniego zdania. Miałem coś takiego:
public class MyStructure implements IMyStructure {
private List<INode> nodes;
@Override
public INode findByCode(String code) {
for (int i = 0; i < nodes.size(); i++) {
if (code.equals(nodes.get(i).getCode()))
return nodes.get(i);
}
return null;
}
@Override
public INode findByRenderer(String renderer) {
for (int i = 0; i < nodes.size(); i++) {
if (renderer.equals(nodes.get(i).getRenderer()))
return nodes.get(i);
}
return null;
}
@Override
public int count() {
return nodes.size();
}
}
Ostatnie zdanie mówi o implementacji interfejsu ICompositeNode. Nie rozumiem jak miałoby to wyglądać. Mam coś takiego:
public class MyStructure implements IMyStructure,ICompositeNode {
private List<INode> nodes;
@Override
public INode findByCode(String code) {
for (int i = 0; i < nodes.size(); i++) {
if (code.equals(nodes.get(i).getCode()))
return nodes.get(i);
}
return null;
}
@Override
public INode findByRenderer(String renderer) {
for (int i = 0; i < nodes.size(); i++) {
if (renderer.equals(nodes.get(i).getRenderer()))
return nodes.get(i);
}
return null;
}
@Override
public int count() {
return nodes.size();
}
@Override
public String getCode() {
return null;
}
@Override
public String getRenderer() {
return null;
}
@Override
public List<INode> getNodes() {
return nodes;
}
}
Muszę zaimplementować metody z interfejsu, ale nie wiem w jaki sposób mają działać w tym przypadku metody getCode() czy getRenderer(). Nie wiem też czy pozostałe implementacje są poprawne.
Może ktoś zerknąć fachowym okiem?
Dzięki z góry