CheerUp_Cheers

개체지향 프로그래밍의 필요성 본문

인프런/개체지향 프로그래밍 및 설계 (Java)

개체지향 프로그래밍의 필요성

meorimori 2020. 11. 25. 16:07

#개체

-구조

 관련있는 기능끼리 모음.

 상태(변수,데이터)

 동작(함수)

 

#모든것이 개체는 아니다.

장부의 원금,수입,지출,총액 등, 데이터(순수 상태, 순수기능)만 있는 애들.

 -> 이런애들은 절차적으로 처리하면 됨..

 

 


OOP

프로그래밍 패러다임 중 하나
프로그램을 구성하는 기본 요소를 개체로 보려는 노력

 

#OOP에서 프로그램이란?

 상호작용하는 개체들의 집합

 

#절차적 VS 개체지향

- 절차적 프로그래밍

 입력 -> 처리 -> 출력

 실제 하드웨어가 돌아가는 방식(객관적).

 

- 개체지향 프로그래밍

 개체가 개체를 바꾸는게 아니고, 개체가 메시지를 통해 스스로 명령을 수행하고 상태 변경

 기계처럼이 아닌 사람처럼(주관적임) 생각하자.

 기술이 발전함에 따라 사고방식도 변함

  -> 기준이 애매하다.

 

#OOP의 4대 특성

- 캡슐화, 상속, 다형성, 추상화

+) 연관, 컴포지션, 집합 [ 7대 개념 ]

 

1) 캡슐화

 정보은닉 : 개체 안의 데이터를 외부로부터 보호.

 전부, 혹은 일부

 

2) 상속

 이미 존재하는 개체를 기반으로 확장된 개체를 만드는 방법.

 확장된 개체에 데이터나 동작을 추가 가능.

 - 실용적인 용도

  코드 중복을 막음(공통되는 부분을 가져와서 재활용 및 추가)

  -> 점진적 진화로 효율적.

 

3) 다형성

 많은 사람들이 OOP의 핵심이라 여기는 특징

 같은 지시를 내렸는데도 다른종류의 개체가 동작을 달리하는 것.

  -> 동일한 함수 호출해도 각각 다른 동작

 

 - 만약 절차적이였따면 if를 통해서 누가 요청한건지 봐야했음.

 

 - 실용적인 용도

  다른 종류의 개체를 편하게 저장 및 처리 가능.

  부모 형에 자식들을 저장.

 

4) (데이터) 추상화

일반화.

 

 - 데이터 추상화

 개체 사용시 그 안의 어떤 데이터가 있는지는 알필요 없다.

 접근도 못해(캡슐화의 개념)

 

 - 추상화

 다형성을 통한 추상화

 추상클래스나 인터페이스를 사용.