Sign In
Programming Language

[프로그래밍 언어] 8. Abstract Data Types and Encapsulation Constructs

Y
Yerim
카테고리
  1. Programming Language

추상화

추상화

중요한 속성만을 포함하는 개체의 개관 또는 표현
공통적인 속성이 고려될 필요가 없는 그룹
개체들의 인스턴스들을 모으는 것을 허용
공통적인 속성 → 다시 작성 X
자동차 인스턴스는 자동차 클래스를 상속

프로세스 추상화

어떻게 실행되는지 상세하게제공X, 호출 방법을 다른 프로그램에게 제공
모든 부프로그램은 프로세스 추상화라고 할 수 있다
e.g. 정렬 프로세스를 위한 부프로그램 → 어떤 방식으로 정렬하는지 알 필요 없음
사용자는 이름, 프로토콜을 아는 것이 필요

데이터 추상화

레코드 데이터 구조에서 출발
추상 데이터 타입: 레코드 형태인 데이터 구조 + 데이터를 다루는 부프로그램
데이터 표현, 그 타입의 연산을 제공하는 부프로그램이 포함된 인클로저
접근 제어 → 인클로저 외부 단위로부터 숨길 수 있음
추상 데이터 타입의 변수를 선언 O, 내부 데이터 알 수 없음
추상 데이터타입의 인스턴스 = 객체 (클래스)
사용자 정의 추상 데이터 타입
타입 정의
연산자들 집합
추상 데이터 타입
객체 표현: 프로그램 단위로부터 숨겨짐 → 정보 은폐
신뢰성 증가: 클라이언트는 객체 기본 표현 바꿀 수 없음 → 무결성 증가
프로그래머가 유의할 변수 개수 감소
변수 이름 충돌 감소
클라이언트에게 독립적: 코드를 수정해도 클라이언트 변경 X
타입 선언&타입의 객체 연산의 프로토콜 → 단일 구문 단위에 포함
정의된 타입 변수 생성 가능 (int 등)
접근자 메서드
객체의 데이터 멤버가 클라이언트로부터 은폐 →접근자 메서드(게터, 세터)로 간접 접근
읽기 전용 접근: 게터
세터 + 제한 조건 (어떤 범위로 제한 가능)
클라이언트에게 영향을 주지 않고 구현 수정
데이터 멤버를 공용으로 명세 X, private으로 명세

추상 데이터 타입의 설계 고려 사항

추상 데이터타입 사용
추상 데이터 타입 선언
부프로그램의 프로토타입
타입의 설계자에 의해 제공되는 대표적인 네 가지 연산
반복자
접근자
생성자
소멸자

언어 예제

C++ 추상 데이터 타입

추상 데이터 타입 → C언어 struct와 유사한 C++ 클래스 제공
캡슐화: 멤버 데이터 + 멤버 함수
멤버 데이터와 멤버 함수는 클래스와 관련
인스턴스 데이터와 인스턴스 멤버 함수는 인스턴스와 관련
클래스 인스턴스 종류: 정적, 스택 동적, 힙 동적
스택 동적: Player player;
힙 동적: Player *player = new Player; // new 생성 delete 소멸
정보 은폐: 은폐 개체 + 가시 개체
은폐 개체(멤버 데이터)는 private 절, 가시 개체(멤버 함수)는 public 절
생성자와 소멸자
생성자: 클래스와 동일한 이름, 묵시적 호출, 멤버 데이터들 초기화, 중복 가능
소멸자: 틸트(~)가 선행, 묵시적 호출, delete 연산자 사용 가능
생성자, 소멸자 모두 반환 타입 X, 명시적 호출 가능

Java 추상 데이터 타입

모든 객체들은 힙에 할당, 참조 변수로 접근
Java는 메소드 머리부 + 몸체 모두 정의해야함
private, public 절보다 접그 수정자(public, private, protected, default)를 가짐
가비지 수집 → 소멸자가 없다

매개변수 추상 데이터 타입

추상 데이터 타입을 매개변수화 하는 것이 편리
임의의 스칼라 타입 원소들을 저장할 수 있는 스택 추상 데이터 타입을 설계하는 것이 좋음
Java
ArrayList<Integer> myArray new ArrayList<Integer>();
포괄형 매개변수가 클래스인 경우 → 매개변수 추상 데이터 타입의 형태
collection 타입은 항상 다중 타입을 저장할 수 있다
객체 저장 시 문제점
collection 제거될 때마다 적당한 타입으로 캐스팅
collection에 추가될 때 오류 검사 없음
원시 타입 저장 불가능
collection 클래스 → 포괄형 클래스 generic class <T>
각괄호 안에 포괄형 매개변수를 보냄
원시 타입 저장 불가능
색인을 사용할 수 없음
Subscribe to 'Yerim-DevNote'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'Yerim-DevNote'!
Subscribe
👍