우물 밖 병아리
[자료구조] 추상화, ADT(추상자료형), Class와 Struct 본문
*개인 학습 목적으로 정리한 글입니다. 오류가 있다면 부담없이 지적해주세요, 감사합니다.*

1. 추상화
<어머니가 심부름을 시키는 상황>
1. "마트에 가서 노란 걸 하나 사오렴." ---> 지나치게 추상적
2. "마트에 가서 레몬을 사는데 직경이 5cm보다 작고, 길이는 10cm 이하이며 가격은 1000원 이하에다 색상이 #FFD404이고 줄기는 3mm보다 가는 것을 사오렴." ---> 지나치게 구체적
---> 1과 2사이의 추상성이 필요하다.
추상화란?
- 복잡하고 구체적인 대상에서 필수적인(중요한) 사항만을 표현하는 것
ex) 우리가 크롬에 어떤 것을 검색하고자 할 때, 우리는 해당 기능에 대해서만 알면 됨
크롬이 내부적으로 어떻게 동작하는지는 알 필요가 없음. ---> 굳이 보여주지 않는다~
- 추상화 통해 문제를 효율적으로 제어, 관리할 수 있음
ex) <자동차 부품 관리 프로그램>
메인 부품: 엔진 출력, 성능
타이어 부품: 타이어 브랜드, 사이즈
외관 부품: 부품 색상, 종류, 사이즈 ---> 중요한 사항만 표현!
cf) Information Hiding(정보 은닉)
시스템이 모듈의 디테일들에 접근하는 것을 제어하기 위해
퍼블릭 인터페이스/메소드만을 통해 접근할 수 있도록 하는 것
(캡슐화는 information hiding을 위한 방법 중 하나)
2. ADT(추상자료형)
- 구현 방법에 상관없이 자료 자체의 형태와 관계된 연산들을 정의한 것
ex) 스택 - 삽입한 순서로 쌓이는 값(Data)의 모임.
가장 위에 값을 넣는 push, 가장 위의 값을 하나 빼서 알려주는 pop등의 연산(Operation) 존재
- "구현 방법은 상관없다"
ex) Python2와 Python3의 <list> 자료형,
C++와 Python3의 <list>,
Java와 Python3의 <list>
--->3가지 경우 구체적 구현, 연산은 다를 수 있으나 ...
전부 같은 <list>의 기능을 설명하기 때문에 같은 ADT == 추상자료형임
- 데이터와 연산에 대한 분명한 내용을 제공하면서, 내부 구현은 숨김
---> 사용자에게 데이터, 연산의 인터페이스만을 제공(자료구조의 추상화)
3. 자료구조
- ADT의 데이터 + 연산은 클래스와 오브젝트들로 쉽게 구현 가능
Data: 멤버 변수
Operations: 멤버 함수
- 자료구조: 데이터 요소 각각을 저장하고 찾는 연산에 특화된 구조를 갖는 값들의 모음
- 특징
1. 각각의 요소들로 분해될 수 있음
2. 요소들의 배치는 접근 방법에 영향을 미침
3. 배치와 접근 방법은 캡슐화될 수 있음
- 복합 자료구조: 하나의 변수 아래에 여러 요소의 모음을 저장하는 구조
---> 개별 요소에 접근할 수 있도록 함
ex) 배열(Array), 클래스(Class), 구조체(Struct)
*Class/Struct
- members/fields라 불리는 서로 다른 자료형의 요소를 포함할 수 있음

- 온점(.)이 변수 이름과 멤버 식별자 사이에 쓰임 ---> 개별 멤버에 접근

- 같은 타입의 다른 변수에 할당하거나(추가 학습 필요)
함수의 파라미터로 전달되거나
함수의 리턴 값으로 반환될 때 사용될 수 있음
4. 참고
https://engineerinsight.tistory.com/313
[자료구조] - 4. 추상자료형, 리스트 ADT
추상자료형, 리스트 ADT 추상자료형(abstract data type, ADT): 데이터구조의 추상형 ADT는 다음을 명세 1. 저장된 데이터 2. 데이터에 대한 작업들 3. 작업 중 발생 가능한 에러 상황들 예: 주식거래 시스
sirius7.tistory.com
[자료구조] ADT(Abstract Data Type)란?: 배열, 스택, 큐, 집합, 맵, 트리, 우선순위 큐의 ADT와 자바에서
Computer Science 모아보기 👉🏻 https://github.com/seoul-developer/CS GitHub - seoul-developer/CS: 주니어 개발자를 위한 전공 지식 모음.zip 주니어 개발자를 위한 전공 지식 모음.zip. Contribute to seoul-developer/CS develo
engineerinsight.tistory.com
https://namu.wiki/w/%EC%B6%94%EC%83%81%EC%A0%81%20%EC%9E%90%EB%A3%8C%ED%98%95
추상적 자료형
위키백과의 설명(영문) Abstract Data Type, ADT. 자료 자체의 형태와 그 자료에 관계된 연산들을
namu.wiki
https://coldpresso.tistory.com/15
객체와 OOP의 4가지 특징
1. 객체란? - 객체란 현실 세계에서 실재하는 모든 "대상"을 "변수"(상태/속성)와 "함수"(행동)로 추상화 시킨 개념이다. * 여기서 추상화는 대상의 본질적인 특징을 추출하여 표현한 것이라고 이해
coldpresso.tistory.com
'CS > 자료구조' 카테고리의 다른 글
| [자료구조] 스택(STACK)과 큐(QUEUE) (4) | 2024.12.27 |
|---|---|
| [자료구조] Unsorted/Sorted Lists(미정렬/정렬 리스트), Time Complexity(시간 복잡도) (3) | 2024.03.11 |
| [자료구조] 메모리 할당(Memory Allocation), 일차원/이차원 배열 (2) | 2024.03.11 |