• Июля 21, 2019, 03:21:11 am
• Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Новости: Вебинар о выборе IT профессии и руководство для новичков: http://bit.ly/2HG2vFp

Автор Тема: Java_OOP_Alexander_Beresteyka_18_05_2019  (Прочитано 1062 раз)

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 12038
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #105 : Июля 04, 2019, 01:13:38 am »

Natalka10

Так а что мешает вам написать метод который будет делать что то такое
if(tClass.equals("milk")){
return new Milk(...);
}
А то толку от того, что вы узнаете класс толку маловато

natalka10

  • Пользователи
  • *
  • Сообщений: 72
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #106 : Июля 06, 2019, 12:47:52 am »
@Alexande Ts

получилось записать все из стека в XML  :D :D :D :D :D ;D ;D ;D 8) 8) 8) 8)

вроде не свалилось))

https://github.com/NatalkaDanilenko/STACK_PRODUCTS

* не могу понять, почему при создании стека из файла, в стек не записались продукты из БлекЛиста  ???
я при добавлении продукта из файла в стек вызываю метод addFirst() который не кидает ошибку
Магия)
« Последнее редактирование: Июля 06, 2019, 01:09:07 am от natalka10 »

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 12038
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #107 : Июля 06, 2019, 11:01:00 pm »
Natalka10
Однако серьезно вы приступили к этому стеку. Это даже более чем похвально.

По вашему вопросу почему в стек не записались продукты из черного списка. Так посмотрите на ваш xml  вы ведь в него и не сохраняли черный список, как же вы его оттуда вычитывать собираетесь?
Для того, что бы содержимое черного списка также сохранялось в этой xml прийдеться написать код который сначала его туда сохранит, а потом и вычитает. Это можно сделать или в тот же xml файл, или в отдельный xml именно для черного списка. Второй вариант будет даже интереснее потому, что позволит конфигурировать разные стеки одним и тем же списком.

natalka10

  • Пользователи
  • *
  • Сообщений: 72
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #108 : Июля 07, 2019, 12:23:09 am »
Natalka10
Однако серьезно вы приступили к этому стеку. Это даже более чем похвально.

По вашему вопросу почему в стек не записались продукты из черного списка. Так посмотрите на ваш xml  вы ведь в него и не сохраняли черный список, как же вы его оттуда вычитывать собираетесь?
Для того, что бы содержимое черного списка также сохранялось в этой xml прийдеться написать код который сначала его туда сохранит, а потом и вычитает. Это можно сделать или в тот же xml файл, или в отдельный xml именно для черного списка. Второй вариант будет даже интереснее потому, что позволит конфигурировать разные стеки одним и тем же списком.

 :)

Спасибо)
Не, читаю я из другого файла  xml (Products.xml). и в нем как раз есть "черносписочные продукты"
При воссоздании стека из этого файла я думала получить стек идентичный XML 8)
А получила
Can not addNewProduct product from blackListCan not addNewProduct product from blackListCan not addNewProduct product from blackListCan not addNewProduct product from blackList
Stack:
Meat {name =MEAT PIG, price =120.9, weight =1.4, frozen =false, typ =pig}
Meat {name =MEAT RIABA, price =96.0, weight =3.0, frozen =true, typ =chicken}
Tea {name =TEA TIAN SCHAN, color =white, price =43.0}
Tea {name =TEA MONARCH, color =black, price =34.0}
Tea {name =TEA GRIENFILD, color =green, price =17.1}

natalka10

  • Пользователи
  • *
  • Сообщений: 72
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #109 : Июля 07, 2019, 12:35:18 am »
@Alexander Ts еще вопрос) я создала сеттеры в классах Продуктов (Fish, Milk etc)
Как ограничить возможность их использования?  ???
По идее я могу создать экземпляр класса Fish где захочу (т к он паблик) и вызвать на нем сеттер типо "setTyp".

Хочу сделать так, чтобы этот сеттер можно было вызвать только из определенных классов ::)

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 12038
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #110 : Июля 07, 2019, 11:49:34 pm »
Natalka10

Ну чтож давайте попробуем еще раз.
Смотрите при сохранении вы не сохраняете содержимое своего «Черного Списка» никуда, т. е. То что в черном списке есть классы какие то после сохранения нигде не отображается.

А при вычитке вы делаете вот такое


Product product = getProductFromNode(element);
if (product != null) {
stack.addFirst(product);
}
А по сути восстанавливаете продукт из xml  тут все отлично, но вы же его не проверяете с помощью «Черного списка» вы просто вызываете метод
stack.addFirst(product);
Который добавляет продукт в стек, без каких либо проверок. Так как в этом методе:

stack.addFirst(product);
Нет никаких проверок на то, что вы добавляете. И как следствие в стек попадают ваши черносписковые продукты

Ответ на второй вопрос. Тут к сожалению нужно пояснение, зачем нужно ограничить и как именно. Просто сейчас как то не особо понятно, что именно нужно.

natalka10

  • Пользователи
  • *
  • Сообщений: 72
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #111 : Июля 09, 2019, 09:15:32 pm »
@Alexander Ts
Спасибо!) Поняла)) ;D

на счет ограничения вызова сеттеров:

у меня есть для каждого продукта свой TYPE :
private static final String TYPE = "fish";
Для того, чтобы де/маршалить xml я создала для TYPE set . он таки неиспользуется) типо "лишний".
Если "вдруг там че" - я собиралась пользаваться ним только в классах  де/маршалинга xml или джсон :D

Если же его вызвать в других классах и, не посмотрев на логику де/маршалинга xml
@Nullable
    private static Product createNewProduct(String type) {
        if (type.equals("milk")) {
            return new Milk();
        }

        if (type.equals("meat")) {
            return new Meat();
        }

        if (type.equals("tea")) {
            return new Tea();
        }

        if (type.equals("fish")) {
            return new Fish();
        }

        return null;
    }

, для TYPE поставить значение отличное от прописанных - то все "свалится" :(

Пока я помню, что там и где происходит - все супер. А че если не? :D

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 12038
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #112 : Июля 10, 2019, 02:54:13 pm »
Natalka10

Ну так Enum же вам в помощь. Именно он и ограничет какое количество записей можно использовать. Напишите что в перечислении есть только молоко, и т.д. и вместо String в Type используйте перечисление и будет хорошо.
Как кстати продвигается ваше изучение Java ? Определелились с направлением или до сих пор в вольном плавании?

natalka10

  • Пользователи
  • *
  • Сообщений: 72
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #113 : Июля 10, 2019, 10:56:14 pm »
Natalka10

Ну так Enum же вам в помощь. Именно он и ограничет какое количество записей можно использовать. Напишите что в перечислении есть только молоко, и т.д. и вместо String в Type используйте перечисление и будет хорошо.
Как кстати продвигается ваше изучение Java ? Определелились с направлением или до сих пор в вольном плавании?

enum? даже не подумала((
спасибо :)
толькоНеАндроид ;D

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 12038
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #114 : Июля 10, 2019, 11:14:13 pm »
Natalka10

Оо Ентерпрайз это хорошо это правильно.

natalka10

  • Пользователи
  • *
  • Сообщений: 72
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #115 : Июля 11, 2019, 08:51:32 pm »
@Alexander Ts
Вопрос по ГИТу :-)
«работать с гит» это гит через терминал / гитхаб / гитлаб?
Что про этот гит надо знать?
Как создать ветку, как сделать pull / push / commit / .. - это оно?

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 12038
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #116 : Июля 11, 2019, 11:57:35 pm »
Natalka10

Вы правы Гит это через терминал. И да то что вы описали это оно.

А вот ГитХаб и прочие это просто онлайн репозитории Гит, с ними уже по желанию.

natalka10

  • Пользователи
  • *
  • Сообщений: 72
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #117 : Июля 14, 2019, 03:49:08 pm »
@Alexander Ts , спасибо :)

https://github.com/NatalkaDanilenko/STACK_PRODUCTS/tree/newBranch

стек --> json and json --> стек

нужен хелп :)
Получаю нелюбимый НаллПоинтер при добавлении элемента в лист

Понатыкивала брейкпоинтов и тупо не вижу откуда null берется(

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 12038
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #118 : Июля 14, 2019, 10:37:07 pm »
Natalka10

Добрый вечер. А укажите в какой строке это происходит, что бы было проще локализовать проблему.

natalka10

  • Пользователи
  • *
  • Сообщений: 72
    • Просмотр профиля
    • E-mail
Re: Java_OOP_Alexander_Beresteyka_18_05_2019
« Ответ #119 : Июля 14, 2019, 11:03:06 pm »
Natalka10

Добрый вечер. А укажите в какой строке это происходит, что бы было проще локализовать проблему.

Exception in thread "main" java.lang.NullPointerException
   at marshaling.StackJSONWorker.getEachProduct(StackJSONWorker.java:77)
   at marshaling.StackJSONWorker.loadFromJSON(StackJSONWorker.java:55)
   at stack.Main.main(Main.java:49)