Loading...
kaloyan_kolev avatar kaloyan_kolev 10 Точки

Преработка на кода на задачата Military Elite

Здравейте,

 

за първи път качвам кода на задача, която минава 100/100 в Judge, но за всичко си има първи път. laugh Днес събрах кураж и седнах да пиша задачата Military Elite. Старах се през цялото време да следвам конвенциите и принципите, които сме учили, но при крайните класове и интерфейси, може би си личи, че съм изпушил, а да не говорим за Engine класа. Ще съм много благодарен, ако някой колега може да ми помогне с рефакторирането на кода. Все още не съм сигурен кога да запазвам в интерфейс, и кога в клас. Затова на някои места е каша. Качвам кода и условието.

https://github.com/kaloyantihomirov/CSharp-OOP/tree/master/MilitaryElite

https://softuni.bg/downloads/svn/csharp-fundamentals/2019-May/CSharp-OOP-June-2019/04.%20CSharp-OOP-Interfaces-and-Abstraction/04.%20CSharp-OOP-Interfaces-And-Abstraction-Exercises.docx

0
C# OOP Advanced
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

е тя е доста straightforward тая задача, като цяло е ок но тоя engine class.. С switch case ще е много по чист.. Ако ти е се заиграва с reflection ще стане доста по кратък, иначе по класовете и другите неща няма кои знае какво да се пипне но те са и доста simple.

0
kaloyan_kolev avatar kaloyan_kolev 10 Точки

Благодаря за отговора! Има ли на места, където мога да вдигна абстракцията и да запазя обекта в интерфейс? Говоря за Add методите в интерфейсите (AddMission и другите) и листовете.

0
19/07/2019 10:50:45
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

обект в интерфейс айде не....  

IReadOnlyCollection<Mission> Missions { get; }
 

 това в командо интерфейса е безумие... тея неща не се държат там.. Сега теоритично може да се слагат структури и properties в интерфейсите но не се прави не е добра практика. А колко повече да вдигаш абстракцията няма смисъл.То идеята и е да вдигнеш общите неща. Сега това че командото има addmission ами ок да си стой само при него.

Дали ти трябва отделен интерфейс icommando не можеше всичките да са просто soldier или isoldier.  Абстракцията е хубаво нещо ама човек не трябва да се увлича в нея.

0
kaloyan_kolev avatar kaloyan_kolev 10 Точки

Така ни го показаха на упражнението, така го правим (ICommando интерфейса с Add метода в него). Условието на задачата гласи да направим за всеки клас интерфейс.

обект в интерфейс айде не....

Извинявай за фрапантната грешка! Мисля, че се разбра какво исках да кажа:

public interface IAnimal {}

public abstract class Mammal {}

public class Person : Mammal, IAnimal {}

Animal person = new Person();

Mammal personOne = new Person();

Person personTwo = new Person();

Можеше просто да ме поправиш, за да знам как да го кажа следващия път... Просто исках да напиша тази задача като хората, съобразено, разбира се, с това, което сме учили. Все още не съм гледал лекцията за полиморфизъм, а мисля, че точно това се разглежда там.

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