일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- sqoop
- 애플 아카데미 후기
- OS
- apple developer academy 후기
- Swift 디자인패턴
- 애플 디벨로퍼 아카데미
- react
- 숭실대
- global soop
- iOS 개발 오류
- 애플 디벨로퍼 아카데미 후기
- 네이버 치지직
- useReducer
- swift문법
- 애플 디벨로퍼 아카데미 21주차 회고
- Swift 기능
- ObservedObject
- 네이버 부스트캠프
- 소프트웨어분석및설계
- 앱 비교 프로젝트
- StateObject
- SWIFT
- 데이터베이스
- Apple Developer Academy @ POSTECH
- ObservableObject
- 데이터베이스 공부
- 제앱소
- 치지직
- 운영체제
- Swift 문법
- Today
- Total
사과하는 제라스
11. Abstract Data Types and Encapsulation Constructs 본문
11. Abstract Data Types and Encapsulation Constructs
Xerath(제라스) 2022. 5. 2. 06:59목차
11.1. Abstraction에 대한 개념
- Abstraction <=> detail, representational, concrete
- Abstraction을 통해 프로그래밍의 복잡성을 해결할 수 있음.
- Process Abstraction vs Data Abstraction
1) Process Abstraction(Imperative 언어들, 거의 모든 언어긴 하지)
Fortran 이전의 Plankalkul이란 언어때부터 즉, 매우 오래 전부터 Process Abstraction은 존재했었음. (≡함수)
=> Subprogram(function)의 형태로 한 곳에 쭉 나열하는게 아니라 함수로 만들어서 기능별로 작성해두는 방식.
2) Data Abstraction(O.O.P에서 나온 개념)
변수, 함수들을 하나의 덩어리로 만들어서 하나의 데이터 타입으로 쓰는 방식.
11.2. Data Abstraction이란?
- Abstraction Data Type(ADT)(=class) = 하나의 Data Type(변수), 그에 대한 연산을 정의한 SubProgram(=메소드)을 하나의 덩어리로 만든 것.
1. Encapsulation
2. Information Hiding
- Process Abstraction의 문제였던 Side Effect...(자기 변수 이외의 변수를 건드림)
1. 전역변수를 건들기
2. Call-by-reference
-> coupling 문제(서로 얽히는 것.) 발생함.
∴ 객체 지향 개념이 생겨났음.
1. Encapsulation을 통해 데이터가 하나의 덩어리가 되어서 그것을 바꿀 수 있는 것은 클래스 안의 메소드 뿐!
2. Information Hiding을 통해 데이터의 접근을 제한(private, public 등)함!
아하~!
11.2.2. user-defined abstract type
- class에 선언되어 있는 필드나 메소드를 사용할 수 있음.
- 'protocol'(=API, Interface) 역할임. => 호출자와 피호출자 간의 Interface
- client에서 class에 직접 접근할 수는 없고 제공받는 메소드, 필드만을 사용 가능함. => Reliability 증가
11.3.Design Issues for Abstract Data Types
- prototype(=specification)=> Interface class와 같은 것으로, 직접 모든게 구현되어 있지 않은 부분. <=> Implementaion
- 객체는 보이는 부분과 안 보이는 부분으로 나누어져 있다.
1. Iterator(반복자), 2. Accessor(접근 제한자), 3. Constructor, 4. Destructor
11.4. 예시 언어들
- SIMULA67 -> Smalltalk80 -> ...(O.O.P 언어들)
1. C++(C+O.O개념/기능)
- 접근 제한자 : private, protected, public
- constructor : 멤버 타입명(ex) Stack stk ), destructor : delete(delete stk)
- .h : Specification vs .cpp : Implementation
2.Objective-C
- Interface <=> Implementation
(prototype <=> definition)
3. Java
class(일반 클래스)
Interface class(Implementation)
Abstract class(구현이 덜 된 class)
C++하고 다른 점은 독립된 class가 없다.(모든 class는 누군가로부터 상속을 받는다. Object class(root class)로부터 상속을 받아 내려온다.)
- 프로그래머가 deallocate 할 일이 없음. 가비지 콜렉터가 있으므로~ => dangling pointer 문제, 가비지 문제 걱정X
'대학 전공 공부 > 프로그래밍 언어' 카테고리의 다른 글
13. Concurrency(병렬 처리) (0) | 2022.05.27 |
---|---|
12. Support for Object-Oriented Programming (0) | 2022.05.02 |
2. Evolution of the Major Programming Languages (0) | 2022.05.02 |
1. Preliminaries(소개 글) (0) | 2022.05.01 |