• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie związane z implementacją interfejsów

Object Storage Arubacloud
0 głosów
1,195 wizyt
pytanie zadane 10 października 2019 w Java przez magicznyukf Początkujący (260 p.)

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

1 odpowiedź

0 głosów
odpowiedź 10 października 2019 przez mbabane Szeryf (79,280 p.)

Trochę to przypomina wzorzec kompozyt. Być może trzeba wziąć pod uwagę, że skoro ICompositeNode jest także INode to do listy w klasie MyStructure może trafić obiekt typu ICompositeNode.

Podobne pytania

0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 13 sierpnia 2020 w Java przez amtrax Dyskutant (9,630 p.)
0 głosów
1 odpowiedź 286 wizyt
0 głosów
1 odpowiedź 340 wizyt
pytanie zadane 17 grudnia 2019 w Nasze projekty przez cSharpKazik Użytkownik (840 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...