Właściwość (informatyka)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

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.

Języki programowania używające właściwości[edytuj | edytuj kod]

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, Swift, 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 | edytuj kod]

Delphi/Free Pascal[edytuj | edytuj kod]

type
  TPen = class
  private
    FColor: Integer;
    FWidth: Integer;
    function GetColor: Integer;
    procedure SetColor(Value: Integer);
    procedure SetWidth(Value: Integer);
  public
    property Color: Integer read GetColor write SetColor;
    property Width: Integer read FWidth write SetWidth;
end;
 
function TPen.GetColor: Integer;
begin
  Result := FColor;
end;
 
procedure TPen.SetColor(Value: Integer);
begin
  if FColor <> Value
   then FColor := Value;
end;
 
procedure TPen.SetWidth(Value: Integer);
begin
  if Value > 2
   then FWidth := Value
   else FWidth := 3;
end;
// accessing:
var pen: TPen;
// ...
Pen.Color := not Pen.Color;
Pen.Width := 10

W C#[edytuj | edytuj kod]

Składnia właściwości klasy wygląda następująco:

<modyfikator_dostepu> <typ> nazwa
{
  get
  {
    // implementacja
  }
  set
  {
    // implementacja
  }
}

Przykład[edytuj | edytuj kod]

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