Atrybut (programowanie)
Atrybut – element składni języka programowania, który określa konkretną właściwość (znaczenie), nadaną wybranemu elementowi (obiektowi).
Rodzaje atrybutów
W różnych językach programowania, mogą być dostępne różne zestawy i rodzaje atrybutów przypisywanych do występujących w danym języku obiektów programu. Ponadto konkretny atrybut zwykle może być przypisany wyłącznie do jednego (lub kilku wybranych) elementów określonego rodzaju.
Podział ze względu na znaczenie
Typowe atrybuty, często spotykane w uniwersalnych językach wysokiego poziomu, to:
- atrybuty typu
- określające zakres wartości, które może dany element reprezentować, a także operacji, które mogą być na elemencie wykonywane, w większości języków ten atrybut nazywany jest typem danych
- atrybuty rozmiaru
- określające wielkość elementu lub ilość jednostkowych elementów w agregatach, np. w tablicach
int a[5]
; lubshort, int, long
– różne atrybuty danych całkowitoliczbowych, definiujących wielkość danej, a tym samym zakres w wartości, jakie mogą być reprezentowane przez element - atrybuty dotyczące tworzenia, oraz zakresu istnienia i widoczności (dostępności elementu)
- te atrybuty wynikają z lokalności lub globalności danego elementu, a także ewentualnego ich przesłaniania, typowe atrybuty tego typu to: element lokalny –
auto, local
; element statyczny –static
, element globalny –global
; element zdefiniowany zewnętrznie –external
; - atrybuty inicjalizacji (wartości początkowej)
- atrybuty te przypisują w miejscu utworzenia obiektu, wartość początkową
- atrybuty rozmieszczenia w pamięci
- specyfikują elementy zwykle zależne od maszyny, dotyczące wymuszenia innego od standardowego położenia w pamięci, np. w PL/I:
aligned
,unaligned
; lub w Turbo Pascalu:absolute: adres
;
- atrybuty sposobu przypisania argumentu
- ta klasa atrybutów jest specyfikowana na liście parametrów przy deklaracji podprogramów i definiuje sposób przekazania argumentu w miejsce parametru podprogramu w instrukcji wywołania lub w wywołaniu funkcji w wyrażeniu, np. Visual Basic:
ByVal
– przez wartość;ByRef
– przez referencję.
- inne
- specyficzne dla konkretnego języka lub implementacji oraz systemu komputerowego
Podział ze względu na sposób specyfikacji
Oprócz podziału atrybutów ze względu na ich znaczenie, atrybuty można podzielić ze względu na sposób specyfikacji i sposób przypisania atrybutu do elementu kodu:
- atrybuty jawne
- atrybuty jawnie podane w kodzie poprzez nazwę konkretnego atrybutu (np.
auto integer x;
) - atrybuty kontekstowe
- atrybuty nadane na podstawie kontekstu, w którym występuje element (np.
x=1;
zostanie nadany atrybutinteger
na podstawie kontekstu, tzn. typu literału liczbowego) - atrybuty domyślne
- atrybuty nadawane przy braku jawnej specyfikacji atrybutu określonego rodzaju (np.
integer x;
– elementowix
zostanie przypisany niewyspecyfikowany, domyślnie przyjmowany atrybutauto
).
Struktura atrybutów w języku programowania
Struktura atrybutów w języku programowania może być zbudowana:
- symetrycznie
- tzn. istnieje możliwość jawnej specyfikacji każdego z możliwych atrybutów, co nie stoi w sprzeczności z ewentualną możliwością, stosowania niejawnych atrybutów domyślnych (np. zestaw atrybutów LOCAL – lokalny, STATIC – statyczny, EXTERNAL – zewnętrzny; przy czym brak jawnej specyfikacji któregokolwiek z nich może oznaczać przez domniemanie przyjęcie przez translator atrybutu np. LOCAL);
- niesymetrycznie
- w tym przypadku istnieje z góry narzucony mechanizm atrybutów domyślnych – nienazwanych jawnie (np. dla powyższego zestawu atrybutów LOCAL – lokalny, STATIC – statyczny, EXTERNAL – zewnętrzny; może nie istnieć słowo LOCAL umożliwiające jawną specyfikację, że element jest lokalny – występować mogą wyłącznie słowa STATIC i EXTERNAL, przypisanie tego nienazwanego atrybutu nastąpi przy braku specyfikacji STATIC i EXTERNAL);
Pojęcie atrybutu w programowaniu obiektowym
W programowaniu obiektowym, część literatury przedmiotu, używa pojęcia atrybutu w odniesieniu do własności obiektu, czyli wartości przechowywanej w polu obiektu. Można więc w pewnym uproszczeniu utożsamiać atrybut obiektu z reprezentacją pewnego stanu obiektu.
Natomiast pojęcie atrybutu klasy odnoszone jest do wspólnej wartości dla całej klasy obiektów.
Elementy kodu z przypisywanymi atrybutami
W ogólności atrybuty przypisywane są do każdego definiowanego elementu kodu źródłowego, w zakresie zdefiniowanym przez konkrety języka, takich jak:
- literały
- stałe
- zmienne
- bloki: podprogramy, moduły, pakiety, klasy, itd.
- parametry
- etykiety
- inne elementy specyficzne dla konkretnego języka.
Zwykle element kodu (obiekt programu), do którego przypisywany jest pewien atrybut, reprezentowany jest za pomocą zadeklarowanego identyfikatora.
Miejsce w kodzie przypisywania atrybutów
Najczęściej spotykaną formą przypisania atrybutu do obiektu kodu jest deklaracja. Pewne specyficzne atrybuty, np. atrybut rozmiaru, mogą być przypisywane w niektórych językach, w trakcie wykonywania programu, np. w językach z zaimplementowanymi tablicami dynamicznymi, których rozmiar może ulegać zmianie w trakcie wykonywania programu. W językach, w których nie wymaga się dla pewnej klasy obiektów, jawnych deklaracji, istnieje mechanizm przypisywania atrybutów domyślnych, przez domniemanie, także na podstawie kontekstu pierwszego – tworzącego – wystąpienia danego elementu, jak i następnych wystąpień, jeżeli kontekst wymaga zmiany przypisanych atrybutów.
Przykład:
' Visual Basic
A=1 ' utworzenie zmiennej z atrybutem typu całkowitoliczbowego
…
A="Ala" ' zmiana atrybutu typu na łańcuchowy
Zobacz też
Bibliografia
- John E. Nicholls, Struktura języków programowania, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Informatyka, ISBN 83-204-0246-8
- Jan Bielecki, Rozszerzony PL/I i JCL w systemie OS/RIAD, Państwowe Wydawnictwo Naukowe, Warszawa 1986, Seria: Biblioteka Informatyki, ISBN 83-01-06146-4