Changes for page Code Example: Data Structure Style vs. Object Style
Last modified by chrisby on 2024/03/03 17:01
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,14 +1,21 @@ 1 +### Use Cases 2 + 3 +This example is intended to demonstrate the extensibility differences between data structures and objects by extending them with 4 + 5 +1. an Area() function (extending behavior) 6 +1. a rectangle type (extending data type) 7 + 1 1 ### Data Structure Style 2 2 3 - t ypeSquarestruct{10 + struct Square { 4 4 length float 5 5 } 6 6 7 - t ypeCirclestruct{14 + struct Circle { 8 8 radius float 9 9 } 10 10 11 - func Circumference(g Object) float { 18 + function Circumference(g Object) float { 12 12 switch type(g): 13 13 case Square: 14 14 return 4 * g.length ... ... @@ -16,8 +16,11 @@ 16 16 return 2 * PI * g.radius 17 17 } 18 18 19 -* 26 +1. Adding a function Area() with the same anatomy as Circumference() is easy, since it only requires adding new code. 27 +1. Adding a new datatype, Rectangle, is more difficult because it requires touching existing code, namely any functions like Circumference() or Area() that need to be enabled handle this datatype. 20 20 29 +#### 30 + 21 21 #### Object-Oriented Style 22 22 23 23 interface GeometricObject {