디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.10.20 09:04:04
조회 73 추천 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 - -
2897346 부산 하야리아 미군부대 자리에 만든공원 [1] ㅇㅇ(175.197) 10.20 116 0
2897343 열등감에 쩔어서 신고글삭했노 [5] ㅆㅇㅆ(124.216) 10.20 133 0
2897342 부산 만한 도시가없어 [3] ㅇㅇ(175.197) 10.20 123 0
2897341 납품했으니 잠이나 잘련다. [1] ㅆㅇㅆ(124.216) 10.20 87 0
2897340 부산 모습 [2] 피치(175.197) 10.20 110 0
2897339 진짜 유전자 별나네 ㅅㅂ 뭔 사소한게 이렇게 따라가게 되지 [1] ㅇㅇ(223.39) 10.20 86 0
2897331 그냥 무시가 답 [1] ㅇㅇ(124.48) 10.20 178 5
2897327 제일 이해가 안가는게 걍 해본 적이 없는 놈이 저런말하니까. ㅆㅇㅆ(124.216) 10.20 105 0
2897321 데싸는 파이썬이다.... [1] ㅇㅇ(124.48) 10.20 147 0
2897319 최근들어 상대가 최선의수를 안쓰길 바라는빈도가 늘은듯 공기역학갤로그로 이동합니다. 10.20 93 0
2897317 진지하게 잠 안오는데 편의점 가냐마냐 ㅇㅅㅇ ㅇㅇ(223.39) 10.20 58 0
2897315 AI + 1인 개발인데 게임 출시를 목표로 한다면 [2] 프갤러(121.154) 10.20 154 0
2897313 근데 ㅆㅇㅆ는 뭐냐 [2] 프갤러(123.199) 10.20 144 0
2897311 우리회사 개발자 3명인데 [3] ㅇㅇ(223.39) 10.20 144 0
2897307 여기는 가지 마라 [4] 프갤러(160.238) 10.20 153 0
2897304 개발자들 이제 뭐먹고살아야함? [4] 프갤러(39.117) 10.19 210 0
2897303 통계학과에서 데이터사이언스 배워? [1] 돌진하자(121.175) 10.19 93 0
2897302 아니 공공데이터포털 아직도 안돼? 데이터 써야하는데 ㅅㅂ [1] 프갤러(124.59) 10.19 108 0
2897301 코딩갤 맞음? 왜 정치글이 념글임? [2] ㅇㅇ갤로그로 이동합니다. 10.19 102 0
2897298 인생 역대급으로 목적이없음 [8] 공기역학갤로그로 이동합니다. 10.19 136 0
2897292 러스트 배우면 갹체지향도 그냥 깔끔하게 끝납니다. 프갤러(110.8) 10.19 95 0
2897290 남녀평등 배구공(119.202) 10.19 84 0
2897289 OOP가 참 존나 웃김 [7] 루도그담당(58.239) 10.19 202 0
2897288 데이터 싸이언스 할라면 R 타이디버스부터 해야함 ㅆㅇㅆ(124.216) 10.19 84 0
2897287 뭐 어떤 지향이 필수는 아님. 결국 다형성의 구현이니까 [4] ㅆㅇㅆ(124.216) 10.19 125 0
2897286 데이터 사이언스 할려면 도메인부터 먼저 필수임? [6] 돌진하자(121.175) 10.19 116 0
2897285 죽을까 프갤러(106.101) 10.19 72 0
2897283 아 재밌고 어려운거 심장떨리는거 하고싶다 [1] ㅆㅇㅆ(124.216) 10.19 111 0
2897281 논문 재현외주는 재미는 있는데 돈이 안되네 [4] ㅆㅇㅆ(124.216) 10.19 133 0
2897279 oop는 필요성을 느껴야지, 연습한다고 의미 없음 ㅋㅋ [2] 에이도비갤로그로 이동합니다. 10.19 115 0
2897271 함수형보다는 ㅇㅇ(118.235) 10.19 85 0
2897263 개인적으로 함수형 패러다임 익히는데는 R이 좋더라 ㅆㅇㅆ(124.216) 10.19 81 0
2897262 링크드인서 만난 그 남자..."알고 보니 채용 빙자 해커" 발명도둑잡기(118.235) 10.19 65 0
2897261 oop는 다형성의 구현일뿐인데 그게 정형화된거라 [2] ㅆㅇㅆ(124.216) 10.19 109 0
2897260 원래 주식 자동매매 거의 나만하는 꿀통이었는데 ㅆㅇㅆ(124.216) 10.19 116 0
2897259 OOP는 연습한다기보다 그냥 단순하게 많이 짜봐야함. [2] ㅆㅇㅆ(124.216) 10.19 119 0
2897257 oop를 연습하려면? [5] 프갤러(14.36) 10.19 143 0
2897255 오늘만큼 프로그래밍에 감사한 적이 없었다 [1] ㅆㅇㅆ(124.216) 10.19 151 0
2897254 나랑 결혼한지 5년차인 와이프 사진인데 어떠냐 [2] ㅁㅁ갤로그로 이동합니다. 10.19 153 0
2897252 개발자하려면 노트북 쓰지 마라. [6] 프갤러(59.16) 10.19 179 0
2897250 [대한민국] [단독] SBS 무궁화 훈장 욕보여- 프갤러(121.172) 10.19 75 0
2897249 주말이 벌써끝이라고? [12] 개멍청한유라갤로그로 이동합니다. 10.19 109 0
2897247 왜 가난의 이미지를 측은함, 부끄러움으로만 만드는걸까... [2] ㅇㅇ(223.39) 10.19 89 0
2897246 존재하지도 않는 것을 동경하고 절망한다 [6] 공기역학갤로그로 이동합니다. 10.19 117 0
2897245 데이터 분석 과제 하고 있는데 미치겠다. [1] 프갤러(218.152) 10.19 110 1
2897244 개발자 할려면 노트북 필수임? [6] ㅇㅇ갤로그로 이동합니다. 10.19 112 0
2897242 김창욱 김제동 오은영 같은 프갤러(211.210) 10.19 74 0
2897241 서울가스라이팅 당해서 서울이런 모습인줄알았음 ㅇㅇ(175.197) 10.19 69 0
2897240 나같은 인간이 살아가도 되는걸까 ㅠㅠㅠㅠ [12] 공기역학갤로그로 이동합니다. 10.19 105 0
2897238 냥덩아 발명도둑잡기(39.7) 10.19 71 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2