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