Професионална програма
Loading...
+ Нов въпрос
akiprov avatar akiprov 20 Точки

[C# OOP Basics] Encapsulation - Problem 5. Pizza Calories

Искам да предупредя тези, които евентуално са имали проблем с тази задача, че в стъпка 5 от условието има крайно подвеждащи инструкции. По-конкретно:
    ...Create the class using a proper constructor, expose a method for adding a topping, a public setter for the dough and a getter method for the total calories.
Проблем номер 1: Expose a public setter for the dough - ако изпълните това условие, един тест в Judge няма да ви мине.
Всъщност системата очаква да имате private setter за тестото и да създадете отделен публичен метод, чрез който подавате готово тесто на пицата, а именно:
    private Dough Dough { get; set; }
    public void SetDough(Dough dough) { Dough = dough; }
Тук пропускам проверката за това дали вече не е зададено тесто, която асистента добави по време на упражнението, защото до нея никога не се стига. Ако на програмата бъде подадено второ тесто тя просто гърми с FormatException, тъй като на съответния ред очаква да получи данни за гарнитура.
Проблем номер 2: Expose a getter method for the total calories - тук на пръв поглед няма нищо съмнително, но това изискване не може да бъде изпълнено, освен ако не бъдат нарушени две предходни:
    От стъпка 1 - Create a Dough Class - ... Everything that the class should expose is a getter for the calories per gram.
    От стъпка 3 - Create a Topping Class - ... Everything that the class should expose is a getter for the calories per gram.
Не знам за вас, но аз не мога да изпълня тези две условия и след това да изпълня и третото от стъпка 5, защото няма как да видя теглото на тестото и общото тегло на всички гарнитури, след като са приложени куп private access modifier-и.
В тази връзка решението, което асистента ни показа на 20-Фев-2018 не изпълнява условието на задачата.
При него въобще няма getter-и за калории на грам тегло в класовете за тесто и гарнитура, а на тяхно място са създадени property-та за общ брой калорий, които не присъстват никъде в условието, а отгоре на това са и публични.

Тагове:
0
C# OOP Basics 21/02/2018 13:55:20
Quake3 avatar Quake3 546 Точки

Относно проблем 2: Ако и тестото и топингите трябва да имат една и съща публична фунция, която да връща само калории за грам, няма ли да стане така: 

Един абстрактен клас - "Съставки", който ще си има пропърти - Тегло и един публичен double - "Калории" - който пък ще връща Теглото * КалорииЗаГрам.
Тестото и Топингите наследяват Съставки, като се излага само: "КалорииЗаГрам", който пък е абстрактен и протектиран за Съставки.

0
akiprov avatar akiprov 20 Точки

Не знам, може би. Днес е лекцията за абстракция. Ще гледам, ще слушам и ще разбера - става ли, не става ли.

0