Lesson 9.5: Composition over inheritance
In the previous lesson, we introduced type hierarchies into the data model for our book data. In this lesson, we’ll examine a case where composition is a better approach than inheritance.
Data table
ISBN-13 | ISBN-10 | Title | Format | Authors | Editors | Illustrators | Other contributors | Publisher | Year | City | State | Country | Page count | Genres | Price | Stock |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9780008627843 |
0008627843 |
The Hobbit |
ebook |
J.R.R. Tolkien |
J.R.R. Tolkien |
Harper Collins |
2023 |
New York City |
New York |
United States |
310 |
fantasy;fiction |
16.99 |
|||
9780060929794 |
0060929790 |
One Hundred Years of Solitude |
paperback |
Garcia Marquez, Gabriel |
Perennial |
1998 |
New York City |
New York |
United States |
458 |
fiction;historical fiction |
6.12 |
4 |
|||
9780195153446 |
0195153448 |
Classical Mythology |
paperback |
Lenardon, Robert J.;Morford, Mark P. O. |
Oxford University Press |
2002 |
New York City |
New York |
United States |
820 |
history;nonfiction |
34.98 |
12 |
|||
9780375801679 |
0375801677 |
The Iron Giant |
ebook |
Hughes, Ted |
Davidson, Andrew |
Knopf Books for Young Readers |
1999 |
New York City |
New York |
United States |
79 |
fiction;children’s fiction |
33.97 |
|||
9780387881355 |
0387881352 |
Electron Backscatter Diffraction in Materials Science |
hardback |
Schwartz, Adam J.;Kumar, Mukul;Adams, Brent L.;Field, David P. |
Springer |
2009 |
New York City |
New York |
United States |
425 |
nonfiction;technology |
230.37 |
9 |
|||
9780393045215 |
0393045218 |
The Mummies of Urumchi |
paperback |
Barber, Elizabeth Wayland |
W.W. Norton & Company |
1999 |
New York City |
New York |
United States |
240 |
history;nonfiction |
21.6 |
1 |
|||
9780393634563 |
0393634566 |
The Odyssey |
ebook |
Homer |
Wilson, Emily |
W.W. Norton & Company |
2017 |
New York City |
New York |
United States |
656 |
fiction;classics |
13.99 |
|||
9780446310789 |
0446310786 |
To Kill a Mockingbird |
paperback |
Harper Lee |
Grand Central Publishing |
1988 |
New York City |
New York |
United States |
281 |
fiction;historical fiction |
21.64 |
16 |
|||
9780451162076 |
0451162072 |
Pet Sematary |
paperback |
King, Stephen |
Signet |
1984 |
New York City |
New York |
United States |
374 |
horror;fiction |
93.22 |
1 |
|||
9780500026557 |
0500026556 |
Hokusai’s Fuji |
paperback |
Wada, Kyoko |
Katsushika, Hokusai |
Thames & Hudson |
2024 |
London |
United Kingdom |
416 |
art;nonfiction |
24.47 |
11 |
|||
9780500291221 |
0500291225 |
Great Discoveries in Medicine |
paperback |
Bynum, William;Bynum, Helen |
Thames & Hudson |
2023 |
London |
United Kingdom |
352 |
history;nonfiction |
12.05 |
18 |
||||
9780553212150 |
055321215X |
Pride and Prejudice |
paperback |
Austen, Jane |
Bantam Classics |
1983 |
New York City |
New York |
United States |
295 |
fiction;historical fiction |
17.99 |
15 |
|||
9780575104419 |
0575104414 |
Dune |
ebook |
Herbert, Frank |
Hachette Book Group |
2010 |
New York City |
New York |
United States |
624 |
fiction;science fiction |
5.49 |
||||
9780671461492 |
0671461494 |
The Hitchhiker’s Guide to the Galaxy |
paperback |
Adams, Douglas |
1982 |
New York City |
New York |
United States |
215 |
fiction;science fiction |
91.47 |
9 |
||||
9780679425601 |
0679425608 |
Under the Black Flag: The Romance and the Reality of Life Among the Pirates |
hardback |
Cordingly, David |
Random House |
1996 |
New York City |
New York |
United States |
296 |
history;nonfiction |
34.73 |
13 |
|||
9780740748479 |
0740748475 |
The Complete Calvin and Hobbes |
hardback |
Watterson, Bill |
Watterson, Bill |
Andrews McMeel Publishing |
2005 |
Kansas City |
Missouri |
United States |
1451 |
comics;fiction |
128.71 |
6 |
||
9781098108274 |
1098108272 |
Fundamentals of Data Engineering |
ebook |
Reis, Joe;Housley, Matt |
O’Reilly Media |
2022 |
Sevastopol |
California |
United States |
450 |
nonfiction;technology;children’s fiction |
47.99 |
||||
9781489962287 |
148996228X |
Interpretation of Electron Diffraction Patterns |
paperback |
Keown, Samuel Robert;Andrews, Kenneth William;Dyson, David John |
Springer |
1967 |
New York City |
New York |
United States |
199 |
nonfiction;technology |
47.17 |
15 |
|||
9781859840665 |
1859840663 |
The Motorcycle Diaries: A Journey Around South America |
paperback |
Guevara, Ernesto |
Wright, Ann |
Verso |
1996 |
London |
United Kingdom |
160 |
biography;nonfiction |
14.52 |
4 |
|||
9783319398778 |
Physical Principles of Electron Microscopy: An Introduction to TEM, SEM, and AEM |
ebook |
Egerton, R.F. |
Springer |
2016 |
London |
United Kingdom |
196 |
nonfiction;technology |
19.5 |
||||||
9798691153570 |
Business Secrets of The Pharoahs |
paperback |
Crorigan, Mark |
British London Publishing |
2020 |
London |
United Kingdom |
260 |
business;nonfiction |
11.99 |
8 |
Lesson 9.4 schema
define
book sub entity,
abstract,
owns isbn-13,
owns isbn-10,
owns title,
owns page-count,
owns genre,
owns price,
plays contribution:work,
plays publishing:published;
paperback sub book,
owns stock;
hardback sub book,
owns stock;
ebook sub book;
contributor sub entity,
owns name,
plays contribution:contributor;
author sub contributor;
editor sub contributor;
illustrator sub contributor;
publisher sub entity,
owns name,
plays publishing:publisher;
place sub entity,
abstract,
owns name,
plays locating:location,
plays locating:located;
city sub place,
plays publishing:location;
state sub place;
country sub place;
contribution sub relation,
relates contributor,
relates work;
publishing sub relation,
relates publisher,
relates published,
relates location,
owns year;
locating sub relation,
relates located,
relates location;
isbn-13 sub attribute, value string;
isbn-10 sub attribute, value string;
title sub attribute, value string;
page-count sub attribute, value long;
genre sub attribute, value string;
price sub attribute, value double;
stock sub attribute, value long;
name sub attribute, value string;
year sub attribute, value long;
Currently, the entity type contributor
has three specialized subtypes: author
, editor
, and illustrator
. But what happens if a single person carries out more than one of these functions, either for the same book or different books? For example, in the dataset, the edition of The Hobbit is both written and illustrated by J.R.R. Tolkien. We could create separate instances of author
and illustrator
, but then these two objects would have different identities, despite representing the same concept.
The problem here lies in that the subtypes of contributor are not mutually exclusive. As a data instance can only have a single type, using an inheritance hierarchy to model the types of contributor was a poor choice. In fact, if we consider the different ways the people can contribute to books, these are better described as behaviours of those people rather than inherent properties of them. As such, they are best implemented with interfaces. More specifically, these behaviours are roles that contributors fulfil, so we will use roles in relations to model them.
To implement this change, we will create three subtypes of contribution
: authoring
, editing
, and illustrating
, and then remove the subtypes of contributor
: author
, editor
, and illustrator
.
define
contributor sub entity,
plays contribution:contributor;
contribution sub relation,
relates contributor,
relates work;
authoring sub contribution;
editing sub contribution;
illustrating sub contribution;
As we saw in Lesson 5.2, the role interface contribution:contributor
is inherited by the subtypes of contribution
, so they expose it as well. Because contributor
implements this interface, this allows instances of contributor
to play the role in instances of all three subtypes (or the supertype).
match
$hobbit isa book, has isbn-13 "9780008627843";
$tolkien isa contributor, has name "J.R.R. Tolkien";
insert
($hobbit, $tolkien) isa authoring;
($hobbit, $tolkien) isa illustrating;
Now we can easily record contributors in different roles.
A data instance can only have a single type. If a concept displays multiple simultaneous capabilities, for example a person being an author and an editor, then this indicates that the concept should be modeled as a single type implementing multiple interfaces, rather than as multiple types. This is in line with the OOP principle of composition over inheritance. |