Pok-12-wyk-Slajd33

Z Studia Informatyczne
Wersja z dnia 19:14, 30 sie 2006 autorstwa Complak (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Rodzaje równoważności typów

Rodzaje równoważności typów


W językach programowania używa się dwóch rodzajów równoważności typów:

  • strukturalnej – wyrażenia mają równoważne typy wtedy, gdy są albo tego samego typu podstawowego, albo zostały utworzone przez zastosowanie tego samego konstruktora do typów strukturalnie równoważnych (warto podkreślić rekurencyjność drugiej części definicji – będzie ona miała bezpośrednie przełożenie na implementację kontrolera)
  • nazwowej – każda nazwa typu jest postrzegana jako oddzielny typ, dwa wyrażenia mają równoważne typy tylko wtedy, jeśli jest to ten sam typ.

Różnice pomiędzy obydwoma podejściami można zademonstrować na prostym przykładzie. Jeżeli zdefiniujemy na podstawie typu real dwa nowe typy: area i volume , a następnie zadeklarujemy dwie zmienne, zmienną a typu area i zmienną v typu volume , to w zależności od wykorzystywanego typu równoważności kopiowanie wartości jednej zmiennej do drugiej będzie dopuszczalne albo nie.

W przypadku równoważności nazwowej takie przypisanie jest niedopuszczalne, sprawdzamy tylko nazwy typów zmiennych i ponieważ są one różne jest to błąd typu. Jest to rozwiązanie sprzyjające podwyższeniu niezawodności oprogramowania – nie po to programista definiował dwa typy (w tym przypadku opisujące obszar i poziom), aby kopiować poziom do obszaru.

W przypadku równoważności strukturalnej typy operandów są rekurencyjnie badane aż do osiągnięcia poziomu typów podstawowych – jeżeli są one zgodne (tak jak w tym przypadku – po obu stronach jest typ real ) przypisanie jest poprawne.


<< Poprzedni slajd | Spis treści | Następny slajd >>