Podtyp – konstrukcja programistyczna umożliwiająca w określonym języku programowania definiowanie ograniczeń na pewnym typie bazowym.
Pojęcie podtypu zdefiniowane zostało wprost w języku AdaA. Nico Habermann, Dewayne E. Perry, Ada dla zaawansowanych, Wydawnictwa Naukowo-Techniczne, Warszawa 1989 r., seria: Biblioteka Inżynierii Oprogramowania, , w którym istnieje jednoznaczne odróżnienie deklaracji typu i podtypu, identyfikowane odpowiednim słowem kluczowym: subtype – dla podtypów w odróżnieniu od type – dla typów, w tym także typów pochodnych.
Podtyp jest więc nałożeniem pewnego ograniczenia na pewien typ (w nomenklaturze języka Ada nazywany typem bazowym). W przypadku podtypów ograniczenia te dotyczą wyłącznie zakresu możliwych wartości należących do podtypu, stanowiących pewien podzbiór wyodrębniony ze zbioru możliwych wartości typu bazowegoMichael Marcotty, Henry Ledgord, W kręgu języków programowania, tłumaczenie: Krystyna Jerzykiewicz, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Biblioteka Inżynierii Oprogramowania, . Jest to więc różna konstrukcja w porównaniu z typem pochodnym, definiującym jednak nowy typ, mimo że również oparty na pewnym typie macierzystym.
Przykład w Adzie: subtype miesiąc is INTEGER range 1..12;
Na tak zdefiniowanym podtypie można wykonywać wszystkie te same operacje, które są dopuszczalne dla typu INTEGER, a ograniczony jest jedynie zakres wartości.
Istnieją języki, w których występują konstrukcje analogiczne do podtypu, mimo że język nie definiuje wprost takiego pojęcia. Przykładem jest język PascalMichał Iglewski, Jan Madey, Stanisław Matwin, Pascal. Język wzorcowy – Pascal 360., Wydawnictwa Naukowo-Techniczne, Warszawa 1984, wydanie trzecie – zmienione, Seria: Biblioteka Inżynierii Oprogramowania, Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika Mikrokomputerów , ISSN 0867-6011, w którym występuje typ okrojony. Jego cechy są jednak takie, iż jest to podtyp pewnego typu bazowego. Typ bazowy w Pascalu musi być typem porządkowym.
type miesiąc=1..12;
Nie definiuje się tu wprost typu bazowego, wynika on z typu literałów użytych do ograniczenia zakresu wartości. Na wartościach takiego typu tak jak w podtypie dopuszczalne są wszystkie operacje typu bazowego. Nowy typ (podtyp) jest zgodny w sensie przypisania z typem bazowym.
W języku Modula 2 typ bazowy, w definicji podtypu, może być wyspecyfikowany jawnie lub pominiętyNiklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, : TYPE miesiąc=1..12 TYPE miesiąc:INTEGER=1..12
Zobacz też
Typ danych Typ okrojony Ada Pascal Modula 2
Przypisy
Kategoria:Typy danych Kategoria:Konstrukcje programistyczne