Loading...

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

gim13 avatar gim13 8 Точки

C# OOP - Exercises 02. Vehicles Extension

Здравейте.

Тази задача е продължение на първата от условието. 

Втория тест ми дава грешка. Ако може някой да ми даде входа на

този тест, или да подскаже къде ми е грешкате, ще съм благодарен.

Решението и условието са тук: https://github.com/GIM13/C-Sharp-OOP/tree/master/C%23%20OOP-%20Exercises/05PolymorphismExercise/01Vehicles

Тагове:
0
C# OOP Advanced
prohause avatar prohause 356 Точки

Колега какво става при тебе когато се опиташ да създадеш превозно средство с повече гориво от капацитета на резервоара? 

0
gim13 avatar gim13 8 Точки

Създава се превозното средство, а резервоара остава с 0 литри(по подразбиране  на полето).

 

0
prohause avatar prohause 356 Точки

Помня че имаше някаква простотия с дупката в резервоара на камиона. Пробвай проверката да е спрямо количеството със загубата. 

0
gim13 avatar gim13 8 Точки

Пробвах всички варианти за който се сещам с тая дупка, но грешките

се увеличават.

0
RadostinStoychev avatar RadostinStoychev 128 Точки

Пращам ти моето решение дано ти помогне да си откриеш грешката.
https://github.com/radrex/SoftuniCourses/tree/master/C%23%20Web%20Developer/C%23%20Advanced/C%23%20OOP/05.Polymorphism/Exercise/P02_VehiclesExtension

Видях че на командите първо сравняваш

if (liters + fuelQuantity > TankCapacity)

и чак след това

else if (liters <= 0)

По-добре да провериш първо литрите и директно да приключиш, отколкото да правиш още 1 проверка. Малка оптимизация.

Другото, което видях е че не правиш проверка в set-ъра на TankCapacity, ако ти подадат отрицателно число ще създаде превозно средство, което е нелогично. Същото важи и за FuelConsumption-а. Съмнявам се да гърми заради тези неща, но все пак не пречи да си ги провериш.

Опитай се да използваш повече абстракция, за да избегнеш повторение на кода, например можеш да си изкараш базов клас Vehicle, който наследява interface с възможните команди катo методи: Drive, DiveEmpty, Refuel, а другите неща които се повтарят в различните превозни средства да ги разпишеш в базовия клас: FuelQuantity, FuelConsumption, Tank Capacity. След това за всяко превозно средство наследяваш базовия клас Vehicle. Успех.

0
gim13 avatar gim13 8 Точки

Изпълних препоръките ти. Оказа се че в сетера не трябва да се праща съобщение за прекомарно количество гориво.

Благодаря за отделеното време и внимание.

0
25/11/2019 18:34:08
Elena123456 avatar Elena123456 235 Точки

Здравейте колеги, дали би могъл някой да ми разясни нещо свързано по тази задача?

Когато решавах задачите за Поломорфизъм имам 100/100 в Judge на  тази конкретна задача. Сега след като вече научих SOLID принципите се върнах да пререша задачите, като се опитам да приложа научените принципи. Забелязах, че сетвам в конструктора на абстрактния клас Vehicle - virtual FuelConsumption, което противоречи на разбирането ми за третия принцип.  Не зная защо Judge не ме е спрял, а ми е приел кода за правилен или аз не съм разбрала добре?!  Притесняваме това, че мога да пропусна разбирането на нещо съществено.

Ще бъда благодарна ако някой хвърли едно око само на тази част от кода ми и потвърди или отрече, че написаното от мен противоречи на Liskov Substitution.

https://pastebin.com/niYvxKJa

Сега бих го написала така:

https://pastebin.com/E0m0SGFu

Има ли нещо грешно в някой от вариантите?

 

 

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