Професионална програма
Loading...
Nbonev avatar Nbonev 5 Точки

Encapsulation - Exercises - 04. Shopping Spree

Здравейте,

Получавам 80/100 на 4-та задача от упражненията на Java OOP Basics. Разгледах различни отговори на подобен проблем, но преодължавам да не намирам конкретно при мен какъв е проблема. Ще съм благодарен, ако някой има време да погледне.

https://github.com/NinoBonev/SoftUni/tree/master/JavaFundamentalsMay2018/Java%20OOP%20Basics/02.%20ENCAPSULATION%20-%20EXERCISES/04.%20Shopping%20Spree/p04_ShoppingSpree

Тагове:
0
Java OOP Basics
Ivelin_Dimitrov avatar Ivelin_Dimitrov 148 Точки

първото което забелязах без да съм дебъгвал е, че във Product за setCost трябва да имаш проверка за парите също -> 

if (cost < 0) {
    throw new IllegalArgumentException("Money cannot be negative");
}

и проверката за имената проверявай винаги първо дали не е null защото String е нулабъл -> 

if (name == null || name.trim().isEmpty()) {
    throw new IllegalArgumentException("Name cannot be empty");
}

Във class Main 1. махни try {...} catch {...} блоковете от всякъде. След това, след декларирането на двата Map<> огради всичко останало във един try {...} catch {...} за да може, ако получиш невалидни данни за People или за Product - да ти изпечата съобщението от грешката и да ти прекъсне изпълнението на програмата на цяло. Вътре трябва да има само един try {...} catch {...} блок, който да огради единственно копуването на продуктите - като методъд buy() трябва да ти хвърля exception, защото не е добре да печаташ директно от класът както си го направил не принтирай от класа, има си принцип за това казава се Single Responsibility. 

0
22/06/2018 00:37:54
Nbonev avatar Nbonev 5 Точки

Благодаря много за помощта и обяснителният отговор. Много беше полезно :)

0