Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.14 KB | None | 0 0
  1. //W odpowiedzi na zainteresowanie naszą ofertą pracy chcielibyśmy zaprosić Pana do pierwszego etapu rekrutacji na stanowisko Java //Developer w firmie Horus.
  2.  
  3. //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!  
  4.  
  5. //Prosimy o wykonanie zadania bez korzystania z pomocy.
  6.  
  7. import java.util.Iterator;
  8. import java.util.List;
  9.  
  10. interface IMyStructure {
  11.     // zwraca węzeł o podanym kodzie lub null
  12.     INode findByCode(String code);
  13.     // zwraca węzeł o podanym rendererze lub null
  14.     INode findByRenderer(String renderer);
  15.     //zwraca liczbę węzłów
  16.     int count();
  17.  
  18. }
  19.  
  20. public class MyStructure implements IMyStructure {
  21.     private List<INode> nodes;
  22.     private Iterator<INode> iterator = nodes.iterator();
  23.     private INode iNode;
  24.  
  25.     @Override
  26.     public INode findByCode(String code) {
  27.         return iterate(code);
  28.     }
  29.  
  30.     @Override
  31.     public INode findByRenderer(String renderer) {
  32.         return iterate(renderer);
  33.     }
  34.  
  35.     private INode iterate(String s) {
  36.         while(iterator.hasNext()){
  37.             INode iNode = iterator.next();
  38.             if(isCompositeNode(iNode)) {
  39.                 nodes.addAll(((ICompositeNode) iNode).getNodes());
  40.             }
  41.             if (iNode.getCode().equals(s)) {
  42.                 return iNode;
  43.             }
  44.         }
  45.         return null;
  46.     }
  47.  
  48.     @Override
  49.     public int count() {
  50.         int i=0;
  51.         for(INode iNode : nodes){
  52.             if(isCompositeNode(iNode)){
  53.                 i+=((ICompositeNode) iNode).getNodes().size();
  54.             }
  55.             else
  56.                 i++;
  57.         }
  58.         return i;
  59.     }
  60.  
  61.     private boolean isCompositeNode(INode iNode){
  62.         return(iNode instanceof ICompositeNode);
  63.     }
  64. }
  65.  
  66. interface INode {
  67.     String getCode();
  68.     String getRenderer();
  69. }
  70.  
  71. interface ICompositeNode extends INode {
  72.     List<INode> getNodes();
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement