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