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