Skip to main content

Interface

  • Living reference work entry
  • First Online:
  • 74 Accesses

Definition

An interface describes the functionalities exported by an entity such as a software module. These functionalities typically consist in named operations with signatures describing potential arguments and return values, but interfaces may also include the definitions of data types, constants, exceptions, or even describe semantics.

Interfaces shield the internals of corresponding software modules from the outside, providing several benefits. Interfaces provide abstraction, in the sense that the internals of modules may evolve while other modules can still rely on the same functionalities (encapsulation). Safety and security are promoted by interfaces as these define single access points to respective software modules.

In object-oriented programming, software modules often coincide with classes, which also describe data types implicitly. In the case of such a class, an interface is thus roughly made up of the methods exported by the class. Mostly, interfaces are then defined...

This is a preview of subscription content, log in via an institution.

Recommended Reading

  1. Beyer D, Henzinger TA, Singh V. Algorithms for interface synthesis. In: Proceedings of 19th international conference on computer aided verification. 2007. p. 4–19.

    Google Scholar 

  2. Canning PS, Cook WR, Hill WL, Olthoff WG. Interfaces for strongly-typed object-oriented programming. ACM SIGPLAN Not. 1989;24(10):457–67.

    Article  Google Scholar 

  3. Chakrabarti A, de Alfaro L, Henzinger TA, Stoelinga M. Resource interfaces. In: Proceedings of 3rd international conference on embedded software. 2003. p. 117–33.

    Google Scholar 

  4. de Alfaro L, Henzinger TA. Interface automata. In: Proceedings of 9th ACM SIGSOFT international symposium on foundations of software engineering. 2001. p. 109–20.

    Google Scholar 

  5. Griswold WG, Sullivan KJ, Song W, Shonle M, Tewari N, Cai Y, Rajan H. Modular software design with crosscutting interfaces. IEEE Softw. 2006;23(1):51–60.

    Article  Google Scholar 

  6. Liskov BH, Wing JM. A behavioral notion of subtyping. ACM Trans Program Lang Syst. 1994;16(6):1811–41.

    Article  Google Scholar 

  7. Meyer B. Applying design by contract. IEEE Comput. 1992;25(10):40–51.

    Article  Google Scholar 

  8. Parnas DL. On the criteria to be used in decomposing systems into modules. Commun ACM. 1972;15(12):1053–8.

    Article  Google Scholar 

  9. Strom RE, Yemini S. Typestate: a programming language concept for enhancing software reliability. IEEE Trans Softw Eng. 1986;12(1):157–71.

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Patrick Eugster .

Editor information

Editors and Affiliations

Section Editor information

Rights and permissions

Reprints and permissions

Copyright information

© 2016 Springer Science+Business Media LLC

About this entry

Cite this entry

Eugster, P. (2016). Interface. In: Liu, L., Özsu, M. (eds) Encyclopedia of Database Systems. Springer, New York, NY. https://doi.org/10.1007/978-1-4899-7993-3_1176-2

Download citation

  • DOI: https://doi.org/10.1007/978-1-4899-7993-3_1176-2

  • Received:

  • Accepted:

  • Published:

  • Publisher Name: Springer, New York, NY

  • Online ISBN: 978-1-4899-7993-3

  • eBook Packages: Springer Reference Computer SciencesReference Module Computer Science and Engineering

Publish with us

Policies and ethics