디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.10.20 09:04:04
조회 95 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이제는 의미 없어진 것 같은 시상식은? 운영자 25/12/01 - -
AD 루틴 ON! 운동 찐템! 지금 할인 중 운영자 25/11/27 - -
2903341 냥덩이 미래 신부감 이미지 [1] 발명도둑잡기(39.7) 11.18 150 0
2903340 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [9] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.18 112 0
2903339 아무것도 안하고 뇌빼고 게임만 하면서 살고싶다 [1] ㅇㅇ(118.235) 11.18 132 0
2903337 채권 주식 달러 [10] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.18 153 0
2903335 방화벽싸개새끼들 [11] 개멍청한유라갤로그로 이동합니다. 11.18 171 0
2903334 자녀 출산 보조금의 문제는 가난한 청년은 연예, 결혼 포기란거 [1] 발명도둑잡기(39.7) 11.18 121 1
2903333 감동란씨라는 여캠 요즘 내란옹호방송 하는것같더라 [1] 헬마스터갤로그로 이동합니다. 11.18 122 0
2903332 배고파서 버거킹 사먹을까 하다가 그냥 집 가는중 [2] 프갤러(211.235) 11.18 99 0
2903331 “시체팔이 족속은 민주당 향한 것” 발명도둑잡기(39.7) 11.18 98 0
2903330 뉴욕 시장 빨갱이 당선. 인류가 진보하기 시작 [2] 프갤러(211.234) 11.18 153 0
2903329 아내 몸에 욕창 생겼는데…육군 부사관, 유기 혐의로 체포 발명도둑잡기(39.7) 11.18 156 0
2903328 이준석 의원 비서관, '성비위 혐의'로 검찰에 송치 발명도둑잡기(39.7) 11.18 80 0
2903327 부품 다시 구해서 1월부터 서버 재가동 예정 [1] 나르시갤로그로 이동합니다. 11.18 116 0
2903326 개발자라면 사랑하는사람 감시하는 서버정도는 있어야됨 [7] 따당갤로그로 이동합니다. 11.18 167 0
2903325 러빨러 결국 회사 그만 두었나보네 ㅎㅎ [2] 나르시갤로그로 이동합니다. 11.18 159 2
2903323 모든 개발자 말고 러스트 프로그래머 화이팅 [1] 프갤러(211.234) 11.18 146 0
2903322 시발 거주지 관할 센터에 가야 구직급여 신청 가능하네 [4] 프갤러(211.234) 11.18 113 0
2903321 모든 개발자들 화이팅이얌 [3] 프갤러(118.235) 11.18 109 0
2903319 러스트 담론을 해체하다: 7. 산업 적용의 제약 조건 [2] 나르시갤로그로 이동합니다. 11.18 110 0
2903318 파이썬 홍정모 강의로 입문하는거 괜찮나여? [3] 프갤러(106.245) 11.18 143 0
2903317 어제 오퍼레터 받았는데 안간다해도댐? [1] 프갤러(211.234) 11.18 94 0
2903316 지금 듣는 이 노래 어때? ㅁㅁㅅ갤로그로 이동합니다. 11.18 61 0
2903315 파이썬 공부부터 시작할려고 하는데 추천 좀 [1] 프갤러(106.245) 11.18 143 1
2903314 일단 구직급여를 한번 받아놔야 재취업 수당 있으니까 프갤러(211.234) 11.18 111 0
2903313 30억 받는 대신에 이거 할거냐? [3] 프갤러(119.207) 11.18 155 0
2903312 정규직 -> 프리랜서 전환하면 기대출어캐되나요?? [1] 프갤러(211.235) 11.18 135 0
2903310 진지하게 진로상담 부탁드립니다 형님들.. [3] 프갤러(211.42) 11.18 170 0
2903307 [애니뉴스] YxD Labs유튜브 링크 공유 프로그램 디자인 프갤러(121.172) 11.18 60 0
2903306 러스트 담론을 해체하다: 6. '무비용 추상화'의 실제 비용 분석 나르시갤로그로 이동합니다. 11.18 70 0
2903305 러스트 담론을 해체하다: 5. '개발자 경험(DX)'의 성과와 비용 나르시갤로그로 이동합니다. 11.18 91 0
2903304 근데 cgv는 ㄹㅇ 뭐냐 [6] 공기역학갤로그로 이동합니다. 11.18 130 0
2903303 요번주 금요일에 10시에 이사갈지 결정된다니까요. 넥도리아(220.74) 11.18 59 0
2903302 클린 갤 차단 목록에 그 보석도 있어야지 [10] 프갤러(110.8) 11.18 113 0
2903301 냥덩이하고 발도잡 이 두명만없으면 클린프갤인데 갤관리 안하냐 [2] 프갤러(182.231) 11.18 123 2
2903300 비발디 브라우저 오픈소스 된이유 [4] 타이밍뒷.통수한방(1.213) 11.18 178 0
2903299 개씨발 애새끼번식한게 뭐 잘했다고 혜택 더 주는지 씨발 ㅋㅋㅋㅋㅋ [4] 타이밍뒷.통수한방(1.213) 11.18 87 0
2903298 [대한민국] 암탉이 울면 나라가 망한다 프갤러(121.172) 11.18 52 0
2903297 중국어 단어 외우기 [21] 재현갤로그로 이동합니다. 11.18 128 0
2903296 음란물 올리면 차단당함 이갤은. [3] 넥도리아(220.74) 11.18 105 0
2903295 데탑 ip 차단 먹어서 글이랑 댓글 컴으로 못씀 [9] chironpractor갤로그로 이동합니다. 11.18 109 0
2903294 인지과학조져라 손발이시립디다갤로그로 이동합니다. 11.18 73 0
2903293 러스트 담론을 해체하다: 4. '소유권' 모델의 재평가와 설계 철학 나르시갤로그로 이동합니다. 11.18 70 0
2903292 노트북 바이오스 업데이트 완료 ㅇㅇ(119.56) 11.18 54 0
2903291 최원종 이 새끼 진짜 개새네 프갤러(39.7) 11.18 112 0
2903289 백신들이 프로그램을 감지할 때 [6] 루도그담당(211.184) 11.18 120 0
2903288 드디어 C++ 을 사용하는 이유를 알았다. [1] 프갤러(59.16) 11.18 119 1
2903287 [대한민국] 일, 중 관계 악화 프갤러(121.172) 11.18 41 0
2903286 고백 ㅇㅅㅇ [1] ㅇㅅㅇ(106.102) 11.18 65 0
2903285 취미로 야동데이터베이스 만들고 싶은데 [4] 프갤러(106.245) 11.18 102 0
2903284 [애니뉴스] 유튜브 링크 공유 사이트 제작 시작 프갤러(121.172) 11.18 56 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2