[Homework] OOP - Defining classes - Септември 2014
Понеже в този курс решенията на задачите търпят на широко обсъждане, което едва ли ще стане при проверката на домашни, мисля да споделям тук решенията си: Ето първото:
LaptopShop (ново условие)
Понеже в този курс решенията на задачите търпят на широко обсъждане, което едва ли ще стане при проверката на домашни, мисля да споделям тук решенията си: Ето първото:
LaptopShop (ново условие)
А дали някой може да ми каже от къде ми идва проблемът в Задача 3. ? Ето линк.
П.П. Нещо се бъгна и без да искам публикувах този въпрос 3 пъти..
Пускам и моето домашно по темата след многократно преправяне Homework
Надявам се да има желаещи да проверяват : )
Колеги, моля за малко помощ в разрешаването на една мистерия, че вече луднах!
Ето това ми е първото домашно: домашно . Да вземем за пример задачата Persons.
Получих коментар за него, гласящ, че не е правилно да слагам Property в конструкторите (this.Name = name), а трябва да слагам поле (this.name = name). Така, както съм го написала, не минавало през property-то и съответно нямало никаква валидация.
Добре, обаче преди да си пратя задачите съм си тествала валидацията - работи. Отварям пак домашното, пак тествам - работи. Сменям конструктора на this.name = name; etc., както препоръчва колегата, който е проверявал - валидацията НЕ работи! Примерно, мога да сложа празен низ за име и си ми печата празно пространство за име без проблем.
ОК, реших, че сигурно колегата нещо се е объркал и не е тествал. Получих обаче втори коментар за друго домашно със същата забележка. Почнах да преглеждам внимателно слайдовете - така е, в конструкторите там има само полета. Отворих си всичките домашни, и навсякъде, където имам валидация е все така - наобратно (с пропърти) работи, с поле - не. Всъщност, доколкото си спомням аз поначало започнах да ги правя в стил this.Name = name, защото иначе не тръгваха тея валидации.
Та въпросът ми е, има ли някой идея защо така при мен нещата се получават наобратно...
Абсолютно правилно си го разбрала и вярно го правиш.
Ако искаш да има валидация - в конструктура се слага пропърти.
Очевидно коментарите на домашните ти са неадкеватни. Даже моето предположение е, че може двете домашни да са се паднали на един човек (тъй като не са много колегите като цяло, които проверяват домашни толкова рано в курса), който просто си мисли че знае нещо, и дори не си прави труда да направи един елеметарен тест, който ще му покаже, че греши.
Колкото до слайдовете, които си гледала, най-вероятно там няма пропъртита или няма валидация и за това е направен пример с полета.
Поздрави!
Карли, за да си по-спокойна, мога да потвърдя думите на Trooper. Имаш ли свойство, подаваш него в конструктора. Ако нямаш свойство, това означава, че полето ти трябва да е частно и само тогава подаваш него в конструктора.
Дори ако нямам валидация, предпочитам да работя с автоматично свойство, защото ако в един момент трябва да сложа валидация няма да се налага да минавам и да оправям малката начална буква на главна.
За съжаление много малка част от проверките на домашни са адекватни. Точно затова и аз реших да си публикувам домашните във форума. Макар че вече попаднах на собственото си домашно, изкопирано до такава степен, че diff- checker не намира разлика. Но пък всички забележки, които получавам от тук са си точно на мястото.
Мерси, Тито и Трупър, Не предполагах, че колегата е един и същ, защото двата коментара са твърде различни като синтаксис и граматика, но Тито е прав, че страшно малко хора проверяват на този етап... Да бях погледнаха вашите домашни, щях да си спестя време за още една задача, вместо да си ровичкам по моите решения и слайдове, ама се увлякох в дебъгването и не се сетих Та благодаря на всички колеги, които си качват решенията тук!
Здравейте,
Виждам, че темата е от предишния випуск, но човек и добре да живее, минава в ниво 2 и в крайна сметка зацикля на ООП-то :) Та имам принципен въпрос, който ми изникна докато се борех с това домашно. Виждам, че при валидация на стринг в сетъра най-често се използва "string.IsNullOrEmpty(value)". В част от кодовете, които разглеждах обаче, използват "String.IsNullOrEmpty(value)" (с главната буква за клас). Аз, честно казано, не мога да схвана логиката по интуиция и не мога да преценя кое би трябвало да е правилно. Когато тествам в моя код, работят и двата варианта. Някой може ли да ми обясни по-подробно кое и защо е правилното?
Ето отговор на въпроса ти :) Накратко - няма разлика.
Ако стойността е стринг, може също да ползваш и
if (value == null)
{
}
не знам дали това е добър вариант или е по-добре да се ползва String.IsNullOrEmpty(value), но все пак е опция :)