| Unit of Computation | Form of Communication | Supporting(Related) Abstractions |
| calulation | expression (source, destination) | Java primitives naming abstraction(through variables) |
| procedure | above + parameters and return values (caller,callee) | above + precedural abstraction [recursion,iteration] |
| object | above + constructor parameters method calls (fixed behavior) |
above + class, interface, abstraction barrier |
| collection of objects | above + method calls (behavior based on object type) | above + class hierarchies, inheritance, polymorphism |
| Unit of Computation | Form of Communication | Supporting(Related) Abstractions |
| Collections of loosely-related types of objects | Application Programmer Interface (API) [protections become increasingly important] |
|
| Collections of objects that must cope with errors | "Interruption" in the middle of a computation (occurs also in human communication...) |
|
| Applications that save and load persistent data on the local computer | Disk I/O |
|
| Applications that communicate with human users |
|
Event sources and listeners |
| Applications containing multiple concurrent computations tha communicate with each other. |
|
|
| Applications that save and load persistent data accross the network | Network I/O (asynchronous) |
|
| Applications that communicate with each other across the network | Network I/O (synchronous) client/server paradigm group collaboration paradigm |
|