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