객체지향 프로그래밍

(Object Oriented Programming)

OOP

- OOP (Object Oriented Programming) 은 ‘Object’ 라는 ‘객체’ 개념을 사용하여, 소프트웨어를 설계하고, 구성하는 프로그래밍 패러다임

- 전통적인 ‘절차지향 프로그래밍(Procedural Programming)’ 에서 ‘객체지향 프로그래밍(Object Oriented Programming)’ 으로 변화함

- OOP는 실제세상에 가깝게 모델링하며, 객체간의 상호작용으로 표현합니다.

- Classes 와 Objets의 집합으로 프로그램을 작성합니다.

- 각 Object는 ‘Message’를 받고, 처리하고, 전달이 가능합니다.

##### 🟢 별도의 역할이나 책임을 갖는 작은 독립적인 기계 또는 부품으로 볼 수 있습니다.


OOP의 3대 특징

1. 캡슐화 (Encapsulation)

- 관련된 데이터와 알고리즘을 하나의 덩어리로 묶는 것
- Method와 데이터를 Class 내에서 선언하고 구현

- 외부에서 공개된 Method의 Interface에만 접근가능하여 보안, 보호, 외부접근을 제한 합니다.

##### 🟢 캡슐약, TV, 자판기, 카메라, 인체 등

2. 상속 (Inheritatance)

- 이미 작성된 Class (부모클래스)를 이어받아 new Class()를 생성하는 기법으로, 기존의 코드를 재활용하기 위함입니다.

3. 다형성 (Polymorphism)

- 동일한 이름으로 많은 상황에 대처하기 위한 방법으로 Class명은 다르지만 그 안에 있는 State를 동일하게 사용할 수 있는 방법

Class & Object

Class

  • 데이터 변수와 멤버 함수를 모두 보유하는데 사용
  • 다른 Class의 속성을 상속할 수 있다.
  • 사용자 정의 객체를 생성할 수 있다.
  • 대량의 데이터와 복잡한 Application에 사용 가능

Object

  • 데이터 조작에 사용
  • 데이터 멤버와 멤버함수가 원하는 작업을 수핼할 수 있다.
  • 수락된 메세지 유형과 반환된 응답유형을 알 수 있다.

주요 차이점

  • Class 는 프로그램에서 Object를 생성하기 위한 ‘템플릿 (청사진)’이며, 객체는 Class의 Instance와 같다
  • Class 는 한 번만 선언할 수 있지만, 둘 이상의 Object를 새성할 수 있다.
  • Class 는 값을 가질 수 없지만, Object는 값을 가질 수 있다.
  • Class는 메모리할당이 되지 않지만, Object는 메모리에 할당이 된다.