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