Polimorfizam (programiranje)
Izgled
(Preusmjereno sa Polimorfizam (računarstvo))
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]- ^
Bjarne Stroustrup (19. 2. 2007). "Bjarne Stroustrup's C++ Glossary".
polymorphism – providing a single interface to entities of different types.
- ^ 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."
- ^ Booch, et al 2007 Object-Oriented Analysis and Design with Applications. Addison-Wesley.
- ^ 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.