Deklaracja (programowanie komputerowe) - Declaration (computer programming)
W programowaniu komputerowym , A deklaracja jest konstruktem język , który określa właściwości o identyfikatorze : deklaruje co słowo (identyfikator) „środki”. Deklaracje są najczęściej używane dla funkcji , zmiennych , stałych i klas , ale mogą być również używane dla innych jednostek, takich jak wyliczenia i definicje typów. Oprócz nazwy (samego identyfikatora) i rodzaju jednostki (funkcja, zmienna itp.) Deklaracje zazwyczaj określają typ danych (dla zmiennych i stałych) lub podpis typu (dla funkcji); typy mogą również zawierać wymiary, na przykład dla tablic. Deklaracja służy do poinformowania kompilatora o istnieniu jednostki ; jest to ważne w tych językach o silnym typie , które wymagają funkcji, zmiennych i stałych, a ich typy muszą być określone w deklaracji przed użyciem i jest używane w deklaracji w przód . Termin „deklaracja” jest często przeciwstawiany terminowi „definicja”, ale znaczenie i użycie różni się znacznie w zależności od języka; patrz poniżej.
Deklaracje są szczególnie widoczne w językach w tradycji ALGOL , w tym w rodzinie BCPL , przede wszystkim w C i C ++ , a także w Pascalu . Java używa terminu „deklaracja”, chociaż Java nie wymaga oddzielnych deklaracji i definicji.
Deklaracja a definicja
Jedna podstawowa dychotomia dotyczy tego, czy deklaracja zawiera definicję: na przykład, czy deklaracja stałej lub zmiennej określa wartość stałej (odpowiednio początkową wartość zmiennej), czy tylko jej typ; i podobnie, czy deklaracja funkcji określa treść ( implementację ) funkcji, czy tylko jej sygnaturę typu. Nie we wszystkich językach występuje takie rozróżnienie: w wielu językach deklaracje zawsze zawierają definicję i mogą być określane jako „deklaracje” lub „definicje”, w zależności od języka. Jednak pojęcia te są rozróżniane w językach, które wymagają deklaracji przed użyciem (dla których używane są deklaracje forward) oraz w językach, w których interfejs i implementacja są oddzielone: interfejs zawiera deklaracje, implementacja zawiera definicje.
W użyciu nieformalnym „deklaracja” odnosi się tylko do czystej deklaracji (tylko typy, bez wartości lub treści), podczas gdy „definicja” odnosi się do deklaracji, która zawiera wartość lub treść. Jednak w formalnym zastosowaniu (w specyfikacjach językowych) „deklaracja” obejmuje oba te znaczenia, z dokładniejszym rozróżnieniem według języka: w C i C ++ deklaracja funkcji, która nie zawiera treści, nazywana jest prototypem funkcji , podczas gdy deklaracja funkcji, która zawiera treść, nazywana jest „definicją funkcji”. W Javie deklaracje występują w dwóch formach. W przypadku metod publicznych mogą być prezentowane w interfejsach jako sygnatury metod, które składają się z nazw metod, typów danych wejściowych i typu danych wyjściowych. Podobną notację można zastosować w definicji metod abstrakcyjnych , które nie zawierają definicji. Można utworzyć instancję klasy otaczającej, raczej należałoby utworzyć nową klasę pochodną, która zawiera definicję metody, aby utworzyć instancję klasy. Począwszy od Java 8 , wyrażenie lambda zostało dołączone do języka, co można było postrzegać jako deklarację funkcji.
Deklaracje i definicje
W rodzinie języków programowania C deklaracje są często gromadzone w plikach nagłówkowych , które są zawarte w innych plikach źródłowych, które odwołują się do tych deklaracji i używają ich, ale nie mają dostępu do definicji. Informacje w pliku nagłówkowym zapewniają interfejs między kodem używającym deklaracji a tym, który ją definiuje, formę ukrywania informacji . Deklaracja jest często używana w celu uzyskania dostępu do funkcji lub zmiennych zdefiniowanych w różnych plikach źródłowych lub w bibliotece . Niezgodność między typem definicji a typem deklaracji generuje błąd kompilatora.
W przypadku zmiennych definicje przypisują wartości do obszaru pamięci, który był zarezerwowany podczas fazy deklaracji. W przypadku funkcji definicje dostarczają treść funkcji. Chociaż zmienną lub funkcję można zadeklarować wiele razy, zwykle definiuje się ją raz (w C ++ jest to znane jako Reguła Jednej Definicji lub ODR).
Języki dynamiczne, takie jak JavaScript lub Python, generalnie pozwalają na przedefiniowanie funkcji, czyli ponowne ich wiązanie ; funkcja jest zmienną, podobnie jak każda inna, z nazwą i wartością (definicją).
Oto kilka przykładów deklaracji, które nie są definicjami, w C:
extern char example1;
extern int example2;
void example3(void);
Oto kilka przykładów deklaracji, które są definicjami, ponownie w C:
char example1; /* Outside of a function definition it will be initialized to zero. */
int example2 = 5;
void example3(void) { /* definition between braces */ }
Niezdefiniowane zmienne
W niektórych językach programowania niejawna deklaracja jest dostarczana przy pierwszym napotkaniu takiej zmiennej w czasie kompilacji . W innych językach takie użycie jest uważane za błąd, który może skutkować wyświetleniem komunikatu diagnostycznego. Niektóre języki zaczęły się z niejawnego zachowania deklaracji, ale gdy dojrzał zapewnili odpowiednią opcję, aby ją wyłączyć (np Perl „s« use strict
»lub Visual Basic ” s " Option Explicit
„).
Zobacz też
Uwagi
Bibliografia
Linki zewnętrzne
- Declare vs Define w C i C ++ , Alex Allain
- 8.2. Deklaracje, definicje i dostępność , The C Book, GBdirect
-
Deklaracje i definicje (C ++) , MSDN
- „Deklaracje mówią kompilatorowi, że istnieje element programu lub nazwa. Definicje określają, jaki kod lub dane opisuje nazwa”.