<객체지향 프로그래밍> 객체 지향 특성
2019. 4. 5. 10:16ㆍ수업/Object-Oriented Programming
4장
1. Abstraction(추상화)
2. Encapsulation(캡슐화)
5장
3. Inheritance(상속)
4. Polymorphism(다형성)
절차 지향 프로그래밍: 목적을 달성하기 위한 일의 흐름에 중점
hit(사람 who, 사람 whom) {}
객체 지향 프로그래밍:
실제 세상 구현 >> 프로그램 모델링(modeling)
실제 세상의 물체 >> 객체
실제 세상 물체들의 관계 >> 객체들의 상호 작용 설계
각 객체를 클래스로 작성hit(사람 whom) { whom.boolean = true; } //사람 클래스 who 객체 안의 함수 hit
1. Abstraction(추상화)
(=) 필요한 것만 뽑아내는 것
- 패키지: 폴더(디렉토리)
- 클래스: 파일
- 필드(멤버 변수): state(특성 property)
(C에서 변수는 있고 함수가 없는 struct 사용) - 메소드(멤버 함수): behavior(행동)
!!결국 naming이 중요!!
2. Encapsulation(캡슐화)
: 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것
‘소스’라는 도구로 ‘프로그래머’라는 대상으로부터의 캡슐화
개발(모델링)을 설계하고 구현함으로써 실행을 실세계처럼 구현한다.
- C에서 변수와 함수가 각각 따로 묶여 있음
class가 관련 있는 변수와 함수들을 캡슐처럼 묶어준다.
3. Inheritance(상속)
: 하위 개체가 상위 개체의 속성을 모두 가지는 관계
: 서브 클래스(sub class)가 슈퍼 클래스(super class)의 속성(필드, 메소드)을 물려받고(재사용하고) 기능을 추가하여 확장(extend)하는 개념
= 객체(super type/class) <= 객체(sub type/class) (class는 데이터 타입)
- sub class가 super class를 상속하겠다고 한다면 super class의 변수나 함수를 사용할 수 있다.
- Generalization(일반화): 아래 계층(구체적인 것)부터 구성한 다음에 상위 계층을 생성한다.
- Specialization(구체화): 상위 라이브러리로부터 그 아래 구체적인 것을 내가 작성하는 것
UML(Unified Modeling Language)
4. Polymorphism(다형성)
: 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현되는 것(오버라이딩, 오버로딩)
morphism(=mapping) => 1:n대응(함수 호출 문에서 n가지의 함수 호출)
- 메소드 오버라이딩(overriding): 슈퍼 클래스에 구현된 메소드를, 서브 클래스에서 동일한 이름으로 자신의 특징에 맞게 다시 구현하는 것
- 메소드 오버로딩(overloading): 클래스 내에서 이름이 같지만 서로 다르게 동작하는 메소드를 여러 개 만드는 것
위 글의 1 -> 2 -> 3-> 4 순서로 앞의 것이 잘 되어야 뒤의 것을 잘 쓸 수 있다.
'수업 > Object-Oriented Programming' 카테고리의 다른 글
<객체지향 프로그래밍> Chapter 04 클래스와 객체 (0) | 2019.04.22 |
---|---|
<객체지향 프로그래밍> Ch03 반복문과 배열 그리고 예외 처리 (0) | 2019.04.12 |