[Homework] OOP - Defining Classes - Януари 2015
Мисля няма да е лошо да имаме обща тема за първото домашно от курса по ООП от нашия випуск. Не за друго, а доста хора имат въпроси и питат в най-различни теми, което е доста трудно за следене и е доста разхвърляно. Според мен би било добре да правим нови общи теми за различните домашни и нещата да се коментират вътре. На мен поне, а и предполагам на други хора им е по-лесно всичко да е накуп, а не отделни теми за всяка задача.
Ето го моето първо домашно:
На 3-та задача имам 2 класа в 1 файл, знам (вече) че не се прави така, но домашното го писах преди 2 седмици, а сега не ми се занимаваше да преправям.
4-та задача я написах днес, след като изгледах половината курс. Не ми се занимаваше да преправям override ToString на класовете, затова като сортирах само CurrentStudent-ите в нов масив, заедно с това направих и нови анонимни обекти като им взимам които пропертита искам (ред 21-35). C# изкарва анонимните обекти подобно на JavaScript, достатъчно добре ми се стори за целите на задачата :)
Също за 4-та ме мързеше да пиша и пропертита с проверки за различните елементи, затова само съм сложил get-ъри и set-ъри.
Имам коментар по 1-ва задача, козметични неща.
В ToString() за Person - прието е да се минава на нов ред след запетаята, която отделя форматирания стринг от параметрите. За имейла, понеже той няма как да е празен, може да е или null, или валиден мейл, може да ползваш оператора ?? (null-coalescing) вместо тернарния. Съкращава малко записа и върши същата работа.
На 2-ра задача, добавяш към лаптопа батерията и като отделно поле имаш battery life, което според мен е по-логично да е свойство на самата батерия.
Като хвърляш ексепшъни е хубаво да слагаш информация кой параметър е изгърмял; особено в класа Лаптоп както има доста пропъртита, всичко може да изгърми с ArgumentNullException може да представлява затруднение.
Благодаря за КПК забележката! :) Не съм сетил за ?? оператора, но определено става по-късо и ясно с него.
Едит: За живота на батерията и аз си го помислих, логично е да е в батерията. Сигурно съм се подвел по примерния output, където батерията е отделно от живота на батерията...