Definicja (programowanie)
Definicja w programowaniu komputerów, to definicja określonego elementu (obiektu) programu zawarta w kodzie źródłowym. Tworzy ona określony element (obiekt) kodu, taki jak np.: stała, zmienna, podprogram, klasa itp.. Definicja często występuje łącznie z deklaracją i stanowi z nią jedną konstrukcję programistyczną. Literatura przedmiotu stosuje w tym przypadku pojęcie deklaracji. Czasem zachodzi jednak potrzeba oddzielenia deklaracji od definicji.
Elementy polegające definiowaniu
Definiowaniu w językach programowania podlegać mogą między innymi:
- zmienne, stałe, typy, klasy
- moduły (biblioteki, pakiety, itp.)
- podprogramy, metody
- parametry podprogramów
- inne elementy, specyficzne dla konkretnego języka programowania lub jego konkretnej implementacji.
Przykłady definicji oddzielonych od deklaracji
Zmienne
Generalnie typowym rozwiązaniem dla zmiennych statycznych stosowanym w językach programowania jest deklaracja zmiennej, która stanowi równocześnie jej definicję. Potrzeba oddzielnej definicji i jej deklaracji wiąże się między innymi z podziałem kodu źródłowego na moduły. Jeżeli w określonym module ma zostać użyta zmienna publiczna z innego modułu to w tym module występować może (jeżeli język tego wymaga, np. dla modułów kompilowanych niezależnie) deklaracja tej zmiennej (np. z atrybutem external
), a definicja zmiennej znajduje się w tym innym module.
Podprogramy
Stosowanie definicji podprogramu i oddzielnej deklaracji w zasadzie wymagane jest jak dla zmiennych przy podziale podprogramów na moduły. Przykładowo w języku C[1][2][3] powszechnie stosuje się pliki nagłówkowe włączane do danego modułu, zawierają deklaracje potrzebnych podprogramów i innych elementów, natomiast ich definicje realizowane są niezależnie. Takie postępowanie w pewnych językach jest także wymagana dla podprogramów użytych przed ich zdefiniowaniem w ramach jednego modułu. Tak jest np. w języku Pascal[4][5], w którym musi wystąpić deklaracja zapowiadająca z użyciem frazy forward
występującym po nagłówku podprogramu, w przypadku gdy definicja podprogramu znajduje się dalej.
procedure pr1(parametry); forward; { deklaracja podprogramu pr1 }
procedure pr2; { definicja podprogramu pr2 – początek, jej nagłówek jest równocześnie deklaracją tego podprogramu }
begin
pr1
end; { definicja podprogramu pr2 – koniec}
procedure pr1(parametry); { definicja podprogramu pr1 – początek }
begin
{ kod procedury }
end; { definicja podprogramu pr1 – koniec}
Metody
W pewnych obiektowych językach programowania przyjęto składnię, w której definicja klasy zawiera jedynie deklarację metod w niej zawartych. Sama definicja tych metod zostaje natomiast umieszczonej odrębnie. Wskazanie do której klasy przynależy dana definicja metody, realizowane jest za pomocą selekcji umieszczonej w nagłówku definicji podprogramu. Przykład w języku C++[3]:
class Pr{
public :
void proc(); /* deklaracja metody proc w klasie Pr */
int func(int x); /* deklaracja metody func w klasie Pr */
};
void Pr::proc() /* definicja metody proc dla klasy Pr – początek */
{
/* treść metody proc */
} /* definicja metody proc dla klasy Pr – koniec */
int Pr::func(int x) /* definicja metody func dla klasy Pr – początek */
{
/* treść metody func */
} /* definicja metody func dla klasy Pr – koniec */
Parametry
Najczęściej deklaracja i definicja parametrów podprogramu zawarta jest w jednym miejscu w nagłówku podprogramu. Jednak w pewnych językach stosowano rozwiązania, które obecnie stanowią zaszłości, polegające na tym, że w nagłówku podprogramu znajdowała się sama deklaracja parametru, a dopiero za nim jego definicja. Taka konstrukcja istniała w pierwszych wersjach języka C[1], w którym definicja parametrów umieszczana była za prototypem funkcji.
int func(a,b) /* deklaracja parametrów w nagłówku podprogramu */
int a,b; /* definicja parametrów */
{
/* treść funkcji */
}
Przypisy
- ↑ a b Brian W. Kernighan, Dennis M. Ritche: Język C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1067-3. (pol.)
- ↑ Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.)
- ↑ a b Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.)
- ↑ Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. wydanie trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.)
- ↑ Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.)
Bibliografia
- Michael Marcotty, Henry Ledgord, tłumaczenie: Krystyna Jerzykiewicz: W kręgu języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1342-7. (pol.)
- John E. Nicholls: Struktura języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Informatyka. ISBN 83-204-0246-8. (pol.)