• Znaczenie pojęcia:

    kowariancja

    Pozostałe definicje na literę K.

    ang. covariancy

    Problem dotyczy zgodności typów w przypadku polimorfizmu inkluzyjnego. Załóżmy, że metoda m(A:T), parametryzowana parametrem A typu T, jest zdefiniowana w klasie K. Załóżmy, że klasa K posiada specjalizację (podklasę) K', w której jest zdefiniowana metoda m(B:T'), parametryzowana parametrem B typu T'; ta nowa metoda przesłania poprzednią. Zakłada się zasadę zamienialności (substitutability) i mocną statyczną kontrolę typów. Powstaje pytanie, jaki ma być stosunek pomiędzy typami T i T'? Istnieją trzy możliwości:inwariancja (C++) oznaczająca, że T musi być identyczny z T';kowariancja (Eiffel) oznaczająca, że T' musi być podtypem T (w szczególności T=T');kontrawariancja (Sather) oznaczająca, że T' musi być nadtypem T (w szczególności T=T').Kontrawariancję zaproponował L. Cardelli na podstawie spekulacji teoretycznych dotyczących mocnej kontroli typów i polimorfizmu. Zwolennicy kowariancji uważają, że kontrawariancja jest nienaturalna dla programistów, wobec czego prowadzi do błędów i nieporozumień. Zwolennicy kontrawariancji argumentują, że kowariancja oznacza zmniejszenie skuteczności mocnej statycznej kontroli typów. Wobec różnych kryteriów oceny, często wznawiane dyskusje nie prowadzą do jednoznacznych konkluzji

    kowariancja,
    covariancy