Object-based Programming with Go / Основанное на объекте программирование с Go
Год издания: 2025
Автор: Maurer Christian / Маурер Кристиан
Издательство: Springer
ISBN: 978-3-658-44704-5
Язык: Английский
Формат: PDF/EPUB
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 321
Описание: This textbook explains the concept of "object-based programming" as an essential part of "object orientation" and elucidates why the programming language Go, developed at Google, optimally supports this concept. Using significant parts of the micro-universe, a large collection of software components (with source code totaling nearly 64,000 lines), many important data types and their algorithms are described. In the practical section, various programs constructed according to this concept are presented.
- Introduces programming with Go in a compact and object-based manner
- Includes many practical examples
- All source code is available for download
Этот учебник объясняет концепцию "основанную на объекте программирования" как неотъемлемую часть "объектной ориентации" и объясняет, почему язык программирования Go, разработанный в Google, оптимально поддерживает эту концепцию. В нем используются значительные части микро-вселенной, большая коллекция программных компонентов (с исходным кодом общим объемом около 64 000 строк), описаны многие важные типы данных и их алгоритмы. В практическом разделе представлены различные программы, созданные в соответствии с этой концепцией.
- Знакомит с программированием на Go компактным и основанном на объекте способом
- Содержит множество практических примеров
- Весь исходный код доступен для скачивания
Примеры страниц (скриншоты)
Оглавление
Part I The Realisation of Object-based Programming with Go
1 Basics of Object-Oriented Development. . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 The Program Life Cycle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.3 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.4 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Advantages of an Object-Based System Architecture. . . . . . . . . . . . . 13
1.2.1 On Specification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.2 On Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.3 On Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 Aspects of Go. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1 About the Installation of Go . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Packages in Go. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.1 Program Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.2 Packages as Interfaces Only. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.3 Nesting of Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.4 Initialization of Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.5 Variables of Concrete Data Types. . . . . . . . . . . . . . . . . . . . . . . 23
2.2.6 References and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 Variables of Abstract Data Types = Objects. . . . . . . . . . . . . . . . . . . . 26
2.4 Value Versus Reference Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.1 Assignments, Creation of Copies. . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.2 Equality Check and Size Comparison. . . . . . . . . . . . . . . . . . . . 29
2.4.3 Serialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3 The Microuniverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1 Installation of the Microuniverse. . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.1 Prerequisites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.2 License Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.3 Naming in the Microuniverse . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2 The Constructor New. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3 The Object Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.1 Equaler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.2 Comparer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.3 Clearer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.4 Coder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.5 The Interface of the Package Obj. . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.6 Stringer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.7 Formatter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.8 Valuator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4 Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.1 Packages for the Screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.2 Screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.3 Keyboard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.4.4 Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.5 Input/Output Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.4.6 Error Messages and Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.4.7 Printer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.4.8 Selections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.4.9 Menues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.5 Collections of Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.5.1 Collector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.5.2 Seeker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.5.3 Predicator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.5.4 Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.5.5 Stacks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5.6 Buffers (Queues). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5.7 Priority Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.5.8 Sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.5.9 Persistent Sequences (Sequential Files). . . . . . . . . . . . . . . . . . . 97
3.5.10 Persistent Index Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.5.11 Graphs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.6 Additional Data Types from the Microuniverse. . . . . . . . . . . . . . . . . . . . 115
Part II The Projects
4 General. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.1 Teaching Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.1.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.1.2 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.1.3 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5 Robi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.2 The Robi Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.3 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.4 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.4.1 The Robi Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.4.2 The Robi Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4.3 Robi-Sokoban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4.4 Robot Race. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4.5 General Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.5 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.6.1 Sample Solutions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6 The Appointment Calendar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.1.1 Calendar Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.1.2 Day Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.1.3 Sequences of Appointments and Appointments. . . . . . . . . . . . . 140
6.1.4 Annual Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.1.5 Monthly and Weekly Calendars. . . . . . . . . . . . . . . . . . . . . . . . . 142
6.1.6 Appointment Calendar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.1.7 Search for Appointments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.2 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.2.1 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.2.2 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.3 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.3.1 Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
6.4 Calendar Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.5 Weekly Calendar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.5.1 Monthly Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.6 Annual Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.6.1 Search and Search Results. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.6.2 System Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
6.7 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.7.1 Term Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.7.2 Keywords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.7.3 Appointments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.7.4 Appointment Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.7.5 Persistent Sets of Calendar Data. . . . . . . . . . . . . . . . . . . . . . . . 153
6.7.6 Day Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.8 Calendar Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.8.1 Appointment Calendars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7 Life. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.1.1 The Game of Life. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
7.1.2 The Ecosystem of Foxes, Rabbits, and Plants. . . . . . . . . . . . . . 158
7.1.3 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.1.4 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.2 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.2.1 Program Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.3 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.3.1 Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.3.2 Implementations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
8 The Go Register Machine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
8.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
8.1.1 Components of a Register Machine. . . . . . . . . . . . . . . . . . . . . . 166
8.1.2 Basics of the Register Machine Programming Language. . . . . 167
8.1.3 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
8.1.4 Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
8.1.5 Register Machine Programs. . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
8.1.6 Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
8.1.7 Test Programs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
8.1.8 Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
8.2 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
8.2.1 Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
8.2.2 Recursion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
8.3 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
8.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
9 The Electronic Stylus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
9.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
9.1.1 The Figures of the Electronic Stylus. . . . . . . . . . . . . . . . . . . . . 191
9.1.2 The Operations on the eBoards. . . . . . . . . . . . . . . . . . . . . . . . . 193
9.1.3 Program Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
9.1.4 Program Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
9.1.5 Creation of New Figures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
9.1.6 Modification of Figures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
9.1.7 Deleting of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
9.1.8 Marking Figures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
9.1.9 Loading and Saving. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.1.10 Printing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.1.11 Brief Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.1.12 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.2 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
10 Mini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
10.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
10.1.1 Processor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
10.1.2 Data Storage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
10.1.3 Program Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
10.1.4 Execution of a Mini Program. . . . . . . . . . . . . . . . . . . . . . . . . . . 203
10.1.5 Instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
10.1.6 Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
10.1.7 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.1.8 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.2 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.2.1 Instructions for Working with Mini. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.3 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.4 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
11 Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
11.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
11.2 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
11.3 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
11.4 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
11.5 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
11.6 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
11.6.1 Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
11.6.2 Natural Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
11.6.3 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
11.6.4 Book. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11.6.5 Books. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
11.6.6 The Program for Managing the Book Inventory. . . . . . . . . . . . 219
12 Inferno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
12.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
12.1.1 Masks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
12.1.2 Molecules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
12.1.3 Structure of the Molecules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
12.1.4 Atoms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
12.2 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
12.2.1 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
12.2.2 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
12.2.3 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
12.3 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
12.3.1 Construction of an Inferno Program . . . . . . . . . . . . . . . . . . . . . 225
12.3.2 System Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
12.3.3 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
12.3.4 Molecules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
12.3.5 Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
12.3.6 Atoms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
13 Lindenmayer Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
13.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
13.1.1 Alphabets, Languages, and Grammars . . . . . . . . . . . . . . . . . . . 238
13.1.2 Relationship Between Grammars and Languages. . . . . . . . . . . 238
13.2 The Grammars of Lindenmayer Systems . . . . . . . . . . . . . . . . . . . . . . . . 239
13.3 Graphical Interpretation of L-Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . 239
13.3.1 The Koch Islands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
13.3.2 The Islands and Lakes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
13.3.3 The Pavement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
13.3.4 Space-Filling Curves. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
13.3.5 Extensions of the Alphabet of L-Systems. . . . . . . . . . . . . . . . . 247
13.3.6 Three-Dimensional L-Systems . . . . . . . . . . . . . . . . . . . . . . . . . 251
13.4 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
13.4.1 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
13.4.2 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
13.5 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
13.5.1 Creation of an L-System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
13.5.2 System Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
13.6 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
13.6.1 Specification of the Library Packages. . . . . . . . . . . . . . . . . . . . 261
13.6.2 Implementation of the Packages . . . . . . . . . . . . . . . . . . . . . . . . 264
14 Rail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
14.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
14.1.1 Basic Concepts of Railway Technology . . . . . . . . . . . . . . . . . . 269
14.1.2 Sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
14.1.3 Track Diagram Display. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
14.1.4 Driving Orders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
14.1.5 Representation of Train Journeys. . . . . . . . . . . . . . . . . . . . . . . . 274
14.2 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
14.2.1 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
14.2.2 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
14.3 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
14.3.1 Screen Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
14.3.2 The Track Diagram Control Panel on the Screen . . . . . . . . . . . 277
14.3.3 The Net of the Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
14.3.4 The Network of Stations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
14.3.5 System Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
14.4 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
14.4.1 Main Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
14.4.2 Network. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
14.4.3 Stations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
14.4.4 Routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
14.4.5 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
14.4.6 Cells. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
14.4.7 Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
14.4.8 Aid Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
14.4.9 Other Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
15 Figures in Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
15.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
15.1.1 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
15.1.2 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
15.2 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
15.3 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
15.4 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
15.4.1 Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
15.4.2 Implementations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
15.4.3 Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
15.4.4 Examples of Conic Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
16 Berlin’s U- and S-Bahn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
16.1 System Analysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
16.2 System Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
16.3 The Objects of the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
16.4 Component Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
16.5 User Manual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
16.6 Construction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
16.6.1 Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
16.6.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313