Ada程序设计-第7章 程序包(Package)

7.1 概述(Overview)

多子程序封装在一个文件里过于庞大,且分类不清,这时就使用了程序包(package),作为一种分组机制,将子程序归类封装成独立的单元。Ada 的程序包机制主要受 Pascal 及 70 年代时的软件工程技术影响。当时很主要的一项革新就是软件包的概念。软件包使一个大程序分离成了多个单元,使软件维护更加方便,可重用性也更高,是结构化编程思想中必不可少的一部份。

软件包并不关心程序是如何运行的,而是在于理解程序是如何构成的以及维护性。Ada 的程序包是定义一堆相关实体(如数据类型、运算符、子程序)的最基本单元,也是使用最常用的编译单元之一。本章里我们介绍程序包的常见用法,更多的内容,如类属程序包,请参见后面的章节。

7.2 程序包的声明(Package Declaration)

程序包一般分为两部份,声明部分和执行部份。声明部份声明子程序、变量等实体,他们通常被称为资源;而执行部份则是声明部分中实体的实现。它们的扩展名一般情况下分别为 ads 和 adb。为了省力点,我们就直接将上一章的overload 做个处理,将"+"和Put封装在程序包内,这样程序包说明如下:

000 --filename:overload.ads
001 package Overload is
002    type Vector is array (1 .. 5 ) of Integer;
003    function "+"(left,right:Vector) return Vector;
004    procedure Put (Item : Vector);
005 end Overload;

从这个例子,我们应该知道了程序包说明的格式:

package packgae_name is
	statements;
end package_name;

statemets就是数据类型、变量、常量、子程序的声明。

7.3 程序包的主体部份(Package Body)

仅仅有说明部份,程序包还没什么用处,还要有它的主体部份,即说明部份的具体实现。主体部份可以包含创建数据类型、子程序、变量、常量。它的格式为:

package body packgae_name is
	statements1;
[begin]
	statements2;
end package_name;

statements1 是创建子程序、数据类型、变量、常量的语句,一般情况下是说明部份的具体实现;**[begin]**是可选的,它后面的statement2 是程序包的初始化语句,在主程序执行前开始执行。

所以上例 overload 的主体部分为:

000 -- filename:overload.adb
001 with Ada.Integer_Text_IO; use Ada.Integer_text_IO;
002 package body Overload is
003    function "+"(left,right:Vector) return Vector is
004        result : Vector;
005    begin
006       for i in left'range loop
007        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值