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

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

Summary

Details

Page properties
Content
... ... @@ -1,58 +1,25 @@
1 -### Use Cases
1 +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