Loading...
nakov avatar nakov SoftUni Team Trainer 5295 Точки

[Exam] OOP - Резултати от изпит, впечатления, решения - октомври 2014

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

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

19
C# OOP Basics 08/11/2014 19:19:30
milen8204 avatar milen8204 296 Точки

Здравейте,

Не знам дали ne подкарам някаква лоша практика, но искам да попитам нещо...

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

Коментарите за решението на едната задача са следните:

Task 1 Estates: 80 score / Абстрактните класове трябва да имат protected конструктори. Сетване на неправилни начални стойности за някои от свойствата в Estate. Повторение на код поради непреизползване на конструктори в BuildingEstate.

class Estate

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

class BuildingEstate

Аз лично не виждам повторение на код, може и да има ама не доумявам кокво се повтаря.

1
Valleri avatar Valleri 304 Точки

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

Повторението на кода е при сетването на пропъртитата Rooms, hasElevator. В твоя случай може би това е варианта, но пък ти имаш паралелно наследяване на два конструктура, което не е необходимо. Ако предположим, че конструктор с пълен комплект данни ще си ги наследиш стандартно, както си направил в конструктор 1 (най-горе). А ако са необходими дефолтни стойности предполагам че трябва да са указани в условието, иначе ще има несъответствия при проверката.

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

2
milen8204 avatar milen8204 296 Точки

@Valleri Благодаря за уточнението. Логиката ми за задаване на Rooms и hasElevator във втория конструктор беше..., предвид че енджина на задачата първо създава обект, с едно поле от калс Естейт и останалите полета са празни и после му набутват стойностите на полетата. Моята идея е да има друг конструктор, който да поема тази му функционалност и да се вижда, че приема дефолтни стойности. Разбира се, че можеше да ползвам само един конструктор, като задам на всички полета, които не са подадени стойности null, но ми се стори, че това повторение на две променливи е допустимо, защото е друга логиката за използване на конструктура, а и се постига по - добра четимост на кода, но явно проверяващия не е бил на това мнение :).

А за дефолтните стойности на естейт те служат само за създаването на първоначалния полу празен обект и след като енджина набута истинските стойности те заменят и нямат никакво значение.

1
Valleri avatar Valleri 304 Точки

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

Разбирам те за дефолтните стойности, но в случая води до допълнителен код и не помага с нищо. Само в случая... :)

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