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:

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

  1. 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.)
  2. Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.)
  3. 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.)
  4. 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.)
  5. 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.)