julia_v_iluhina

Untitled

Sep 14th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.30 KB | None | 0 0
  1.     private void givenAllActive(String a){
  2. /*
  3.     Для добавления одой активной таски - ок )
  4.     это работает
  5.  
  6.     передаем - мы текст таски
  7.     разумнее такой параметр назвать taskText
  8.     получим - givenAllActive(String taskText)
  9.  
  10.     имя метода  - мы улучшим тоже)
  11.     но - чуть позже
  12.  
  13.     следующий шаг - дореализовать этот метод
  14.     чтобы он прининимал несколько текстов тасок
  15.     и в результате - мы видели картину - в списке тасок -
  16.     все эти таски в активном состоянии
  17.     получим - givenAllActive(String... taskTexts)
  18.  
  19.     следующий шаг - еще дореализовать этот метод)
  20.     и добавить первый параметр - в каком статусе добавить таски
  21.  
  22.     можно - для начала добавить boolean-параметр
  23.     чтобы так задавать статус добавляемых тасок
  24.     получим - given(boolean isCompleted, String... taskTexts)
  25.     вот тут уже - не надо в имени метода уточнять AllActive
  26.     т к набор параметров - вполне поясняет
  27.  
  28.     посмотрим на вызов такого метода
  29.     given(true, "a", "b")
  30.     не очень понятно - что за первый параметр)
  31.     теоретически - можно добавить константы ACTIVE=false & COMPLETED=true
  32.     тогда бы вызовы могли выглядеть так
  33.     given(COMPLETED, "a", "b")
  34.     уже лучше)
  35.     но - все равно - можно вызвать и вот так
  36.     given(true, "a", "b")
  37.     т е - сделать некрасиво - все еще можно
  38.  
  39.     лучше - использовать для такого первого параметра enum
  40.     пусть у нас будет enum TaskStatus
  41.     со значениями ACTIVE & COMPLETED
  42.     тогда - вариант given(TaskStatus taskStatus, String... taskTexts)
  43.     и тогда - в качестве первого параметра - можно будет указать только значения из этого enum
  44.     given(COMPLETED, "a", "b")
  45.     или
  46.     given(ACTIVE, "a", "b")
  47.     третьего - не дано)
  48.     т е - некрасиво - некак вызвать
  49.     и это уже очень неплохо )
  50.     ниже приведу текст про enum
  51.  
  52.     следующий этап развития - это получить такой метод
  53.     который позволит добавить несколько тасок, причем  - указывая статус для каждой таски
  54.     поскольку у таски - 2 свойства - статус и ее текст - тут мы без класса дополнительного - не обойдемся )
  55.     если у нас будет класс Task с 2-мя параметрами - статус и текст таски
  56.     то - мы сможем реализовать given(Task... tasks)
  57.     и вызывать его вот так, например
  58.     given(new Task(ACTIVE, "a"), new Task(COMPLETED, "b"))
  59.     про классы - ниже немного распишу
  60.  
  61.     если добрались до этого
  62.     то разбираемся )
  63.     вариант given(Task... tasks) - самый универсальный
  64.     значит - в методе будет жить наш алгоритм
  65.  
  66.     а в методе given(TaskStatus taskStatus, String... taskTexts)
  67.     который во многих случаях нам даст более лаконичный вызов -
  68.     а значит, такой метод нам тоже нужен )
  69.     вот в нем - уже не будем алгоритм реализовывать
  70.     а лишь вызовем универсальный метод given(Task... tasks)
  71.     тоже - ниже чуть больше подсказок будет
  72.  
  73.     в результате - получишь
  74.         given(Task... tasks) - универсальный вариант,
  75.         который будем переиспользовать во всех других дополнительных вариантах
  76.  
  77.         и первый дополнительный вариант - given(TaskStatus taskStatus, String... taskTexts)
  78.  
  79.     реализуй это, идя последовательно
  80.     будут сложности - спрашивай)
  81.     можно - пока это реализуется - тоже делать остановки с ревью
  82.  
  83.     дальше - подробности и подсказки
  84. */
  85. ******************************************************
  86. /*
  87.     как реализовать varargs-параметр (String... taskTexts)
  88.      http://www.linkex.ru/java/varargs.php
  89. */
  90. **********************************************************
  91. /*
  92.     про enum попроще - объявили класс и его значения
  93. */
  94. public enum Day {
  95.         MONDAY,
  96.         TUESDAY,
  97.         WEDNESDAY,
  98.         THURSDAY,
  99.         FRIDAY,
  100.         SATURDAY,
  101.         SUNDAY;
  102. }
  103. /*
  104.     про enum посложнее - объявили класс и его значения
  105.     каждому значению - через вызов конструктора - задали свойство - описание
  106. */
  107. public enum Day {
  108.         MONDAY("понедельник"),
  109.         TUESDAY("вторник"),
  110.         WEDNESDAY("среда"),
  111.         THURSDAY("четверг"),//<<----------------------для каждого значения enum - вызов конструктора, фактически значение = объект класса
  112.         FRIDAY("пятница"),
  113.         SATURDAY("суббота"),
  114.         SUNDAY("воскресенье");
  115.  
  116.         String description;//<<---------------------------поле для хранения описания дня недели
  117.  
  118.         public Day(String description) {
  119.                 this.description = description;//<<---------------------------логика конструктора - запомнить для объекта его описание
  120.         }
  121.  
  122.         @Override
  123.         public String toString() {
  124.             return description;//<<---------------------------логика - вывести для объекта - то что для него заполнили
  125.         }
  126. }
  127.  
  128. /*
  129.  
  130.     все классы - потомки класса Object (enum - это тоже класс)
  131.     у Object есть метод toString()
  132.     который выполняет преобразование объекта к строке
  133.     реализовав такой метод в рамках класса SomeClass -
  134.     используя выражения типа "day is "+ Day.MONDAY
  135.     получишь строку "day is понедельник"
  136.  
  137.     toString() - можно грамотно использовать в рамках всех вспомогательных классов и enum-ов
  138.     это позволит упростить код
  139.  
  140.     конструкторы в enum-ах как раз и могут помочь решению задачи
  141.     для каждого значения enum вернуть свою строку
  142.  
  143.     попробуй применить эти подходы
  144.  
  145.     вот хороший пример
  146.     http://javarevisited.blogspot.com/2011/08/enum-in-java-example-tutorial.html
  147. */
  148. ***************************************************
  149.  
  150. /*
  151.     полезные линки про классы
  152.              http://www.tutorialspoint.com/java/java_object_classes.htm
  153.              http://www.helloworld.ru/texts/comp/lang/java/java/07.htm
  154.    
  155.              внутренние классы (нас интересуют member inner classes)
  156.              http://www.tutorialspoint.com/java/java_innerclasses.htm
  157.              http://www.quizful.net/post/inner-classes-java
  158.              http://www.javatpoint.com/java-inner-class
  159. */
Advertisement
Add Comment
Please, Sign In to add comment