수색…
통사론
- Package_Name_To_Include;
- package New_Package_Name은 Package_To_Rename의 이름을 바꿉니다.
- Package_Name을 사용하십시오.
- 패키지 Parent_Name.Child_Name은 (는)
비고
패키지에 대한 추가 정보
Hello World 에서는 Ada.Text_IO 패키지에 Ada.Text_IO 소개하고 프로그램 내에서 I / O 작업을 수행하는 방법을 소개했습니다. 패키지는 여러 가지 일을 처리하기 위해 추가 조작이 가능합니다.
이름 바꾸기 : 패키지 이름을 바꾸려면 다음과 같이 패키지 선언에서 renames 키워드를 사용합니다.
package IO renames Ada.Text_IO;
이제 새 이름으로 Put_Line (즉 IO.Put_Line )과 같은 점 표기법을 use 하거나 use IO 를 use IO IO.Put_Line use 수 있습니다. 물론 use IO 또는 IO.Put_Line 을 사용하면 패키지 Ada.Text_IO 의 함수가 사용됩니다.
Visibility & Isolation : Hello World 예제에는 with 절을 사용하여 Ada.Text_IO 패키지가 포함되었습니다. 그러나 use Ada.Text_IO 를 같은 줄에 use Ada.Text_IO 싶다고 선언했습니다. use Ada.Text_IO 선언은 프로 시저의 선언 부분으로 이동할 수있었습니다.
with Ada.Text_IO;
procedure hello_world is
use Ada.Text_IO;
begin
Put_Line ("Hello, world!");
end hello_world;
이 버전에서는 Ada.Text_IO 의 프로 시저, 함수 및 유형을 프로 시저 내부에서 직접 사용할 수 있습니다. Ada.Text_IO 사용이 선언 된 블록 외부에서는 점으로 구분 된 표기법을 사용하여 호출해야합니다 (예 :
with Ada.Text_IO;
procedure hello_world is
begin
Ada.Text_IO.Put ("Hello, "); -- The Put function is not directly visible here
declare
use Ada.Text_IO;
begin
Put_Line ("world!"); -- But here Put_Line is, so no Ada.Text_IO. is needed
end;
end hello_world;
이를 통해 use ... 선언을 필요한 곳으로 격리 할 수 있습니다.
부모 - 자녀 관계
Ada 프로그램을 세분화하는 방법으로 패키지에는 소위 자녀가있을 수 있습니다. 패키지도 될 수 있습니다. 하위 패키지에는 특별한 권한이 있습니다. 상위 패키지의 개인 부분에있는 선언을 볼 수 있습니다. 이 특별한 가시성의 일반적인 사용은 객체 지향 프로그래밍에서 파생 된 유형의 계층 구조를 형성 할 때입니다.
package Orders is
type Fruit is (Banana, Orange, Pear);
type Money is delta 0.01 digits 6;
type Bill is tagged private;
procedure Add
(Slip : in out Bill;
Kind : in Fruit;
Amount : in Natural);
function How_Much (Slip : Bill) return Money;
procedure Pay
(Ordered : in out Bill;
Giving : in Money);
private
type Bill is tagged record
-- ...
Sum : Money := 0.0;
end record;
end Orders;
with Orders; 되는 Ada 유닛 with Orders; Bill 유형의 객체를 선언 한 다음 Add , How_Much 및 Pay 작업을 호출 할 수 있습니다. 그러나 Bill 의 구성 요소 나 Orders.Bill 의 구성 요소를 볼 수는 없습니다. Bill 은 전체 형식 정의가 Orders 의 사적인 부분에 숨겨져 있기 때문에 표시되지 않습니다. 하지만 전체 정의는 하위 패키지에 숨겨져 있지 않습니다. 이 가시성은 필요한 경우 유형 확장을 용이하게합니다. 유형이 Bill 에서 파생 된 자식 패키지에서 선언 된 경우이 상속 유형은 Bill 의 구성 요소를 직접 조작 할 수 있습니다.
package Orders.From_Home is
type Address is new String (1 .. 120);
type Ordered_By_Phone is new Bill with private;
procedure Deliver
(Ordered : in out Ordered_By_Phone;
Place : in Address);
private
type Ordered_By_Phone is new Bill with
record
Delivered : Boolean := False;
To : Address;
end record;
end Orders.From_Home;
Orders.From_Home 은 Orders 의 하위 패키지입니다. 형식 Ordered_By_Phone 은 Bill 에서 파생되었으며 레코드 구성 요소 Sum 포함합니다.