Właściwość (informatyka)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

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
  }
}