Професионална програма
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
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 231 Точки

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

Когато решавах задачите за Поломорфизъм имам 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