Version 3.3 by chrisby on 2024/03/03 14:57

Hide last authors
chrisby 2.4 1 ### Data Structure Style
chrisby 2.1 2
chrisby 2.4 3 type Square struct {
4 length float
5 }
6
7 type Circle struct {
chrisby 3.2 8 radius float
chrisby 2.4 9 }
10
chrisby 3.3 11 func Circumference(g Object) float {
chrisby 3.2 12 switch type(g):
13 case Square:
14 return 4 * g.length
15 case Circle:
16 return 2 * PI * g.radius
chrisby 2.4 17 }
chrisby 2.1 18
chrisby 3.3 19 *
20
chrisby 2.3 21 #### Object-Oriented Style
chrisby 2.2 22
chrisby 3.3 23 interface GeometricObject {
24 Circumference() float
25 }
26
27 class Square implements GeometricObject {
chrisby 2.3 28 length float
29
30 constructor(length float) {
31 this.length = length
32 }
33
34 func Circumference() float {
35 return 4 * this.length
36 }
37 }
38
chrisby 3.3 39 class Circle implements GeometricObject {
chrisby 2.3 40 radius float
41
42 constructor(radius float) {
43 this.radius = radius
44 }
45
46 func Circumference() float {
47 return 2 * PI * this.radius
48 }
49 }