Technical Program
  Invited Speakers
  Technical Papers
  Practitioner Reports
Educators' Symposium
Doctoral Symposium
Student Research Comp.
Turing Lecture
Social Events
Week at a Glance
Final Program (1.5M .pdf)

Find in Program


view, help

"Effective Interface Design: Seven Recommendations for Improving the Design of Interfaces in Code"
Object-Oriented Programming, Systems, Languages and Applications
Home    Program    Housing & Transportation    Registration    Submissions    Wiki    Maps
  > Technical Program > Tutorials > All Tutorials

 : Tuesday Afternoon Tutorials (1:30 - 17:00) : Tuesday : Methodologies

Effective Interface Design: Seven Recommendations for Improving the Design of Interfaces in Code

Meeting Room 13
Tuesday, 13:30, half day


Kevlin Henney, Curbralan Limited:  Kevlin Henney is an independent consultant and trainer. The focus of his work is in programming languages, OO, CBD, UML, patterns, and software architecture. At various times he has been a regular columnist for C/C++ Users Journal (online), Application Development Advisor (UK), JavaSpektrum (Germany), Java Report, and C++ Report. He is also on the advisory board for Hillside Europe, was the program chair for EuroPLoP 2003, and is a popular speaker at conferences in the US and Europe.

Tutorial number: 46

Much is made of the pure interface mechanism found in Java, C#, IDLs, and other languages, but this enthusiasm is often not accompanied with advice on effective use. Interfaces are often sold short as a poor relative of abstract classes. How can developers design interfaces that are stable, sufficient, extensible, and sensitive to their context of use, such as callbacks or multithreading? This talk selects seven recommendations that support effective interface design, whether the interfaces in question are object oriented, procedural, purely abstract, or simply the publicly available methods on a class. The recommendations are drawn from the thirteen recommendations of the Programmer's Dozen, presented at the previous two OOPSLA conferences. C, C++, C#, Java, CORBA IDL, and UML are used to illustrate various examples, counterexamples, and principles.

Beginner: This tutorial is targeted at people who write code for a living, typically using a curly-bracket language (C++, C#, Java, etc.) and are looking for some extra advice on how to partition their code with stable and intentional interfaces.