디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Ada 프로그래밍: 7. 객체 지향 프로그래밍 (OOP)

나르시갤로그로 이동합니다. 2025.10.20 09:04:04
조회 74 추천 0 댓글 0

7. 객체 지향 프로그래밍 (OOP)

7.1 Ada의 객체 지향 패러다임 개요

Ada의 객체 지향 프로그래밍은 패키지(package)를 통한 캡슐화, 태그드 타입(tagged type)을 통한 타입 확장 및 상속, 그리고 디스패치 연산(dispatching operation)을 통한 런타임 다형성을 기반으로 합니다. 또한 인터페이스 타입(interface type)을 통해 다중 상속을 지원합니다.


7.2 캡슐화와 정보 은닉 (Encapsulation and Information Hiding)

7.2.1 패키지를 이용한 추상화

Ada의 캡슐화는 패키지(package)를 통해 이루어집니다. 패키지는 명세(specification)와 구현부(body)로 분리되며, 명세의 'visible part'는 클라이언트에게 논리적 인터페이스를 제공하고, 'private part'와 'body'는 구현 세부 사항을 은닉합니다.

7.2.2 전용 타입 (Private Types)

전용 타입(private type)은 패키지의 'visible part'에 선언되어 클라이언트에게는 타입의 이름과 관련 연산만 노출하고, 완전한 정의는 'private part'에 위치시켜 구현 세부 사항을 은닉합니다. 이는 데이터 추상화의 핵심입니다.

7.2.3 제한된 타입 (Limited Types)

제한된 타입(limited type)은 할당 연산(assignment)과 사전 정의된 동등 연산(equality)이 허용되지 않는 타입입니다. 이는 타입 정의에 limited 예약어를 사용하여 명시합니다.


7.3 상속과 타입 확장 (Inheritance and Type Extension)

7.3.1 태그드 타입 (Tagged Types)

태그드 타입(tagged type)tagged 예약어로 선언되며, 타입 확장을 지원하고 런타임 다형성의 기반이 됩니다. 태그드 타입의 객체는 런타임에 자신의 특정 타입을 식별하는 태그(tag)를 가집니다.

7.3.2 타입 확장 (Extension)과 프리미티브 연산 (Primitive Operations)

타입 확장(type extension)은 기존 태그드 타입을 부모 타입으로 하여 새로운 타입을 파생(derive)하는 것을 의미합니다. 파생 타입은 부모의 모든 특성을 상속받습니다. 레코드 확장(record extension)의 경우, 부모 타입에 새로운 컴포넌트를 추가할 수 있습니다. 파생 타입은 부모 타입의 프리미티브 연산(primitive operation)을 상속받습니다.

7.3.3 연산 재정의 (Overriding)

파생 타입은 상속받은 프리미티브 연산을 재정의(overriding)하여 새로운 구현을 제공할 수 있습니다. Ada는 overriding 표시자를 사용하여 재정의 의도를 명시적으로 선언하도록 권장합니다.


7.4 다형성 (Polymorphism)

7.4.1 클래스-와이드 타입 (Class-Wide Types)

태그드 타입 T에 대해, 클래스-와이드 타입(class-wide type) T'Class는 T 또는 T의 모든 파생 타입을 포함하는 'derivation class' 내의 모든 값을 나타냅니다.

7.4.2 동적 디스패치 (Dynamic Dispatching)

디스패치(dispatching)는 런타임 다형성을 구현하는 핵심 메커니즘입니다. 클래스-와이드 타입의 객체를 통해 프리미티브 연산을 호출할 때, 객체의 런타임 태그를 기반으로 해당 특정 타입에 맞는 연산의 구현부(body)가 동적으로 선택되어 실행됩니다.

7.4.3 'Tag와 'Class 속성

'Class 속성은 특정 태그드 타입 S에 대해 클래스-와이드 타입 S'Class를 나타냅니다. 'Tag 속성은 타입(S'Tag) 또는 객체(X'Tag)의 런타임 태그 값을 반환하며, 이는 Ada.Tags 패키지의 Tag 타입입니다.


7.5 추상화의 심화

7.5.1 추상 타입 (Abstract Types) 및 서브프로그램 (Abstract Subprograms)

추상 타입(abstract type)abstract 예약어로 선언되며, 객체를 직접 생성할 수 없고 다른 타입의 조상 타입으로만 사용됩니다. 추상 서브프로그램(abstract subprogram)은 구현부(body)가 없으며, 반드시 파생된 구체적인(non-abstract) 타입에서 재정의되어야 합니다.

7.5.2 인터페이스 타입 (Interface Types)과 다중 상속

인터페이스 타입(interface type)은 컴포넌트가 없는 추상 태그드 타입입니다. Ada는 인터페이스를 통해 다중 상속을 지원합니다. 하나의 타입은 여러 개의 인터페이스 타입(progenitor)으로부터 연산을 상속받을 수 있습니다.


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 영포티룩도 멋지게 소화할 것 같은 40대 스타는? 운영자 25/10/27 - -
AD 할로윈 슈퍼위크~!! 운영자 25/10/23 - -
2897257 oop를 연습하려면? [5] 프갤러(14.36) 10.19 143 0
2897255 오늘만큼 프로그래밍에 감사한 적이 없었다 [1] ㅆㅇㅆ(124.216) 10.19 152 0
2897254 나랑 결혼한지 5년차인 와이프 사진인데 어떠냐 [2] ㅁㅁ갤로그로 이동합니다. 10.19 153 0
2897252 개발자하려면 노트북 쓰지 마라. [6] 프갤러(59.16) 10.19 181 0
2897250 [대한민국] [단독] SBS 무궁화 훈장 욕보여- 프갤러(121.172) 10.19 76 0
2897249 주말이 벌써끝이라고? [12] 개멍청한유라갤로그로 이동합니다. 10.19 109 0
2897247 왜 가난의 이미지를 측은함, 부끄러움으로만 만드는걸까... [2] ㅇㅇ(223.39) 10.19 90 0
2897246 존재하지도 않는 것을 동경하고 절망한다 [6] 공기역학갤로그로 이동합니다. 10.19 117 0
2897245 데이터 분석 과제 하고 있는데 미치겠다. [1] 프갤러(218.152) 10.19 111 1
2897244 개발자 할려면 노트북 필수임? [6] ㅇㅇ갤로그로 이동합니다. 10.19 112 0
2897242 김창욱 김제동 오은영 같은 프갤러(211.210) 10.19 74 0
2897241 서울가스라이팅 당해서 서울이런 모습인줄알았음 ㅇㅇ(175.197) 10.19 70 0
2897240 나같은 인간이 살아가도 되는걸까 ㅠㅠㅠㅠ [12] 공기역학갤로그로 이동합니다. 10.19 105 0
2897238 냥덩아 발명도둑잡기(39.7) 10.19 71 0
2897237 그래도 이번 정권이 집값은 잡을 의지가 있어보이긴 해 [4] chironpractor갤로그로 이동합니다. 10.19 138 0
2897236 zfs source code opened 나르시갤로그로 이동합니다. 10.19 59 0
2897234 부산에 국제수로기구 인프라센터 생기네 ㅇㅇ(175.197) 10.19 69 0
2897233 전찐연 ㄱㄱ 슈퍼너드_리보갤로그로 이동합니다. 10.19 72 0
2897232 스타벅스 선불금 6년간 2.6조…고객돈으로 투자 수익 등 400억원 발명도둑잡기(118.235) 10.19 60 0
2897231 zfs도 라이센스에 소스 강제공개가 없어서 백도어 가능 발명도둑잡기(118.216) 10.19 61 0
2897230 미국 마이크론부터 때리는 중국, 지켜보는 한국 발명도둑잡기(118.216) 10.19 55 0
2897229 zfs 파일 시스템에서도 mount 명령을 사용하면 되는가? 나르시갤로그로 이동합니다. 10.19 63 0
2897227 코스프레가 대중화되야 출산률이 올라간당 By 나님 ♥덩냥이♥갤로그로 이동합니다. 10.19 75 0
2897226 구윤철 “미국처럼 재산세 1% 때리면 고가주택 보유하겠나” [1] 발명도둑잡기(39.7) 10.19 82 0
2897225 저장용 ♥덩냥이♥갤로그로 이동합니다. 10.19 76 0
2897224 제국주의 체제 부역자는 대체로 이기적이고 근시안적인 입장이고 [1] 발명도둑잡기(118.235) 10.19 88 0
2897223 괜찮다는건 무지에 대한 책임감의 부재 아닐까?? [1] ㅇㅇ(223.39) 10.19 81 0
2897222 한반도의 절대반지는 단연코 국가보안법이다 발명도둑잡기(118.235) 10.19 58 0
2897220 예뿐귀염냥들도 풍파좀맞으면 미모떨엊지는듯 [2] ♥덩냥이♥갤로그로 이동합니다. 10.19 90 0
2897219 ‘노 킹스!’ 미국 전역 들썩인 반 트럼프 시위…“역사상 최대 규모” [2] 발명도둑잡기(118.235) 10.19 72 0
2897218 Ada 프로그래밍: 4.1.1 타입의 정의와 중요성 나르시갤로그로 이동합니다. 10.19 83 0
2897217 애널은 버티다 일직자야갯다 ♥덩냥이♥갤로그로 이동합니다. 10.19 52 0
2897216 컨디션 좋을때 효율이 안좋을때 수백수천배임 ♥덩냥이♥갤로그로 이동합니다. 10.19 53 0
2897215 체딸의 갖장 큰 단점은 중요성 판단능력이 떠러진다는거 ♥덩냥이♥갤로그로 이동합니다. 10.19 67 0
2897214 4시간 잤다 발명도둑잡기(118.216) 10.19 66 0
2897213 생후2개월까지만 귀엽고 그이후는 귀여운애들만 귀여운듯 ♥덩냥이♥갤로그로 이동합니다. 10.19 66 0
2897212 새끼길냥이들 좀만크면 안귀여워지네 ♥덩냥이♥갤로그로 이동합니다. 10.19 68 0
2897211 뛰뛰조졋더이 글이 언읽힌당.. [2] ♥덩냥이♥갤로그로 이동합니다. 10.19 70 0
2897210 바이럴이라는게 상당히 중요한게 얼마전에 바이브 코딩 게임 [1] ㅆㅇㅆ(124.216) 10.19 114 0
2897209 [대한민국] 헌재 윤 국무회의 CCTV 고의적으로 증거 은닉 프갤러(121.172) 10.19 72 0
2897207 아 내 서비스를 빨리 완성해야되겠구나 [2] ㅆㅇㅆ(124.216) 10.19 104 0
2897206 프로그래머 너네는 행복한줄 알아. [2] 프갤러(59.16) 10.19 126 0
2897205 우리나라는 진짜 좌파가 없음 . 진짜 좌파는 이런거임 [30] ㅇㅇ(175.197) 10.19 191 0
2897204 [대한민국] 캄보디아 사건을 토대로 알아보는 좌파의 인식과 사회구조 [3] 프갤러(121.172) 10.19 73 0
2897203 삶이 의미 없다 동안구청 건설과 직원들은 11시 40분에 점심먹으러 가고 넥도리아(220.74) 10.19 60 0
2897202 어후 글이어지러 [2] CreeJee(유동근)갤로그로 이동합니다. 10.19 91 0
2897201 양산형 만들 시간에 다른 개발.자 개발자 자체가 적페아닌가 이재명도사장이 넥도리아(119.195) 10.19 66 0
2897200 님들은 게임 개발 왜함. 목적이 뭐임 돈 머니 아니면 코인 아니면 취업사 넥도리아(119.195) 10.19 64 0
2897199 어제 박가네 보는데 오사카는 오사카 짱짱맨이라며 ㅇㅇ(175.197) 10.19 85 0
2897198 문화에 힘을 왜 쓰냐 다 구란데 [8] 프갤러(211.210) 10.19 87 2
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2