Last modified by chrisby on 2024/03/03 17:01

From version 2.2
edited by chrisby
on 2024/03/03 14:42
Change comment: There is no comment for this version
To version 3.4
edited by chrisby
on 2024/03/03 15:06
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,61 +1,58 @@
1 -asd
1 +### Use Cases
2 2  
3 -```
4 -type Square struct {
5 - length float
6 -}
3 +This example is intended to demonstrate the extensibility differences between data structures and objects by extending them with
7 7  
8 -type Circle struct {
9 - length float
10 -}
5 +1. an Area() function (extending behavior)
6 +1. a rectangle type (extending data type)
11 11  
12 -func Area(g GeometricObject) float {
13 - switch (g.type()):
14 - case Circle:
15 - return
16 - case Square:
17 - return ...
18 -}
8 +### Data Structure Style
19 19  
20 -func Circumference(g GeometricObject) float {
21 - ...
22 -}
23 -```
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 + }
24 24  
25 -asd
26 +1.
26 26  
27 -```
28 -# Object-Oriented Style
28 +####
29 29  
30 -class Square {
31 - length float
30 +#### Object-Oriented Style
32 32  
33 - constructor(length float) {
34 - this.length = length
35 - }
36 -
37 - func Area() float {
38 - return this.length * this.length # Formula for square area: side^2
39 - }
40 -
41 - func Circumference() float {
42 - return 4 * this.length # Formula for square circumference: 4 * side
43 - }
44 -}
45 -
46 -class Circle {
47 - radius float
48 -
49 - constructor(radius float) {
50 - this.radius = radius
51 - }
52 -
53 - func Area() float {
54 - return 3.14159 * this.radius * this.radius # Formula for circle area: πr^2
55 - }
56 -
57 - func Circumference() float {
58 - return 2 * 3.14159 * this.radius # Formula for circle circumference: 2πr
59 - }
60 -}
61 -```
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 + }