Loading...
EricDraven avatar EricDraven 275 Точки

Lab03-Encapsulation, Problem-02-Salary Compile Time Error

Това е решението което качвам, при мен върви локално, в Judge ми дава Compile Time Error, първия път помислих че съм объркал стратегията, и че съм пропуснал да сложа public на класа, затова опитах пак но не е от това. Някакви идеи?

02-Salary zip

Тагове:
0
C# OOP Basics
prohause avatar prohause 356 Точки

Прави ми впечатление, че липсват гетъри и сетъри. Пробвайте да ги добавите. 

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

значи колега,тои ползва полета така че кода му е ок,не е като да ползва properties,сега дали е правилно е друг въпрос аз лично бих го направил с property и вътре в salary да проверявам годините и така да увеличавам но това е друга тема.  Get И Set се ползват в property не на полетата....Да не говорим че set се ползва доста ситуационно.

Кода изглежда ок проблема е по-скоро в judge Но за всеки случай аз бих сменил името на salary class-a на нещо различно примерно StartUp и направил и него Public и тогава да пробвам отново.Гледам че си махнал namespaces но понякога и тея дребни глупости правят проблем. 

0
03/05/2018 06:14:50
EricDraven avatar EricDraven 275 Точки

Благодаря за предложенията, но все още не успявам да го подкарам

Ползвам private fields, а не properties, защото по условие се иска да са private и да не могат да се достъпват извън класа освен с метода за увеличаване на заплатата, все пак лекцията е за Енцапсулация. И все пак опитах и с properties, същата грешка, със смяна на името на класа Salary и да стане public, същата грешка, поне да изписваше за какво гърми, а то на details няма никаква информация

0
03/05/2018 09:52:53
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

ам с промяната на стратегийте това е нормално :Д последните 3 месеца доста пъти се сблъскахме с това,на подготовките за изпитите а задачи от домашните. понякога ни гърмяха с compile time само защото нямахме примерно константи  за магически числа и подобни глупости.Ta най-вероятно judge очаква нещо което го няма и затова си гърми така.Явор най-вероятно я е решил на лекцията може да видиш на видеото.:Д лабс ми бяха скучни и ги прескачах та нямам минало решение в Judge да видя какви са разликите и защо едното минава а другото не.

Tова да имаш property което също може да е private или protected няма нищо лошо :д идеята е че вътре в него си правиш валидацията.. Примерно както си направил метода си там щеше да е this.Salary+=.... а вътре в salary щеше да е : 

protected decimal Salary get=>this.salary; set {

if(this.Age<30) { value+=....}

else {value+=....}

this.salary=value } и общо взето целия метод които си написал става излишен  и горе само ще имаш в main  people.ForEach(p=>p.Salary+=bonus);и толкова.

Нищо не пречи да си имаш private поле.Което да достъпваш с публично property енкапсулацията ти по никакъв начин не е нарушена. 

1
03/05/2018 13:06:21
EricDraven avatar EricDraven 275 Точки

Открих го, по-голяма тъпотия не бях виждал. Даваше Compile time error, защото метода ми вместо IncreaseSalary го бях именувал SalaryIncrease, след това ми даваше пък един грешен отговор, защото му липсваше property Age, което не се ползва и по условие искат да го няма?

1
03/05/2018 11:16:22
Quake3 avatar Quake3 546 Точки

Току що и аз открих същото, по трудния начин:)
В условието си пише: "You should be able to use the class like this: ... persons.ForEach(p => p.IncreaseSalary(bonus));..." Пропърти Age пък се иска в задача 1, а 2 започва със "Refactor project from last task."

 

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