Implementacja atrybutów (2) | |
c# |
public string Adres{ //właściwość Adres |
class DaneOsobovve{ |
get {return adres;} //zwraca wartość |
private string imię; |
set { adres = value;} //nadaje wartość |
private string nazwisko; |
}//koniec definicji właściwości Adres |
private string adres: |
}'.//Koniec definicji klasy DaneOsobowe |
public string Imie{ //właściwość Imię |
class Program} public static void Main(){ |
get {return imię;} //zwraca wartość |
DaneOsobowe Kolega = new DaneOsobow e}) |
set {imię = value;} //nadaje wartość |
Kolega.Nazwisko = „Nowak”; |
}//konicc definicji właściwości Imię |
Kolega.Imie = „Jan”; |
Kolega.Adres = „ul. Zielona 5 Łódź”; public string Nazwisko{/Avłaściwość Nazwisko . Console.WriteLine(Kolega.Nazwfisko + | |
gel {return nazwisko;} //zwraca wartość set { nazwisko = value;} //nadaje wartość }//koniec definicji właściwości Nazwisko Projektowanie systemów infonnatyeznycli. wykład 2 |
Kolega.Imie + Kolega. Wiek); }//Koniec funkcji Main }; //Koniec definicji klasy Program 12 |
W C# właściwości są naturalnym rozszerzeniem pól w klasach. Często nazywane są „inteligentnymi polami”. Zwykle w klasie definiujemy pola prywatne i metody set i get (tzw. akcesory) które realizują dostęp do danych. Język C# udostępnia wbudowany mechanizm nazwany właściwości w celu pośredniego dostępu do danych klasy. Właściwości są definiowane za pomocą słowa kluczowego property. Generalna forma definiowania właściwości jest następująca:
<modyfikator_zakresu> <zwracana_wartość> <nazwa_właściwości>
get {instrukcje} set{instrukcje}
Gdzie:
<modyfikator_zakresu> może być private, public, protected lub intemal <zwracana_wartość> reprezentuje dowolny typ C#.
<nazwa_właściwości> nazwa właściwości definiowana przez programistę.
W przykładzie na slajdzie została zdefiniowana klasa DaneOsobowe, która posiada trzy prywatne parametry: imię, nazwisko, wiek. Parametry te są prywatne stąd nie mamy do nich dostępu spoza klasy DaneOsobowe. Mamy jednak trzy właściwości za pomocą których możemy modyfikować i odczytywać te parametry. Przykładowo w funkcji Main linia druga (Kolega.Nazwisko=„Nowak”) uruchamia akcesor set właściwości Nazwisko. Natomiast odwołanie Kolega.Imie w funkcji WriteLine uruchamia akcesor get właściwości Imię. Należy dodać, że akcesor set ma predefiniowaną zmienną value, która reprezentuje przypisywaną wartość przekazaną do akcesora. Ponadto, warto zwrócić uwagę na to, że mogą być własność tylko do odczytu które to zawierają tylko akcesor get. Właściwości tylko do zapisu posiadają tylko akcesor set. Należy pamiętać o tym, że własności nie przechowują danych one określają tylko miejsce ich przechowywania. Stanowią tylko interface dostępu do danych, które są zdefiniowane w innym miejscu klasy.
Takie rozpisywanie się na temat właściwości w C# może Państwa dziwić ponieważ nie jest to główny temat wykładu. Przyznaje, że może trochę za dużo napisałem na ten temat jednak jest to unikatowy mechanizm spotykany jedynie w C# a ten slajd z pewnością przyda się jedynie tym, którzy zdecydują się na przygotowanie diagramów klas przy założeniu implementacji programu w języku C#.
12