Skip to main content

Interface

  • Reference work entry
  • First Online:
  • 34 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.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   4,499.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD   6,499.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Recommended Reading

  1. Beyer D, Henzinger TA, Singh V. Algorithms for interface synthesis. In: Proceedings of the 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 the 3rd International Conference on Embedded Software; 2003. p. 117–33.

    Chapter  Google Scholar 

  4. de Alfaro L, Henzinger TA. Interface automata. In: Proceedings of the 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

© 2018 Springer Science+Business Media, LLC, part of Springer Nature

About this entry

Check for updates. Verify currency and authenticity via CrossMark

Cite this entry

Eugster, P. (2018). Interface. In: Liu, L., Özsu, M.T. (eds) Encyclopedia of Database Systems. Springer, New York, NY. https://doi.org/10.1007/978-1-4614-8265-9_1176

Download citation

Publish with us

Policies and ethics