CheerUp_Cheers
개체지향 프로그래밍의 필요성 본문
#개체
-구조
관련있는 기능끼리 모음.
상태(변수,데이터)
동작(함수)
#모든것이 개체는 아니다.
장부의 원금,수입,지출,총액 등, 데이터(순수 상태, 순수기능)만 있는 애들.
-> 이런애들은 절차적으로 처리하면 됨..
OOP
프로그래밍 패러다임 중 하나
프로그램을 구성하는 기본 요소를 개체로 보려는 노력
#OOP에서 프로그램이란?
상호작용하는 개체들의 집합
#절차적 VS 개체지향
- 절차적 프로그래밍
입력 -> 처리 -> 출력
실제 하드웨어가 돌아가는 방식(객관적).
- 개체지향 프로그래밍
개체가 개체를 바꾸는게 아니고, 개체가 메시지를 통해 스스로 명령을 수행하고 상태 변경
기계처럼이 아닌 사람처럼(주관적임) 생각하자.
기술이 발전함에 따라 사고방식도 변함
-> 기준이 애매하다.
#OOP의 4대 특성
- 캡슐화, 상속, 다형성, 추상화
+) 연관, 컴포지션, 집합 [ 7대 개념 ]
1) 캡슐화
정보은닉 : 개체 안의 데이터를 외부로부터 보호.
전부, 혹은 일부
2) 상속
이미 존재하는 개체를 기반으로 확장된 개체를 만드는 방법.
확장된 개체에 데이터나 동작을 추가 가능.
- 실용적인 용도
코드 중복을 막음(공통되는 부분을 가져와서 재활용 및 추가)
-> 점진적 진화로 효율적.
3) 다형성
많은 사람들이 OOP의 핵심이라 여기는 특징
같은 지시를 내렸는데도 다른종류의 개체가 동작을 달리하는 것.
-> 동일한 함수 호출해도 각각 다른 동작
- 만약 절차적이였따면 if를 통해서 누가 요청한건지 봐야했음.
- 실용적인 용도
다른 종류의 개체를 편하게 저장 및 처리 가능.
부모 형에 자식들을 저장.
4) (데이터) 추상화
일반화.
- 데이터 추상화
개체 사용시 그 안의 어떤 데이터가 있는지는 알필요 없다.
접근도 못해(캡슐화의 개념)
- 추상화
다형성을 통한 추상화
추상클래스나 인터페이스를 사용.
'인프런 > 개체지향 프로그래밍 및 설계 (Java)' 카테고리의 다른 글
Static, 싱글턴, 내포 클래스 - 디자인 패턴 (0) | 2020.12.01 |
---|---|
Static, 싱글턴, 내포 클래스 (0) | 2020.11.26 |
개체 모델링1 (0) | 2020.11.26 |
클래스 (0) | 2020.11.25 |
자바 언어의 기본 문법 (0) | 2020.11.25 |