수색…


통사론

  • 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 IOuse 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_MuchPay 작업을 호출 할 수 있습니다. 그러나 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_HomeOrders 의 하위 패키지입니다. 형식 Ordered_By_PhoneBill 에서 파생되었으며 레코드 구성 요소 Sum 포함합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow