일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swift문법
- 애플 아카데미 후기
- Swift 디자인패턴
- ObservedObject
- 네이버 치지직
- 네이버 부스트캠프
- iOS 개발 오류
- Swift 문법
- sqoop
- 소프트웨어분석및설계
- 앱 비교 프로젝트
- 제앱소
- 데이터베이스
- StateObject
- Swift 기능
- 숭실대
- SWIFT
- global soop
- useReducer
- 데이터베이스 공부
- react
- ObservableObject
- Apple Developer Academy @ POSTECH
- 애플 디벨로퍼 아카데미 21주차 회고
- 애플 디벨로퍼 아카데미 후기
- OS
- 치지직
- 운영체제
- 애플 디벨로퍼 아카데미
- apple developer academy 후기
- Today
- Total
사과하는 제라스
12. Support for Object-Oriented Programming 본문
목차
<객체 지향 언어들이 제공해야 될 기능들이 무엇인가>
12.1. Introduction
- COBOL, LISP 등의 언어들이 처음 나왔을 시기엔 OOP 개념과 거리가 있었으나, 최근의 언어들이 거의 대부분 OOP 개념을 탑재하였음.
12.2. O.O.P
- 객체 지향 개념이 처음 제안된건 SIMULA67, but 실질적으로 발전되기 시작한건 Smalltalk80이다.
- 객체 지향 언어의 최소한의 제공 기능 조건
1. ADT(Abstract Data Type)(=class) -> 11장에서 배운 내용 그대로임.
2. Inheritance -> 목적은 Customizing(modification(1. override, 2. add new member)을 통해 reuse된다.)
3. Dynamic Binding(=Run-time Binding)(polymorphism)
-Software Engineering의 Productivity
1. Reuse(재사용)
2. Automation(자동화)
12.2.2. Inheritance(상속)
1. 메소드, 변수 추가 가능
2. 메소드 변경(by Overriding)
3. private으로 선언된 클래스는 클래스 내에서만 접근 가능
instance method, variable
vs
class method(class에서 인스턴스 없이 호출 가능), variable(클래스에서만 존재하는 변수)
- Java에선 multiple inheritance(다중 상속) 불가능, C++은 다중 상속 가능.
12.2.3. Dynamic Binding(=Dispatch)
: Polymorphism(다형성)의 일종임. 즉, Polymorphism을 제공하기 위해서는 Dynamic Binding이 필수적임.
그래서 Dynamic Binding이 뭔데?(다음이 예시)
--------------------------------------------------------------------------------------------------------
sort(int s1)
sort(char s2)
sort(float s3)
이렇게 Overloading해두면
sort(mydata) <- Actual parameter(위에서는 mydata)의 타입을 보고 런타임 중에 결정된다.
--------------------------------------------------------------------------------------------------------
- 부모 클래스를 참조하는 객체는 자식 클래스 또한 참조할 수 있음.(polymorphic reference)
-> 무엇을 참조하냐는 런타임 시 포인터가 어떤 것을 가리키고 있냐에 따라 결정됨.
ex)
부모 클래스 A를 상속한 자식 클래스 B가 있을 때 A의 참조 변수로 B의 멤버에 접근할 수 있다.
(단, B에서 상속한 내용이 아닌 멤버에 대해서는 접근 불가능하다.)
- Abstract class(추상 클래스)에는 instance를 만들 수 없다.
자체적으로 객체를 생성할 수 없기에 '상속'을 통해 자식 클래스에서 인스턴스를 생성해야 한다.
'대학 전공 공부 > 프로그래밍 언어' 카테고리의 다른 글
13. Concurrency(병렬 처리) (0) | 2022.05.27 |
---|---|
11. Abstract Data Types and Encapsulation Constructs (0) | 2022.05.02 |
2. Evolution of the Major Programming Languages (0) | 2022.05.02 |
1. Preliminaries(소개 글) (0) | 2022.05.01 |