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

From version 3.6
edited by chrisby
on 2024/03/03 15:17
Change comment: There is no comment for this version
To version 3.3
edited by chrisby
on 2024/03/03 14:57
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,21 +8,14 @@
1 -### Use Cases
2 -
3 -This example is intended to demonstrate the extensibility differences between data structures and objects by extending them with
4 -
5 -1. an Area() function (extending behavior)
6 -1. a rectangle type (extending data type)
7 -
8 8  ### Data Structure Style
9 9  
10 - struct Square {
3 + type Square struct {
11 11   length float
12 12   }
13 13  
14 - struct Circle {
7 + type Circle struct {
15 15   radius float
16 16   }
17 17  
18 - function Circumference(g Object) float {
11 + func Circumference(g Object) float {
19 19   switch type(g):
20 20   case Square:
21 21   return 4 * g.length
... ... @@ -23,11 +23,8 @@
23 23   return 2 * PI * g.radius
24 24   }
25 25  
26 -1. Adding a function Area() with the same anatomy as Circumference() is easy, since it only requires adding new code.
27 -1. Adding a new datatype, Rectangle, is more difficult because it requires touching existing code, namely any functions like Circumference() or Area() that need to be enabled handle this datatype.
19 +*
28 28  
29 -####
30 -
31 31  #### Object-Oriented Style
32 32  
33 33   interface GeometricObject {