Właściwość (informatyka)
Właściwość klasy (ang. class property) – specjalny składnik klas w niektórych obiektowych językach programowania, posiadający cechy pola i metody. Właściwości są odczytywane i zapisywane tak jak pola, ale ich odczytywanie i zapisywanie zazwyczaj przebiega przez wywołanie metod. Łatwiej jest czytać i zapisywać pola, niż wywoływać metody, jednak wstawienie poprzez wywołanie metody pozwala na sprawdzanie poprawności danych, aktywowanie kodu aktualizacji (np. wyglądu GUI). Oznacza to, że właściwości są pośrednie między kodem (metody) a danymi (pole) klasy i zapewniają wyższy poziom hermetyzacji niż publiczne pola.
Spis treści |
Języki programowania używające właściwości [edytuj]
Języków programowania, które zapewniają wsparcie dla właściwości: Delphi/Free Pascal, Visual Basic, C#, D WE, F #, Objective-C 2.0 , JavaScript, Python i Vala. Niektóre języki obiektowe, takie jak Java, nie obsługują właściwości i wymaga od programisty definiowania pary metod dostępowej i zmieniającej.
W większości języków, właściwości związane są z parą metod dostępową i zmieniającą, ale dostęp przy użyciu tej samej metody jest też używany. Pominięcie metody dostępowej czyni własność tylko do odczytu lub tylko do zapisu, ale te ostatnie są raczej rzadkie.
Przykładowe kody [edytuj]
Delphi/Free Pascal [edytuj]
type TPen = class private m_Color: Integer; m_width: Integer; function Get_Color: Integer; procedure Set_Color(RHS: Integer); procedure Set_width(aW:integer); public property Color: Integer read Get_Color write Set_Color; property Width: Integer read m_width write set_Width; end; function TPen.Get_Color: Integer; begin Result := m_Color end; procedure TPen.Set_Color(RHS: Integer); begin m_Color := RHS end; procedure TPen.Set_Width(a_Width: Integer); begin if a_width > 2 then m_Width := a_Width else m_Width := 3; end;
// accessing: var pen: TPen; // ... pen.Color := not pen.Color; pen.Width := 10
W C# [edytuj]
Składnia właściwości klasy wygląda następująco:
<modyfikator_dostepu> <typ> nazwa { get { // implementacja } set { // implementacja } }
Przykład [edytuj]
using System; class Person { private string lastname; private string firstname; public string Lastname { get { return lastname; } set { this.lastname = value; // słowo kluczowe value jest używane w odniesieniu do wartości przekazanej do set } } public string Firstname { get { return firstname; } set { this.firstname = value; } } } class Program { public static void Main(string[] args) { Person person = new Person(); // ustawiamy wartości prywatnych pól klasy przy użyciu właściwości person.Lastname = "Kowalski"; person.Firstname = "Jan"; Console.WriteLine("Nazywam się " + person.Firstname + " " + person.Lastname); // pobieramy wartość prywatnych pól klasy za pomocą właściwości } }