Loading...
markovood avatar markovood 11 Точки

C# OOP - юни 2019, Encapsulation - Exercise, 04. Pizza Calories

Здравейте колеги,

Пак забих, моля който може да помага...

Не ми минават тест 5 (runtime error) и тест 13 (грешен отговор), пробвах всичко дадено като предложения в старите теми за тази задача но уви - нищо.

Условието тук:

Мойте класове:

Dough class

Ingredient class

Topping class

Pizza class

Program class (Main)

 

0
C# OOP Basics
nickwork avatar nickwork 657 Точки

Ако искаш разгледай моето решение...може да ти даде някакви идеи...иначе аз погледах кода ти, но начина по който е написан не много ок..като съвет не е добра идея да използваш switch case в констуктора (даже ако ти трябва някой път по добре направи метод и викай него, но в конструктора без ифове, суичове и т.н.т), аз лично съм го решил този проблем с речници, но като идея може да стане и с enum... 

https://easyupload.io/s23ej7

0
markovood avatar markovood 11 Точки

Може ли малко по конкретно защо 

...съвет не е добра идея да използваш switch case в констуктора (даже ако ти трябва някой път по добре направи метод и викай него, но в конструктора без ифове, суичове и т.н.

Съгласен съм, че заради switch-овете конструктора като код става по дълъг и е добра идея да се изнесат в отделен метод(за по добра структурираност), но като функционалност не виждам причина да се избягват "ифове, суичове и т.н." в конструктора, когато това е оправдано.В случая е оправдано, понеже определянето на modifier полето се случва при създаването на обекта и ЗАВИСИ от определени характеристики които не са ясни до този момент а се получават при създаване на обекта. Все пак конструктора по дефиниция отговаря за създаване на обекта и СЕТВАНЕ НА ПЪРВОНАЧАЛНИ СТОЙНОСТИ НА ПОЛЕТАТА МУ, сиреч всички променливи в класа се инициализират със стойности или зададени отвън или дефолтни за конкретния тип. В конкретния случай суича е в конструктора тъй като първоначалната стойност на modifier зависи от дадени обстоятелства.

0
markovood avatar markovood 11 Точки

За архива споделям че си открих грешката на тест 13, а именно че в мейна правя лист от топинги и при команда за край минавам през него и добавям всички топинги на пицата след което я печатам.Правилното явно е още след създаването на топинга да се добавя на пицата. така при команда за край само печатаме. Продължавам да търся решение за тест 5.

1
markovood avatar markovood 11 Точки

За архива споделям че намерих проблема и с тест 5, а именно разрешено е името на пицата да бъде всякакъв white space с изключение на празен стринг или null.

При мене, при валидацията на името в класа Pizza, проверявам string.IsNullOrWhiteSpace(value) и от там идва веднъж runtime error-а, а на второ място идва от това че при четене на името в Main() при .Split() използвам StringSplitOptions.RemoveEmptyEntries и  по този начин премахвам празните аргументи при сплит операцията, а име от дори само един white space е напълно валидно тъй като по условие е дадено:

The name of the pizza should not be an empty string.In addition, it should not be longer than 15 symbols. If it does not fit, throw an exception...

"   " != ""  и " " != string.Empty

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.