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,58 +1,25 @@ 1 - ### Use Cases1 +asd 2 2 3 -This example is intended to demonstrate the extensibility differences between data structures and objects by extending them with 3 +``` 4 +type Square struct { 5 + length float 6 +} 4 4 5 -1. an Area() function (extending behavior) 6 -1. a rectangle type (extending data type) 8 +type Circle struct { 9 + length float 10 +} 7 7 8 -### Data Structure Style 12 +func Area(g GeometricObject) float { 13 + switch (g.type()): 14 + case Circle: 15 + return 16 + case Square: 17 + return ... 18 +} 9 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 - } 20 +func Circumference(g GeometricObject) float { 21 + ... 22 +} 23 +``` 25 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 - } 25 +asd