Професионална програма
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 4485 Точки
  • Database бих го кръстил CapitalismData. Може да се получи колизия в даден момент, има други Database класове в различни билиботеки, които може някога в бъдещето да се ползват в приложението.
  • Факторито бих го разделил не две - едно за отделите и едно за служителите.
  • Служителите ги сложи в отделен неймспейс. Не е особено подредено да имаш 10 вида служители и класа за отделите на едно и също място.
  • Командите в еднжина най-малкото ги извади в методи, за да съкратиш големия суич.
  • В момента енджина ти в обвързан с някои конкретни класове - конзолата и факторито. Помисли как да избегнеш това.
  • Имаш интерфейси само за ентититата, хубаво е да извадиш още (доста свързано с предната точка).
  • Помисли кои методи в кои класове може да се направят виртуални - в момента приложението ти не е open for extension, понеже няма методи, които могат да се override-нат. Дай свобода мнимум за добавяне на нови видове служители.

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

3
krisitown avatar krisitown 45 Точки

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

1
karlite avatar karlite 20 Точки

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

0
Filkolev avatar Filkolev 4485 Точки

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

2
krisitown avatar krisitown 45 Точки

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

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

0
Filkolev avatar Filkolev 4485 Точки

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

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