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

Mensagens populares