Summarizing protocol-oriented programming and object-oriented programming
In this chapter and Chapter 5, Object-Oriented Programming we saw how Swift can be used as both an object-oriented programming language and a protocol-oriented programming language. In these chapters, we saw there were two major differences between the two designs.
The first major difference that we saw is that with a protocol-oriented design we should start with the protocol rather than a superclass. We can then use protocol extensions to add functionality to the types that conform to that protocol or types that conform to protocols that inherit from that protocol. With object-oriented programming, we started with a superclass. When we designed our vehicle types in a protocol-oriented way we converted the Vehicle
superclass, from the object-oriented design, to a Vehicle
protocol, and then used a protocol extension to add the common functionality needed.
In the protocol-oriented example, we used protocol inheritance...