'CS/OOP'에 해당되는 글 1건

  1. 2020.01.19 OOP 요약
2020. 1. 19. 17:27

1. OOP 개념
2. 추상화
3. 캡슐화
4. 상속
5. 다형성
6. 동적바인딩

 

1. Object-Oriented Programming 개념

- 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나로 기존의 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다.

 

- class, 클래스

: 같은 종류의 집단에 속하는 속성(attribute)행위(behavior)를 정의한 것.

 

- object, 객체

:  클래스의 인스턴스(실제로 메모리상에 할당된 것).

 

- OOP 장점

a) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이

b) 코드 재사용이 용이

c) 대규모 소프트웨어 개발에 적합

d) 소프트웨어 유지보수 편리

 

- OOP 단점

a) 객체가 너무 많으면 용량이 커질 수 있음

b) 설계시 많은 시간과 노력이 필요

 

- 특징

a) abstraction

b) encapsulation

c) inheritance

d) polymorphism

e) dynamic dispatch

 

2. Abstraction, 추상화

- 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것.

자료 추상화를 통해 정의된 자료형을 추상 자료형( ADT, abstract data type)이라고 한다.

 

3. Encapsulation, 캡슐화

- 객체의 구성요소를 캡슐로 싸서 외부의 접근으로부터 데이터를 보호하고 볼 수 없게 하는 것

 

- 자료형의 자료 표현과 자료형의 연산을 캡슐화함으로써 추상 자료형을 정의하고 접근 제어를 통해서 자료형의 정보를 은닉할 수 있다.

 

- 접근제어자

a) private

b) public

c) protected

 

4. Inheritance, 상속

- 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능.

 

- 상속을 받는 새로운 클래스를 부클래스, 파생 클래스, 하위 클래스, 자식 클래스 라고 한고,
  상속하는 기존의 클래스를 기반 클래스, 상위 클래스, 부모 클래스라고 한다

 

5. polymorphism, 다형성

- 다형성 개념이란 어떤 한 요소에 여러 개념을 넣어 놓는 것으로 하나의 같은 메소드(메소드 이름이 같은)가 상황에 따라 다른 기능을 하는 것.

 

- 오버라이딩 : 같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것

 

- 오버로딩 : 같은 이름의 메소드가 인자의 개수나 자료형에 따라서 다른 기능을 하는 것

 

6. Dynamic Dispatch, 동적 바인딩

- 동적 바인딩은 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩으로 컴파일 시간에 완료되어 변화하지 않는 정적 바인딩과 대비되는 개념이다. 동적 바인딩은 프로그램의 한 개체나 기호를 실행 과정에 여러 속성이나 연산에 바인딩함으로써 다형성을 실현한다.

ex) 상속관계의 두 인스턴스가 각각 오버라이딩된 메서드를 호출한다. 이때 메서드는 컴파일 시간이 아닌 런타임 시간에 결정된다.

 

Posted by yongminLEE