Loading...
krisitown avatar krisitown 45 Точки

Мнения по задача Capitalism

Важно: Игнорирайте професионалното име, натиснах Enter 1 път повече.

Бих искал да чуя мнение по това което съм написал, не е цялата задача остава ми да измисля как да направя заплатите и да направя проверките. Искам да разбера какво мога да направя по-добре, за да съм добре подготвен за изпита. Също така мислите ли, че това ще е достатъчно за минаване и моля поставете оценка ако имате време.

Линк: https://github.com/krisitown/Capitalism

Другата примерна задача: https://github.com/krisitown/Empires

Тагове:
0
C# OOP Basics 15/12/2015 17:14:52
Filkolev avatar Filkolev 4482 Точки
  • Database бих го кръстил CapitalismData. Може да се получи колизия в даден момент, има други Database класове в различни билиботеки, които може някога в бъдещето да се ползват в приложението.
  • Факторито бих го разделил не две - едно за отделите и едно за служителите.
  • Служителите ги сложи в отделен неймспейс. Не е особено подредено да имаш 10 вида служители и класа за отделите на едно и също място.
  • Командите в еднжина най-малкото ги извади в методи, за да съкратиш големия суич.
  • В момента енджина ти в обвързан с някои конкретни класове - конзолата и факторито. Помисли как да избегнеш това.
  • Имаш интерфейси само за ентититата, хубаво е да извадиш още (доста свързано с предната точка).
  • Помисли кои методи в кои класове може да се направят виртуални - в момента приложението ти не е open for extension, понеже няма методи, които могат да се override-нат. Дай свобода мнимум за добавяне на нови видове служители.

Това са неща, които отгоре-отгоре видях, не съм чел задълбочено кода, може да има и други неща, които да могат да се подобрят.

3
krisitown avatar krisitown 45 Точки

Благодаря за отговора, много ми помагаш, защото не бях сигурен над какво да работя за да се подготвя за изпита и да си подобря ООП уменията като цяло.

1
karlite avatar karlite 20 Точки

Добър ден бих искал да попитам какво мислиш за Factory да е не - статичен клас както в случая... Има ли значение..? Какви са плюсовете и минусите...? Благодаря предварително?

0
Filkolev avatar Filkolev 4482 Точки

Статичен клас не може да се наследи, което значи, че не може да се разшири. Т.е. по-добре да не е статично факторито, особено когато вътре има суич.

2
krisitown avatar krisitown 45 Точки

Взех в предвид, нещата който не си ми написал тук и реших другата примерна задача Empires, https://github.com/krisitown/Empires

Чудех се дали това е правилния начин приложението ми да не бъде обвързано с конзолата. Също така знам че output-a ми е доста messy със всичките if-ове но просто накрая я мъчех да я докарам до 100 точки.

0
Filkolev avatar Filkolev 4482 Точки

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

Reader/Writer не са много описателни, по-скоро ConsoleReader/ConsoleWriter, понеже така е ясен източникът. След това може да си направиш FileReader/FileWriter и други.

Относно аутпута - има доста какво да оправяш, да. По-скоро трябва да подбереш по-добри структури да ти пазят информацията, за да може после да я достъпиш по културен начин, без тези проверки.

1
djc_bg2015 avatar djc_bg2015 923 Точки

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

Нaпример:

while (line != "armistice")
{
    string[] tokens = line.Split(' ');
    this.ProcessCommand(tokens);
    line = reader.ReadLine();
}

protected virtual ProcessCommand(string [] tokens)
{
    switch...
}

 

1
15/12/2015 17:31:58
krisitown avatar krisitown 45 Точки

Да, това ми звучи добре :)

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