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