부록

부록 (Appendices)

이 장에서는 과정 전체에서 참조했던 참고 표와 부록을 수록해요.

출처: 부록 문서

본문

부록 A: 제네릭 형식 모드 (Appendix A: Generic Formal Types)

다음 표들은 제네릭에 사용할 수 있는 형식 타입(formal type)의 예시를 포함해요:

형식 타입 (Formal type) 실제 타입 (Actual type)
불완전 타입 (Incomplete type) — 형식: type T; 모든 타입 (Any type)
이산 타입 (Discrete type) — 형식: type T is (<>); 모든 정수, 모듈러 또는 열거형 타입 (Any integer, modular or enumeration type)
범위 타입 (Range type) — 형식: type T is range <>; 모든 부호 있는 정수 타입 (Any signed integer type)
모듈러 타입 (Modular type) — 형식: type T is mod <>; 모든 모듈러 타입 (Any modular type)
부동 소수점 타입 (Floating-point type) — 형식: type T is digits <>; 모든 부동 소수점 타입 (Any floating-point type)
이진 고정 소수점 타입 (Binary fixed-point type) — 형식: type T is delta <>; 모든 이진 고정 소수점 타입 (Any binary fixed-point type)
십진 고정 소수점 타입 (Decimal fixed-point type) — 형식: type T is delta <> digits <>; 모든 십진 고정 소수점 타입 (Any decimal fixed-point type)
정의형 비리미티드 비공개 타입 (Definite nonlimited private type) — 형식: type T is private; 모든 비리미티드, 정의형 타입 (Any nonlimited, definite type)
판별자를 가진 비리미티드 비공개 타입 (Nonlimited Private type with discriminant) — 형식: type T (D : DT) is private; 판별자를 가진 모든 비리미티드 타입 (Any nonlimited type with discriminant)
접근 타입 (Access type) — 형식: type A is access T; 타입 T에 대한 모든 접근 타입 (Any access type for type T)
정의형 파생 타입 (Definite derived type) — 형식: type T is new B; 기본 타입 B에서 파생된 모든 구체 타입 (Any concrete type derived from base type B)
리미티드 비공개 타입 (Limited private type) — 형식: type T is limited private; 리미티드 여부와 무관한 모든 정의형 타입 (Any definite type, limited or not)
불완전 태그 타입 (Incomplete tagged type) — 형식: type T is tagged; 모든 구체, 정의형, 태그 타입 (Any concrete, definite, tagged type)
정의형 태그 비공개 타입 (Definite tagged private type) — 형식: type T is tagged private; 모든 구체, 정의형, 태그 타입 (Any concrete, definite, tagged type)
정의형 태그 리미티드 비공개 타입 (Definite tagged limited private type) — 형식: type T is tagged limited private; 리미티드 여부와 무관한 모든 구체 정의형 태그 타입 (Any concrete definite tagged type, limited or not)
정의형 추상 태그 비공개 타입 (Definite abstract tagged private type) — 형식: type T is abstract tagged private; 추상·구체 여부와 무관한 모든 비리미티드 정의형 태그 타입 (Any nonlimited, definite tagged type, abstract or concrete)
정의형 추상 태그 리미티드 비공개 타입 (Definite abstract tagged limited private type) — 형식: type T is abstract tagged limited private; 리미티드·추상·구체 여부와 무관한 모든 정의형 태그 타입 (Any definite tagged type, limited or not, abstract or concrete)
정의형 파생 태그 타입 (Definite derived tagged type) — 형식: type T is new B with private; 기본 타입 B에서 파생된 모든 구체 태그 타입 (Any concrete tagged type derived from base type B)
정의형 추상 파생 태그 타입 (Definite abstract derived tagged type) — 형식: type T is abstract new B with private; 기본 타입 B에서 파생된 모든 태그 타입 (추상 또는 구체) (Any tagged type derived from base type B abstract or concrete)
배열 타입 (Array type) — 형식: type A is array (R) of T; 타입 T의 요소를 포함하고 범위 R을 가진 모든 배열 타입 (Any array type with range R containing elements of type T)
인터페이스 타입 (Interface type) — 형식: type T is interface; 모든 인터페이스 타입 T (Any interface type T)
리미티드 인터페이스 타입 (Limited interface type) — 형식: type T is limited interface; 모든 리미티드 인터페이스 타입 T (Any limited interface type T)
태스크 인터페이스 타입 (Task interface type) — 형식: type T is task interface; 모든 태스크 인터페이스 타입 T (Any task interface type T)
동기화 인터페이스 타입 (Synchronized interface type) — 형식: type T is synchronized interface; 모든 동기화 인터페이스 타입 T (Any synchronized interface type T)
보호 인터페이스 타입 (Protected interface type) — 형식: type T is protected interface; 모든 보호 인터페이스 타입 T (Any protected interface type T)
파생 인터페이스 타입 (Derived interface type) — 형식: type T is new B and I with private; 기본 타입 B와 인터페이스 I에서 파생된 모든 타입 T (Any type T derived from base type B and interface I)
다중 인터페이스 파생 타입 (Derived type with multiple interfaces) — 형식: type T is new B and I1 and I2 with private; 기본 타입 B와 인터페이스 I1, I2에서 파생된 모든 타입 T (Any type T derived from base type B and interfaces I1 and I2)
추상 파생 인터페이스 타입 (Abstract derived interface type) — 형식: type T is abstract new B and I with private; 추상 기본 타입 B와 인터페이스 I에서 파생된 모든 타입 T (Any type T derived from abstract base type B and interface I)
리미티드 파생 인터페이스 타입 (Limited derived interface type) — 형식: type T is limited new B and I with private; 리미티드 기본 타입 B와 리미티드 인터페이스 I에서 파생된 모든 타입 T (Any type T derived from limited base type B and limited interface I)
추상 리미티드 파생 인터페이스 타입 (Abstract limited derived interface type) — 형식: type T is abstract limited new B and I with private; 추상 리미티드 기본 타입 B와 리미티드 인터페이스 I에서 파생된 모든 타입 T (Any type T derived from abstract limited base type B and limited interface I)
동기화 인터페이스 타입 (Synchronized interface type) — 형식: type T is synchronized new SI with private; 동기화 인터페이스 SI에서 파생된 모든 타입 T (Any type T derived from synchronized interface SI)
추상 동기화 인터페이스 타입 (Abstract synchronized interface type) — 형식: type T is abstract synchronized new SI with private; 동기화 인터페이스 SI에서 파생된 모든 타입 T (Any type T derived from synchronized interface SI)

무한 버전 (Indefinite version)

위 예시들 중 많은 것은 무한 형식 타입(formal indefinite type)에도 사용할 수 있어요:

형식 타입 (Formal type) 실제 타입 (Actual type)
무한 불완전 타입 (Indefinite incomplete type) — 형식: type T (<>); 모든 타입 (Any type)
무한 비리미티드 비공개 타입 (Indefinite nonlimited private type) — 형식: type T (<>) is private; 무한·정의형 여부와 무관한 모든 비리미티드 타입 (Any nonlimited type indefinite or definite)
무한 리미티드 비공개 타입 (Indefinite limited private type) — 형식: type T (<>) is limited private; 리미티드·무한·정의형 여부와 무관한 모든 타입 (Any type, limited or not, indefinite or definite)
무한 태그 비공개 타입 (Incomplete indefinite tagged private type) — 형식: type T (<>) is tagged; 무한·정의형 여부와 무관한 모든 구체 태그 타입 (Any concrete tagged type, indefinite or definite)
무한 태그 비공개 타입 (Indefinite tagged private type) — 형식: type T (<>) is tagged private; 무한·정의형 여부와 무관한 모든 구체, 비리미티드 태그 타입 (Any concrete, nonlimited tagged type, indefinite or definite)
무한 태그 리미티드 비공개 타입 (Indefinite tagged limited private type) — 형식: type T (<>) is tagged limited private; 리미티드·무한·정의형 여부와 무관한 모든 구체 태그 타입 (Any concrete tagged type, limited or not, indefinite or definite)
무한 추상 태그 비공개 타입 (Indefinite abstract tagged private type) — 형식: type T (<>) is abstract tagged private; 무한·정의형·추상·구체 여부와 무관한 모든 비리미티드 태그 타입 (Any nonlimited tagged type, indefinite or definite, abstract or concrete)
무한 추상 태그 리미티드 비공개 타입 (Indefinite abstract tagged limited private type) — 형식: type T (<>) is abstract tagged limited private; 리미티드·무한·정의형·추상·구체 여부와 무관한 모든 태그 타입 (Any tagged type, limited or not, indefinite or definite abstract or concrete)
무한 파생 태그 타입 (Indefinite derived tagged type) — 형식: type T (<>) is new B with private; 기본 타입 B에서 파생된 무한·정의형 여부와 무관한 모든 태그 타입 (Any tagged type derived from base type B, indefinite or definite)
무한 추상 파생 태그 타입 (Indefinite abstract derived tagged type) — 형식: type T (<>) is abstract new B with private; 기본 타입 B에서 파생된 무한·정의형·추상·구체 여부와 무관한 모든 태그 타입 (Any tagged type derived from base type B, indefinite or definite abstract or concrete)

같은 예시들에 판별자(discriminant)가 포함될 수도 있어요. 그 경우 (<>)는 판별자 목록(예: (D: DT))으로 대체돼요.

부록 B: 컨테이너 (Appendix B: Containers)

다음 표는 Ada에서 사용 가능한 모든 컨테이너를 버전(표준, 바운드, 언바운드, 무한)별로 보여줘요:

범주 (Category) 컨테이너 Std Bounded Unbounded Indefinite
Vector Vectors Y Y Y
List Doubly Linked Lists Y Y Y
Map Hashed Maps Y Y Y
Map Ordered Maps Y Y Y
Set Hashed Sets Y Y Y
Set Ordered Sets Y Y Y
Tree Multiway Trees Y Y Y
Generic Holders Y
Queue Synchronized Queue Interfaces Y
Queue Synchronized Queues Y Y
Queue Priority Queues Y Y

참고 (Note) 올바른 컨테이너 이름을 얻으려면 위 이름들의 공백을 _로 바꾸세요. (예: Hashed MapsHashed_Maps가 돼요.)

다음 표는 컨테이너 이름에 적용되는 접두사(prefix)를 버전에 따라 제시해요. 표에 나와 있듯 표준 버전에는 연관된 접두사가 없어요.

버전 (Version) 명명 접두사 (Naming prefix)
Std
Bounded Bounded_
Unbounded Unbounded_
Indefinite Indefinite_

더 알아보기 (Learn more)