没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Ada for Software Engineers
M. Ben-Ari
Weizmann Institute of Science
Originally published by John Wiley & Sons, Chichester, 1998.
Copyright
c
2005 by M. Ben-Ari.
You may download, display and print one copy for your personal use in non-commercial academic
research and teaching. Instructors in non-commerical academic institutions may make one copy
for each student in his/her class. All other rights reserved. In particular, posting this document on
web sites is prohibited without the express permission of the author.
Contents
Preface x
1 The Language for a Complex World 1
1.1 Programming or software engineering? . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Reliable software engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Language in software engineering . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Ada for software engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 The development of Ada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6 From Ada 83 to Ada 95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.7 The Ada Reference Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 A Simple Ada Program 8
2.1 Case study: country of origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Structure of a program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Predefined exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 Subtypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.7 Lexical elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 Arrays 20
3.1 Case study: fill and justify text . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Array types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Constrained array subtypes and objects* . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Type conversion* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5 Operations on one-dimensional arrays* . . . . . . . . . . . . . . . . . . . . . . 30
3.6 The context of array aggregates** . . . . . . . . . . . . . . . . . . . . . . . . . 31
v
Contents vi
3.7 Parameter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 Elementary Data Structures 34
4.1 Case study: array priority queue . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Parameter associations and overloading . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Declaring and raising exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.5 Case study: tree priority queue . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.6 Access types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5 Packages and Abstract Data Types 48
5.1 Modularization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.2 Case study: priority queue package . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3 Private types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.4 Limited types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6 Type Extension and Inheritance 66
6.1 Case study: discrete event simulation . . . . . . . . . . . . . . . . . . . . . . . . 66
6.2 Tagged types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.3 Primitive operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.4 Overriding an operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.5 Class-wide types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.6 Dynamic dispatching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.7 Encapsulation and child packages . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.8 Type conversion* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.9 Objects of class-wide type* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.10 Abstract types* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.11 Implementation of dispatching** . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.12 Multiple controlling operands** . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.13 Dispatching on the function result** . . . . . . . . . . . . . . . . . . . . . . . . 98
7 Generics 100
7.1 Generic declaration and instantiation . . . . . . . . . . . . . . . . . . . . . . . . 100
7.2 The contract model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.3 Generic formal subprograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.4 Dependence of generic formal parameters . . . . . . . . . . . . . . . . . . . . . 107
Contents vii
7.5 Generic formal tagged private types* . . . . . . . . . . . . . . . . . . . . . . . . 109
7.6 Generic formal derived types* . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.7 Generic formal objects* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.8 Indefinite and abstract parameters** . . . . . . . . . . . . . . . . . . . . . . . . 117
7.9 Formal package parameters** . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.10 Generic children* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.11 Limitations of the contract model** . . . . . . . . . . . . . . . . . . . . . . . . 123
8 Types Revisited 126
8.1 Characters and strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.2 Discriminants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
8.3 Variant records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.4 Representation items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.5 Deeper into discriminants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8.6 Untagged derived types* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
9 Access Types 145
9.1 General access types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
9.2 Access-to-subprogram types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
9.3 Case study: callback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
9.4 Accessibility rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
9.5 Access parameters* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
9.6 Storage pools* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.7 Controlled types* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.8 Access discriminants** . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
10 Numeric Types 160
10.1 Principles of numeric types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
10.2 Integer types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
10.3 Types versus subtypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
10.4 Modular types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
10.5 Real types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.6 Floating point types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.7 Fixed point types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
10.8 Advanced concepts* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
剩余355页未读,继续阅读
资源评论
daniel0690
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 第五届FPGA创新设计大赛.zip(毕设&课设&实训&大作业&竞赛&项目)
- 人工智能人工智能人工智能
- 360v6编程器固件-W29N01HZ@TSOP48-1626.BIN
- 【面试、笔试】2024精点面试
- 华硕rt-ac5300编程器固件
- 基于微信小程序+SpringBoot+Vue.JS前后端分离的学课助手系统 源码+数据库+录屏(毕业设计)
- 一键关闭Edge浏览器发现按钮及侧边栏
- device_driver_release_20240920-1.zip
- php+MySQL进行开发的仿百度文库网站源码
- 基于SpringBoot+Vue.JS前后端分离的旅游管理系统 源码+数据库+录屏(毕业设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功