Version 3.2 by chrisby on 2024/03/03 14:50

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