디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.10.20 09:04:04
조회 86 추천 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/11/17 - -
AD 겨울가전 SALE! 쿨한 겨울 HOT세일 운영자 25/11/12 - -
2899146 뉴스 헤드라인 읽어서 관련 종목 추리고 나르시갤로그로 이동합니다. 10.28 83 0
2899145 좋은 주제 찾있다 [2] 프갤러(218.154) 10.28 126 0
2899144 폐기물 괸련 종목들 나르시갤로그로 이동합니다. 10.28 108 0
2899142 저능아가 개발문서 보면 하루아침에 전문가 되는거냐 그럼? [2] ㅇㅇ(118.235) 10.28 144 3
2899141 "개발 문서 보는것도 전문가지 병신아" [1] ㅇㅇ(118.235) 10.28 129 4
2899140 ㅆㅇㅆ 저 병신은 지가 그렇게 잘났으면 [2] ㅇㅇ(118.235) 10.28 138 3
2899139 하~ 이씨발년 [8] 개멍청한유라갤로그로 이동합니다. 10.28 156 0
2899138 openai알트먼 진성홍어임 타이밍뒷.통수한방(1.213) 10.28 72 0
2899137 나 애플디벨로퍼아카데미 4긴데 [1] 프갤러(121.151) 10.28 127 0
2899136 최근 일본의 우타이테 프로그램 수준 프로외노자갤로그로 이동합니다. 10.28 107 0
2899135 학생인데 진로 어케 잡아야되나요..? [2] 프갤러(121.133) 10.28 119 0
2899134 자러감..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 10.28 88 0
2899132 미리 알려드릴께요. 아하 운영진께 지식인 서비스 오늘 내일 수술인데 넥도리아(220.74) 10.28 90 0
2899131 군상(群像)의 일부..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 10.28 91 0
2899130 태연 ㅇㅅㅇ 잘못 올렸네.. 다시 올린다.. ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 10.28 109 0
2899129 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 10.28 110 0
2899126 childhood and manhood 배구공(119.202) 10.28 75 0
2899082 어셈블리 코드를 C 언어로 변환해주는 사이트가 있었던 것 같은데 아는 람 ㅇㅇ(115.23) 10.28 123 0
2899075 Ada 프로그래밍: 3.6 프라그마 (pragma) 나르시갤로그로 이동합니다. 10.28 97 0
2899074 거지 같은 면접 과제? 코테? 10시간 걸려 다 함.. ㅇㅇ갤로그로 이동합니다. 10.28 144 0
2899065 나는 모든사람이 나처럼 10년이상 대학병원을 다녔으면 좋겠음 타이밍뒷.통수한방(1.213) 10.28 95 0
2899052 나도 오늘은 외주가 있어서 밥벌이했는데 [2] ㅆㅇㅆ(124.216) 10.28 167 0
2899044 이런 잠시 잊고 있었군. 인류 지성의 발전이 곧 개개인의 사명. [3] 프갤러(110.8) 10.28 127 0
2899043 나도 돈많이 벌어서 내 LLM 만들고 싶어 나 LLM 만들 수 있을거같다 [1] ㅆㅇㅆ(124.216) 10.28 159 0
2899037 여자배구 마이너갤러리 매니저 해임요청 ㅇㅇ(211.235) 10.28 76 0
2899029 여자 버튜버들 구독자 1만도 힘든거같은데 [4] 헬마스터갤로그로 이동합니다. 10.28 142 0
2899020 내 인생 경험상 무조건 기업 기반이나 재단 기반이 있어야함 [12] ㅆㅇㅆ(124.216) 10.27 186 0
2899010 나는 코딩에 재능은 없지만 코딩은 좋아함 [4] ㅆㅇㅆ(124.216) 10.27 184 0
2899005 명상 하다보니 러스트 프로그래밍보다 인생이란 뭘까 [5] 프갤러(110.8) 10.27 157 0
2899004 나는 모든인간들이 나처럼 인생살았으면 좋겠음 [1] 타이밍뒷.통수한방(1.213) 10.27 100 0
2899003 명상 하다가 현타왔다. [2] 프갤러(110.8) 10.27 116 0
2898996 국정원에서 뭐할라하나? 개발자를뽑네 [4] ㅇㅇ(220.86) 10.27 195 0
2898992 옛날엔 채널 50개도 안되도 볼거 많았는데 타이밍뒷.통수한방(1.213) 10.27 84 0
2898991 쿠팡 존나게 뛰고 업소 가서 돈 다쓴 썰.. ㅇㅇ(118.235) 10.27 82 0
2898988 메모리 페이지 기본값 4KB가 만국 표준 아님? [3] 프갤러(49.165) 10.27 92 0
2898986 u+ 채널이 999개인데 ㄹㅇ 볼만한채널이없음 ㅋㅋㅋㅋㅋㅋㅋㅋ 타이밍뒷.통수한방(1.213) 10.27 68 0
2898985 맥 최초 운영 체제 이름이 좀 특이하네 프갤러(140.213) 10.27 111 0
2898981 와 근데 학생코드 짜다보면 느끼는데 항상 너무 어렵게짜서 ㅆㅇㅆ(124.216) 10.27 131 0
2898978 졸리댱.. ♥벼락부자냥덩♥갤로그로 이동합니다. 10.27 102 0
2898975 나도 프밍에 재능 있었으면 좋았겠지 프갤러(220.121) 10.27 89 0
2898974 김연경씨라는 배구선수 비호감아니냐? [5] 헬마스터갤로그로 이동합니다. 10.27 166 0
2898972 ʕ⁎⁎ʔ༄ ♥벼락부자냥덩♥갤로그로 이동합니다. 10.27 103 0
2898971 개발자 취업난 맞노? [7] 프갤러(180.231) 10.27 322 0
2898970 ʕ••ʕ••ʔ••ʔ••ʕ••ʔ••ʕ ♥벼락부자냥덩♥갤로그로 이동합니다. 10.27 96 0
2898969 나는 살면서 지나간 날이 그립진 않던데 그리운 애들 많구만 ㅆㅇㅆ(124.216) 10.27 78 0
2898968 ☆*:.。. o(≧▽≦)o .。.:*☆ [1] ♥벼락부자냥덩♥갤로그로 이동합니다. 10.27 78 0
2898967 개발은 진짜 타고난 지능 좋아야 하는 직업이네 [3] 프갤러(116.45) 10.27 214 0
2898964 웹디자인은 AI 떄문에 진짜 이미 멸망한 것 같은데 프갤러(220.70) 10.27 106 0
2898960 인터럽트가 함수 실행이랑 똑같음 [3] 재현갤로그로 이동합니다. 10.27 69 0
2898957 냥냥⭐+ ♥벼락부자냥덩♥갤로그로 이동합니다. 10.27 83 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2