Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
60
Task/Inheritance-Single/00-TASK.txt
Normal file
60
Task/Inheritance-Single/00-TASK.txt
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
::: ''This task is about derived types; for implementation inheritance, see [[Polymorphism]].
|
||||
|
||||
|
||||
Inheritance is an operation of [[type algebra]] that creates a new type from one or several parent types.
|
||||
|
||||
The obtained type is called '''derived type'''.
|
||||
|
||||
It inherits some of the properties of its parent types.
|
||||
|
||||
Usually inherited properties are:
|
||||
:::* methods
|
||||
:::* components
|
||||
:::* parts of the representation
|
||||
|
||||
|
||||
The [[classes | class]] of the new type is a '''subclass''' of the classes rooted in the parent types.
|
||||
|
||||
When all (in certain sense) properties of the parents are preserved by the derived type, it is said to be a [[wp:Liskov_substitution_principle|Liskov subtype]].
|
||||
|
||||
When properties are preserved then the derived type is ''substitutable'' for its parents in all contexts. Usually full substitutability is achievable only in some contexts.
|
||||
|
||||
|
||||
Inheritance is
|
||||
:::* '''single''', when only one parent is allowed
|
||||
:::* '''[[multiple inheritance | multiple]]''', otherwise
|
||||
|
||||
|
||||
Some single inheritance languages usually allow multiple inheritance for certain [[abstract type]]s, interfaces in particular.
|
||||
|
||||
Inheritance can be considered as a relation parent-child.
|
||||
|
||||
Parent types are sometimes called '''supertype''', the derived ones are '''subtype'''. This relation is [[wp:Transitive_relation|transitive]] and [[wp:Reflexive_relation|reflexive]].
|
||||
|
||||
Types bound by the relation form a [[wp:Directed_acyclic_graph directed acyclic graph]] (ignoring reflexivity).
|
||||
|
||||
With single inheritance it becomes a [[wp:Tree_(graph_theory)|tree]].
|
||||
|
||||
|
||||
;Task:
|
||||
Show a tree of types which inherit from each other.
|
||||
::: At the top of the tree should be a class called '''Animal'''.
|
||||
::: The second level should have '''Dog''' and '''Cat'''.
|
||||
::: Under '''Dog''' should be '''Lab''' and '''Collie'''.
|
||||
::: None of the classes need to have any functions, the only thing they need to do is inherit from the specified superclasses <br> (overriding functions should be shown in [[Polymorphism]]).
|
||||
|
||||
|
||||
The tree should look like this:
|
||||
<pre>
|
||||
Animal
|
||||
/\
|
||||
/ \
|
||||
/ \
|
||||
Dog Cat
|
||||
/\
|
||||
/ \
|
||||
/ \
|
||||
Lab Collie
|
||||
</pre>
|
||||
<br><br>
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue