Polimorfizam (programiranje)

S Wikipedije, slobodne enciklopedije
Idi na navigaciju Idi na pretragu

U programskim jezicima i teoriji tipova, polimorfizam je snabdijevanje jednog interfejsa entitetima različitih tipova[1] ili korištenje jednog simbola za predstavljanje više različitih tipova.[2]

Najčešće prepoznate veće klase polimorfizma su:

  • Ad hoc polimorfizam: definira zajednički interfejs za proizvoljan skup individualno određenih tipova.
  • Parametarski polimorfizam: kada jedan ili više tipova nisu određeni imenom ili po apstraktnim simbolima mogu predstavljati bilo koji tip.
  • Subtyping (također se naziva podtipni polimorfizam ili inkluzijski polimorfizam): kada ime određuje instance više različitih klasa vezanih zajedničkom superklasom.[3]

Historija[uredi | uredi izvor]

Interes za polimorfnim tipskim sistemima značajno se razvio 1960-ih, sa praktičnim primjenama koje su se počele javljati krajem decenije. Ad hoc polimorfizam i parametarski polimorfizam originalno su opisani u djelu Christophera Stracheya pod nazivom Fundamental Concepts in Programming Languages,[4] gdje su prikazani kao "dvije glavne klase" polimorfizma. Ad hoc polimorfizam bio je karakteristika Algola 68, dok je parametarski polimorfizam bio sržna karakteristika ML-ovog tipskog sistema.

Reference[uredi | uredi izvor]

  1. ^ Bjarne Stroustrup (19. 2. 2007). "Bjarne Stroustrup's C++ Glossary". polymorphism – providing a single interface to entities of different types.
  2. ^ Cardelli, Luca; Wegner, Peter (decembar 1985). "On understanding types, data abstraction, and polymorphism" (PDF). ACM Computing Surveys. 17 (4): 471–523. CiteSeerX 10.1.1.117.695. doi:10.1145/6041.6042. ISSN 0360-0300.: "Polymorphic types are types whose operations are applicable to values of more than one type."
  3. ^ Booch, et al 2007 Object-Oriented Analysis and Design with Applications. Addison-Wesley.
  4. ^ Strachey, Christopher (2000). "Fundamental Concepts in Programming Languages". Higher-Order and Symbolic Computation. 13 (1/2): 11–49. CiteSeerX 10.1.1.332.3161. doi:10.1023/A:1010000313106. ISSN 1573-0557.