절차지향 프로그래밍
- 큰 문제를 작은 문제 단위로 쪼개어 순차적으로 진행되는 형태
객체지향 프로그래밍
- 기능 단위로 구분하여 각 기능들을 조립하여 하나의 프로그래밍을 만드는 형태
등장배경
하드웨어가 빨라지고 대용량화 되는 시기에 소프트웨어가 하드웨어의 성장을 따라가기 힘든 상황이 발생하였고 그 상황이 바로 소프트웨어의 위기이다
그에 따라 소프트웨어의 대응책으로 여러 가지 개발방법이 생겨 났고 그 중에 가장 탁월한 기법인 객체지향적 프로그래밍(Object Oriented Programming)방식이다
객체지향적 프로그래밍(Object Oriented Programming) 특징
캡슐화 ( Encapsulation )
- 데이터와 기능을 하나의 단위로 묶는 과정
Why?
- 독립적이며 프로그램의 부품으로 활용
정보 은폐 ( Information Hiding )
- 외부에서 사용하는 기능만 제공하고 나머지는 숨기는 것
Why?
- 객체의 손상을 방지하기 위해서
추상화 ( Abstraction )
- 캡슐화와 정보 은폐를 통해 외부의 사용자에게 제공하는 인터페이스를 설계하는 과정
Why?
- 객체의 효율적이고 안전한 사용을 위해서
상속 ( Inheritance )
- 추상화를 통해 만들어진 기본 클래스 ( Based Class )를 기반으로 모든 속성이나 기능을 물려 받아 새로운 클래스를 만드는 것. ( 파생 클래스 : Derived Class )
Why?
- 필요한 기능을 추가 / 변경 / 제거 하여 새로운 클래스를 만들 수 있기 때문에
다형성 ( Polymorphism )
- 똑같은 호출이라도 상황에 따라 같거나 다른 동작을 수행 하는 것.
Why?
- 코드의 일관성
접근지시자 ( Access Specifier )
- 클래스 멤버들의 허용 범위를 지정하는 것
-
클래스의 기본 접근권한은 private
|
클래스 내부 |
상속 클래스 |
외부 클래스 |
public |
가능 |
가능 |
가능 |
protected |
가능 |
가능 |
불가능 |
private |
가능 |
불가능 |
불가능 |