25.07.2017 Views

Intro-CSharp-Book-v2015

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

564 Въведение в програмирането със C#<br />

}<br />

}<br />

"Invalid argument: Age should be a positive number.");<br />

}<br />

// Assign the new correct value<br />

this.age = value;<br />

В случай, че някой се опита да присвои стойност на свойството Age, която<br />

е отрицателно число или 0, ще бъде хвърлено изключение от тип<br />

ArgumentException с подробна информация какъв е проблемът.<br />

За да се предпази от невалидни данни един клас трябва да проверява<br />

подадените му стойности в setter методите на всички свойства и във всички<br />

конструктори, както и във всички методи, които могат да променят някое<br />

поле на класа. Практиката класовете да се предпазват от невалидни данни<br />

и невалидни вътрешни състояния се използва широко в програмирането и<br />

е част от концепцията "Защитно програмиране", която ще разгледаме в<br />

главата "Качествен програмен код".<br />

Видове свойства<br />

В зависимост от особеностите им, можем да класифицираме свойствата по<br />

следния начин:<br />

1. Само за четене (read-only), т.е. тези свойства имат само get метод,<br />

както в примера с лицето на правоъгълник.<br />

2. Само за модифициране (write-only), т.е. тези свойства имат само<br />

set метод, но не и метод за четене на стойността на свойството.<br />

3. И най-честият случай е read-write, когато свойството има методи<br />

както за четене, така и за промяна на стойността.<br />

Алтернативен похват за работа със свойства<br />

Преди да приключим секцията ще отбележим още нещо за свойствата в<br />

един клас, а именно – как можем да декларираме свойства в С#, без<br />

да използваме стандартния синтаксис, разгледан до момента.<br />

В езици за програмиране като Java, в които няма концепция (и съответно<br />

синтактични средства) за работа със свойства, свойствата се декларират<br />

чрез двойка методи, отново наречени getter и setter, по подобие на тези,<br />

които разгледахме по-горе.<br />

Тези методи трябва да отговарят на следните изисквания:<br />

1. Методът за четене на стойността на свойство е метод без<br />

параметри, който трябва да връща резултат от тип, идентичен с типа<br />

на свойството и името му да е образувано от името на свойството с<br />

представка Get:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!