For faster navigation, this Iframe is preloading the Wikiwand page for Właściwość (informatyka).

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 poprzez wywołanie metod. Łatwiej jest czytać i zapisywać pola, niż wywoływać metody, jednak wstawienie poprzez wywołanie metody pozwala sprawdzić poprawność danych, aktywować kod aktualizacji (np. wygląd elementów GUI). Oznacza to, że właściwości mają cechy pośrednie pomiędzy ciągiem instrukcji (metoda) 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ęzyki programowania, które zapewniają wsparcie dla właściwości to: Object Pascal (Delphi/Free Pascal), Visual Basic, C#, D, F #, Objective-C 2.0, JavaScript, Swift, Python i Vala. W tych językach właściwości związane są z obecnością w klasie pary metod dostępowych: odczytującą (ang. getter) i zapisującą (ang. setter). Metody dostępowe są na ogół prywatne (ang. private) lub chronione (ang. protected). Jest tak na przykład w językach: C# i Object Pascal. W innych metody te są publiczne (np. Python, ponieważ ten język nie wspiera hermetyzacji). Pominięcie metody zapisującej czyni właściwość tylko do odczytu. Pominięcie metody odczytującej czyni właściwość tylko do zapisu. Właściwości tylko do zapisu są rzadkością z uwagi na ich małą użyteczność. Możliwe są również przypadki, gdy właściwości nie odpowiada żadne pole w klasie, a odczytywana wartość jest uzyskiwana jako wynik działania metody odczytującej (np. jako wynik obliczeń). Właściwości mogą być typu prostego (np. liczba całkowita, liczba rzeczywista, ciąg znaków, wartość boolowska) lub złożonego (np. tablica, struktura, obiekt). Właściwości tablicowe wymagają podania numeru komórki (indeksu), który jest przekazywany jako jeden z argumentów metody dostępowej (odczytującej lub zapisującej).

Niektóre języki obiektowe, takie jak Java, nie obsługują właściwości, co wymaga od programisty bezpośredniego posługiwania się metodami dostępowymi: odczytującą i zapisującą.

Przykładowy kod w języku Object 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;
// zastosowanie
var Pen: TPen;
// ...
Pen.Color := not Pen.Color;
Pen.Width := 10;
// ...

Przykładowy kod w języku C#

[edytuj | edytuj kod]

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

<modyfikator_dostepu> <typ> nazwa
{
  get
  {
    // implementacja
  }
  set
  {
    // implementacja
  }
}
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
  }
}
{{bottomLinkPreText}} {{bottomLinkText}}
Właściwość (informatyka)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?