Loading...
bgnightwish avatar bgnightwish 6 Точки

[Homework] OOP - Defining Classes - Ноември 2015

Здравейте, нека споделяме решенията от домашното за първата лекция по ООП, в тази тема,

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

Ето и моето домашно smiley

01: Persons

02: Laptop Shop

03: PC Catalog

 

Тагове:
5
C# OOP Basics 23/11/2015 23:23:34
Gesh4o avatar Gesh4o Trainer 305 Точки

Здравейте,

това е първото домашно, което пращам и съм отворен за градивна критика - тук. Задача №4 е незавършена, така че бих приел насоки за това накъде да тръгна. :)

0
wayne354 avatar wayne354 9 Точки

Имам следния проблем - при въвеждане на "@" в email ми го изкарва, след като го махна при Console.WriteLine() изписва самия email отново, а не както трябва "invalid email". Моля ако някой знае как да го оправя да сподели! 

Нарушена точка 12 от Правилата.

0
20/11/2015 21:09:19
Gabbs avatar Gabbs 80 Точки
       public Person(string name, int age, string email)
        {
            this.Name = name;
            this.Age = age;
            this.email = email;
        }

трябва да е this.Email = email (с главна буква), иначе въобще не минаваш през пропъртито и съответно проверката.

2
20/11/2015 21:05:13
wayne354 avatar wayne354 9 Точки

благодаря :) 

1
mbeleva88 avatar mbeleva88 69 Точки

Здравейте,

Относно 2-ра задача - според мен има някакво противоречие в условието - хем:

"The model and price are mandatory. All other values are optional"

и едновременно с това се иска:

Put validation in all property setters and constructors.

Като тръгвам да създавам нов лаптоп само с модел и цена , ми хвърля Exception ,че другите са ми null :)

Вие какво мислите?

0
Filkolev avatar Filkolev 4482 Точки

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

Да речем имейл; може да има, може да няма. Т.е. null e валидна стойност. Но ако е сетната някаква стойност и тя не отговаря на дадени условия - значи е невалидна.

0
mbeleva88 avatar mbeleva88 69 Точки

Да, за имейл-а е ясно.

Т.е. в случая аз трябва да си измисля някакви условия за всички характеристики?

Всъщност докато пишех това съобщение се сетих ,че може да сложа валидация ако има текст, да е с минимум 2 char-a да речем :)

Мерси!

1
Filkolev avatar Filkolev 4482 Точки

Примерно. Може ако има текст да подсигуриш, че не е празен стринг или whitespace, да сложиш минимална дължина или други допълнителни условия. Зависи от условието на задачата.

1
ivodonev avatar ivodonev 7 Точки

Много благодаря за коментарите по първата задача, мисля че почти успях да разбера какво прави overrride ToString() метода :) като го напиша още 100-на пъти сигурно ще съм го разбрал :)

Ето втора задча и от мен:

Problem 1 - http://pastebin.com/7YN6Kb6m

Problem 2 - http://pastebin.com/250RU0sZ

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

Model: Compaq, CPU: Intel i7, RAM: 16, VGA: nVidia, HDD: SSD 80GB, Price: 1234.50, Batterry Battery Type: Li-ion, {0} hours, 4 hours  Battery Type: Li-ion, {0} hours, 4 hours

Отворен съм за всякаква градивна критика и коментари :)

0
21/11/2015 16:29:26
Bogdan1899 avatar Bogdan1899 50 Точки

Привет на всички!

Ще използвам и аз темата,за да помоля някой да ми разясни следния проблем. В задачата PC Catalog съм направил така, че в класа Components методът ArraySight() връща масив от стрингове. Този масив го използвам впоследствие в метода PrintComputer()  от класа Computer. Незнайно защо за мен обаче в Man() - а на програмата PrintComputers() ми връща само computer.Price без computer.Name, макар привидно да съм използвал един и същ синтаксис.

class Components - http://pastebin.com/XdKW7n6g

class Computer - http://pastebin.com/a0zUXCxC

main() - http://pastebin.com/UCwVYHTg

 

Също така ако имате други препръки ще се радвам да ги чуя.

Поздрави!

 

EDIT: Намерих си грешката. Оказа се тъпо недоглеждане при валидацията в едно от пропъртитата.

0
21/11/2015 20:02:41
biser.stoev avatar biser.stoev 57 Точки

Здравейте имам малък проблем. Когато искам да ползвам тази благинка от c# 6 : value?.Length == 0 за провекра в пропъртитата ми гърми "Invalid expression, Syntax Error". Може ли някой да ми каже как да го оправя? Ползвам Visual Studio 2013 Update 5 с Resharper, ако има някакво значение.

0
22/11/2015 02:48:09
biser.stoev avatar biser.stoev 57 Точки

П.П.: Тествах го на Visual Studio 2015 и там си работи без проблем. Някой друг да потвърди? И има ли начин да се подкара на 2013? (разгледах и в MSDN и там е споменато само към 2015)

0
Filkolev avatar Filkolev 4482 Точки

Виж асемблито с какъв таргет фреймуърк е в опциите. Мисля, че трябва да е поне 4.5.2; може да го смениш и с 4.6 ако не стане. След като си с ъпдейт 5 не би трябвало да има проблеми да компилираш C# 6.

0
biser.stoev avatar biser.stoev 57 Точки

Използвам 4.6. Поразрових се повече и доколкото разбрах default language version на 2013 е c# 5. Опитах се ръчно да отида в пропъртитата на текущия solution и да го сменя на c# 6, както беше показано в няколко сайта, но там изобщо не се появява c# 6, има само default, ISO-1, ISO-2, c# 3, c# 4 и c# 5. Трябва ли да си изтегля някакъв допълнителен пакет или?

0
22/11/2015 14:15:52
bacuty avatar bacuty 55 Точки

https://github.com/VasilenaDragancheva/OOP/DefiningClasses

Ето ги и моите решения, отчасти е 4-та.

Малко трябваше да организирам класовете, но не знам на какъв точно принцип. Абстрактните ли да са заедно или примерно student само :).

Отворена съм към критика :)

0
Filkolev avatar Filkolev 4482 Точки

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

Иначе в неймспейси е логично да се отделят свързани помежду си класове. При твоята структура на приложението Person трябва да е самостоятелен, може да направиш неймспейс Students, където да са всички студенти (включително абстрактния). Така например ако добавиш и други класове, да речем лектори, ще ги отделиш в друг неймспейс. По-нататъшно разделение се прави само при нужда, т.е. ако имаш 3 вида онлайн студенти и 5 вида присъствени - логично е да направиш под-неймспейси в рамките на основния неймспейс на студентите. В случая не виждам нужда, няма много логика за един клас да се прави неймспейс, тъй като въпросните конкретни класове студенти в момента няма на какъв принцип да ги групираш.

2
dngeorgiev avatar dngeorgiev 0 Точки

Здравейте!

Моите задачи, без четвърта: тук

Поздрави!

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