Професионална програма
Loading...
nsavov avatar nsavov 68 Точки

C# OOP Demo Exam - 07 December 2019

https://judge.softuni.bg/Contests/Practice/Index/1968#0

Много ме затруднява частта с Generic Repository (страница 3).

 

Не разбирам...

Child Classes да ги правя да наследяват IRepository и да им сложа после constraints на всички child класове

или

да направя базов клас Repository който наследява IRepository и който ще бъде наследен от child класовете.

 

И ако е второто, как и къде да направя constaints и как да го наследя този клас - въобще голяма каша стана...

 

И този метод ме тормози най-много:

T GetByName(string name)

Returns an entity with that name.

Т.е. ще търся с пропърти Name. Но дали това се отнася за Motorcycle? Там няма Name, но има Model.

 

Моля, ако някой се е преборил с тази задача, да качи едно решение!

 

1
C# OOP Advanced
s.boyadjiev avatar s.boyadjiev 9 Точки

И аз не се сешам как да стане с базовия клас, освен ако не добавим интерфейс. Позволено ли е да се добавят интерфейси и ако не, от какъв тип трябва да е обекта, който ще приеме IRepository<T>?!

0
nickwork avatar nickwork 559 Точки

 

s.boyadjiev всяко репозитори го заместваш с интерфейса му...и на мен не ми беше много ясно но след много опити в judge го уцелих.. пускам ти малко код да се ориентираш...ако ти трябва цяло решение пиши

public class MotorcycleRepository : Repository<IMotorcycle>
    {
        private IList<IMotorcycle> motorcycles;

        public MotorcycleRepository()
        {
            this.motorcycles = new List<IMotorcycle>();
        }

        public override void Add(IMotorcycle model)
        {
            this.motorcycles.Add(model);
        }

        public override IReadOnlyCollection<IMotorcycle> GetAll()
        {
            return this.motorcycles.ToList().AsReadOnly();
        }

        public override IMotorcycle GetByName(string name)
        {
            IMotorcycle cycle = this.motorcycles.FirstOrDefault(x => x.Model == name);
            
            return cycle;
        }

        public override bool Remove(IMotorcycle model)
        {
            return this.motorcycles.Remove(model);
        }
    }

 

0
s.boyadjiev avatar s.boyadjiev 9 Точки

Т.е. прави се йерархия от интерфейси, които наследяват IRepository, и след това всеки клас имплементира неговото си?!

Не виждам никакъв смисъл в това(не казвам, че няма). Ако задачата е пусната на изпит с това(некоригирано) условие, не завиждам на участниците на изпита!

Благодаря за отговора! 

Поздрави! 

0