Software Concepts
A sum up of software concepts might be interesting for trying to transfer them to other areas of knowledge.

| Level | Type | Comparision & analogy | independent ? |
connected ? |
action | permanent ? |
owner ? |
UML | my simple graph |
|---|---|---|---|---|---|---|---|---|---|
| concept or instance | Dependency | Temporary utility interaction | yes | no | uses-a | no | no | ||
| instance | Association | Dependency that keeps track of the object; A worker may change company |
yes | yes | knows-a uses and keeps a pointer |
yes | no | ![]() |
|
| instance | Aggregation | Association with ownership of the object; Suns can't have several parents but live independent life |
yes | yes | has-a uses and vinculates with pointer |
yes | yes, but can share | ||
| instance | Composition | Aggregation that selfcontains the object; If father dies, children also die |
no | yes | owns-a uses and embeddes in memory |
yes | yes | ||
| concept | Inheritance | I inherite many traits from my father but have extra of my own | - (no @ conceptual level; yes @ instance level) |
- (yes @ conceptual level; no @ instance level) |
(transitive generalization) is-a | yes | no | ||
| concept | Instantiation | I want a Border Collie named Bobi; I classify Border Collie as a dog bread (I want a bread named BC) |
- | - | (non-transitive classification) is-a | yes | no | ||
| concept | Instantiation - class | Class factory | - | - | creates-a | yes | no | ||
| concept | Realization | Interface Implementation | - | - | (transitive generalization?) is-a |
yes | no |
Is-a can mean 2 logically different things:
[C] - Classification
[G] - Generalization
Right:
If: Bobi is a Border Collie (BC) [C]
And: Every BC is a dog [G]
Then: Bobi is a dog [C]
Wrong:
If: Bobi is a Border Collie (BC) [C]
And: BC is a Bread [C]
Then: Bobi is a Bread [C]






Comentários
Enviar um comentário