Loading...
stefism1 avatar stefism1 28 Точки

Inheritance - Exercise, 05. Restaurant

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

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

https://github.com/stefism/Projects/tree/master/C%23OOP-May-2019/06-Inheritance-Exercise/05-Restaurant

https://judge.softuni.bg/Contests/1500/Inheritance-Exercise

Много благодаря за съдействитето!

Тагове:
0
C# OOP Basics
Deyan_Parushev avatar Deyan_Parushev 2 Точки

Здрасти, идеята е да се предават параметрите от конструктора на базовия клас на наследниците. И само ако има параметър който се добавя, той да бъде предаван на текущия клас и от там надолу по йерархията. Другата уловка е в параметрите които са дадени като константи. Ако имаш 2 от четири пропъртита които са константи, то само останалите две трябва да се вземат от конструктора на класа, а ако базовия клас иска повече параметри, то излишните да останат нули.

https://github.com/DeyanParushev/MyStudentProjects/tree/master/OOP/Inheritance/Excercise/Restaurant

 

1
djambazki avatar djambazki 3 Точки

На мен при овъррайдването на методите пак ми гърмят два теста. След това реших да изпозлвам само константите в конструктора и се получи. Ето и пример от класа Coffee:

namespace Restaurant
{
    public class Coffee : HotBeverage
    {
        private const double coffeeMilliliters = 50;
        private const decimal coffeePrice = 3.50M;

        public Coffee(string name, double caffeine)
            : base(name, coffeePrice, coffeeMilliliters)
        {
            Caffeine = caffeine;
        }

        public double Caffeine { get; set; }
    }
}

(при другите класове е по същия начин)

1
24/07/2020 14:57:52
kalojan avatar kalojan 9 Точки
Compiled file is missing. Compiler output: Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  Restored ...\Restaurant.csproj (in 376 ms).
  Restored ...\NUnitLiteConsoleApp.csproj (in 819 ms).
Soup.cs(7,18): error CS0060: Inconsistent accessibility: base class 'Starter' is less accessible than class 'Soup' [...\Restaurant.csproj]
Cake.cs(7,18): error CS0060: Inconsistent accessibility: base class 'Dessert' is less accessible than class 'Cake' [...\Restaurant.csproj]
Coffee.cs(7,18): error CS0060: Inconsistent accessibility: base class 'HotBeverage' is less accessible than class 'Coffee' [...\Restaurant.csproj]
Fish.cs(7,18): error CS0060: Inconsistent accessibility: base class 'MainDish' is less accessible than class 'Fish' [...\Restaurant.csproj]

Build FAILED.

Soup.cs(7,18): error CS0060: Inconsistent accessibility: base class 'Starter' is less accessible than class 'Soup' [...\Restaurant.csproj]
Cake.cs(7,18): error CS0060: Inconsistent accessibility: base class 'Dessert' is less accessible than class 'Cake' [...\Restaurant.csproj]
Coffee.cs(7,18): error CS0060: Inconsistent accessibility: base class 'HotBeverage' is less accessible than class 'Coffee' [...\Restaurant.csproj]
Fish.cs(7,18): error CS0060: Inconsistent accessibility: base class 'MainDish' is less accessible than class 'Fish' [...\Restaurant.csproj]
    0 Warning(s)
    4 Error(s)

Time Elapsed 00:00:02.93

 

Някой може ли да ми помогне... къде бъркам......?

0
djambazki avatar djambazki 3 Точки

kalojan, 

имаш грешка при енкапсулацията на класовете. Оправи си Access Modifiers. Някои от наследяващите класове са с по-ниско ниво на достъп от базовите. Например модификатора ти на класа 'Starter' е с по-ниско ниво на от това на наследяващия го клас 'Soup'.  По същия начин е и при останалите класове. 
 

П.С.
Джъджа ти показва къде е грешката, прочети какво точно пише в ерора. 
Успех в ученето и решаването на задачи! :))

1
05/11/2020 17:58:17
Mariyan_Tsonev avatar Mariyan_Tsonev 1 Точки

djambazki, Благодаря за насоката с константите. При мен също гърмяха въпросните 3 теста и минаха 1 по 1 с промяната на всеки клас, в който имаше информация за дефоутни стойности.

И все пак за мен условието е подвеждащо. Особено за Cake и Fish класовете. При тях тези стойности са вписани като дефоутни, което поне за мен значи, че се подават в конструктора, за да се използват, ако при инициализация на инстанцията не подадем стойности за съответните параметри. С използване на константи, реално не можем да подадем друга цена, грамаж или калории към съответните инстанции, което поне за мен е нелогично. 

Единствено за Coffee класа може да се предположи, че стойностите ще са константа, което мога да си приема за грешка, но за останалите два класа условието е много подвеждащо.

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