Няколко въпроса за изпита по ООП


4

 Искам да попитам за предстоящия изпит няколко неща:

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

2.Ще се реже ли ако имаме if statement или друга конструкция само с едно твърдение в тялото, без къдрави скоби? Аз лично предпочитам да пиша така, защото ми е по-прегледно. Например:

 If(name == null)

    throw new ArgumentException(....................................);

3. Въобще ще се радвам, а предполагам и доста колеги ако може да напишете за какви неща по отношение на качеството и форматирането на кода ще вземате точки.




Отговори



0

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

2. По втория въпрос и аз съм любопитна да разбера.


от ellapt (6303 точки)


0

2) Не би трябвало, но трейнърите ще кажат.

3) Аз доколкото разбирам от лекциите, на изпита ще проверяват дали сме приложили добре принципите на ООП - абстракция, енкапсулация, полиморфизъм и т.н. Не мисля, че ще ни режат точки, ако някъде сме форматирали грешно, защото си има отделен курс за това. И все пак - гледай да няма много анти-качествен код :)




0
В тази връзка да попитам дали за изпита употребата на StyleCop е препоръчителна?



1
@ivan.mihov1

1. Както казаха по-нагоре, в bgcoder има опция да пращаш архив(слагаш си всичките файлове, без папките bin i obj). Вчера решавах една изпитна задачи и си я качих точно така - нямаше проблеми.

@simeon.georgiev.5076

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

Иначе, ако имаш опит с него и не ти бърка писането, сигурно е добра идея.

от kon.simeonov (5238 точки)


0

 Така и така отворихме темата за изпита...може ли някой да погледне този код защо в бгкодер дава Unauthorized Exception?

  http://pastebin.com/pac953H7

П.С. Ако пак има проблем с кодера, може ли идея как да запиша резултата в файл, че този methInfo.Invoke(null, null); не ми е много ясно как работи..


от ivan.mihov1 (4988 точки)


2

BG Coder е направен да изпълнява кода в sandbox mode с ограничени права, за да не може да се правят мизерии. Конкретно в тази задача има динамично компилиране и изпълнение на код, за което по принцип нямате права. Когато тази задача беше изпитна, решенията се пускаха с допълнителни права само по време на изпита.

methInfo.Invoke(null, null); - извиква се някой метод чрез рефлекшън. Първия параметър е обекта, в/у който да се извика, а втория е параметри, които да се подадат. В случая метода е Main, който е статичен и не приема параметри и затова се подава 2 пъти null.


от westi3m (5621 точки)

0
 Прегледах си всички тестове, не открих разлики но като не мога да го изпечатам във файл няма как да проверя със сигурност.

от ivan.mihov1 (4988 точки)



0

1. Вече ти отговориха
2. Никой няма да ти се заяде, за това. Ама ако пишеш с краката си, тогава сигурно ще намалят някакви точки. Все пак е хубаво да се учим да пишем качествено от сега.


от sa66eto (1945 точки)


0

По т. 3 ... и за питащия и за следващите чудещи се ... кога мислите да се научите да пишете качествен код? Защо не почнете да пишете така, както е прието? Или смятате да пишете качествен код само в трака за КПК, и после пак да мажете?

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

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


от JulianG (5316 точки)


1
"По-лесно е да даваме минуси от колкото да се замислим"

от westi3m (5621 точки)

3

JulianG , разгледах GitHub-a ти със вскички твои проекти и домашни внимателно.И ти като завършил академията и "мастър на КПК"   имам няколко въпроса към теб:

1. Защо не изписваш всички using-и вътре в namespace-a на проекта ,а си ги държиш отгоре не зачистени както обучаващ се ,който те първа започва c#1 ? 

2.Защо изписваш първо пропъртитата ,а след това конструкторите, дори и когато те не са автоматични? Според реда на нещата би трябвало да са първо конструкторите и след това пропъртитата с валидация.Поправи ме ако греша.

3. За зачистването на string[] args в Main() само ще спомена без да акцентирам.

4. И последно по ред, но първо по важност е ЗАЩО не извеждаш класовете си като отделни класове в проекта,а ги пишеш един под друг на едно и замазваш всякакви принципи на качествен и четим код ???

След написаното от теб по-горе спрямо нас и след видяното след това от твоето reposity нещо не ми се връзват нещата и не се сдържах да ти задам тия въпроси ;)

 РЕПОТО ТИ ОТ ООП


от IvayloAndonov (1994 точки)



0

Няколко въпросчета, малко в страни от предишните, но все пак са свързани с изпита по ООП.

Има някои неща, по условието на задачата от 05 March 2014 - Evening - Furniture, които не съм сигурен как да ги разбирам, но предполагам, че подобни неща има и в останалите задачки:

1 - All properties in the above interfaces are mandatory (cannot be null or empty). If a null value is passed to some mandatory property, you should use defensive programming to prevent unwanted results.

 - понеже прегледах в чичко гугъл за defensive programming и нищо не разбрах, дали проверките в пропъртитата и хвърлянето на ексепшъни са това което се иска за изпита или има нещо по специално, което не мога да си го представя (нещо примерно с while цикли да се дава възможност да се вкарат нещата коректно ..)

2 - отново се колебая как да разбирам следното условие: (повтаря се и за останалите класове)

- CreateChair (model) (material) (price) (height) (legs) (type) – creates a chair by given model, material, price, height, legs and type. Type can be “Normal”, “Adjustable” and “Convertible”. Duplicate models are not allowed. As a result the command returns “Chair (model) created”.

- Как да се разбита "Duplicate models are not allowed.",  да не го мислим, защото няма шанс да се подадат в случая 2 стола с еднакъв модел, или да се прави проверка дали този модел съществува и евентуално да се хвърля ексепшън? Ако трябва да се прави проверка и ексепшън има нещо предвид, но не съм сигурен колко е по правилата, но го тествах и работи - в общи линии вътре в класа един private статичен hashset и да се прави една проверка дали съдържа вече този модел? И другото е пак ако трябва да се прави проверка дали от различни този модел трябва да е уникален само за този вид стол или изобщо даден  модел да не може да се повтаря в различните видове мебели? (примерно: стол 001 и маса 001 е позволено или не е ?)

Предполагам че на втория въпрос по време на изпит трейнърите биха отговорили, но за първия едва ли :)


от ivo.paunov (991 точки)


1

1- проверки на value и хвърляне на ексепшън

2 - Аз съм го направил като в Factory  класа слагам всички столове в един лист и преди да го създам проверявам дали се съдържа стол с този модел. Не знам дали е правилно но правя 90т.

Ако има такъв хвърляш ексепшън.


от TodorDimitrov (757 точки)

0

ОК, мерси, значи първото е лесния вариант, 

второто правя проверка, само не разбрах дали и там да хвърлям ексепшън, и дали мога да имам примерно маса и стол с еднакъв модел?


от ivo.paunov (991 точки)



0
Ето програма която обединява всички файлове в един:  CSFilesUnifier  има и още една CodeUnifier но на нея не намирам .exe на предните изпити в академията  са ги използвали.Айде и успех на изпита :)



от chernogorov (220 точки)


1
Вече може да качваш зипнат целия солюшън (препоръчително без obj и bin папките заради ограничения размер), и няма нужда да използва unifier. :)

от dentia (12519 точки)


0

За да не отварям нова тема и аз да задам един въпрос.Правих задачата Infestation от миналата година и в bgcoder при цъкване на Детайли след като изпратя решението и ми излиза  ТОВА

Тестовете ги отчита, но не правило.След като сравних резултата ми от bgcoder и отворих тестовете по отделно излиза, че теста ми минава и е 1:1 със съответния тест, а в bgcoder не ми минава.Въпреки това има тестове които минават за верни.

Като погледна нулевия тест ми минава и е същия, а в bgcoder не минава и липсва една част от output-a, заради която не ми го сравнява както трябва.

Някой има ли идея защо се получава това и дали има пряка връзка с тази грешка при компилацията?

Преди това решавах и другата задача от този изпит Furniture и при нея нямаше такива проблеми.


от baretata (934 точки)