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,59 +1,1 @@ 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 - 8 -### Data Structure Style 9 - 10 - struct Square { 11 - length float 12 - } 13 - 14 - struct Circle { 15 - radius float 16 - } 17 - 18 - function Circumference(g Object) float { 19 - switch type(g): 20 - case Square: 21 - return 4 * g.length 22 - case Circle: 23 - return 2 * PI * g.radius 24 - } 25 - 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. 28 - 29 -#### 30 - 31 -#### Object-Oriented Style 32 - 33 - interface GeometricObject { 34 - Circumference() float 35 - } 36 - 37 - class Square implements GeometricObject { 38 - length float 39 - 40 - constructor(length float) { 41 - this.length = length 42 - } 43 - 44 - func Circumference() float { 45 - return 4 * this.length 46 - } 47 - } 48 - 49 - class Circle implements GeometricObject { 50 - radius float 51 - 52 - constructor(radius float) { 53 - this.radius = radius 54 - } 55 - 56 - func Circumference() float { 57 - return 2 * PI * this.radius 58 - } 59 - } 1 +```