객체지향 프로그래밍(Object-oriented programming)
- 일반적으로는 프로그래밍 할 때는 가장 적합
- 사람은 사물을 객체로 바라본다
- C는 데이터와 함수가 나뉘어져 있어 이해하기 힘듬
- 객체지향으로 물체의 상태(데이터),동작(함수) 등을 표현하기 쉽다
- 객체와 객체간의 조합 하여 새롭게 추상화된 객체를 볼 수 있다.
- 객체 지향 이외에 특화된 방법
- 함수형 프로그래밍
- 데이터 기반 프로그래밍
- 데이터를 먼저 생각해서 프로그래밍 함.
- 머신러닝 할 때 잘 사용
- OOP의 핵심 개념 == "사람들이 세상을 바라보는 방식"
- 아인슈타인
"최대한 단순하게 만들어라, 정말 복잡해야 할 부분만 복잡하게 만들어라"
- OOP의 근본 원칙을 놓치지 말자
-> "사람의 직관력"
- OOP 가 복잡해졌다
- 닷컴 버블로 인해 채용된 실력 없는 개발자들
- 일부 디자인 패턴들
- 일부 객체지향 분석과 디자인
- "유지보수와 가독성"
- 기존에 잘 동작하는 클래스를 수정할 경우 버그를 발생 시킬 수 있다.???
- 좋은 프로그램은 기존 코드를 수정하지 않는 것이 아니라 얼마나 질 높은 테스트를 많이 하느냐에 달려 있다.
- 클래스를 수정하는 경우가 없을까??, 수정하는 대신 클래스를 더 덧붙일까??
-> 오늘날 현장에서는 불가능,
- "단순한 구조에서 디자인은 시작 되어야 한다. 그리고 정말 필요하다면 복잡한 디자인을 점진적으로 도입해야 한다."
- 다형성
- "런타임 도중에 객체 실행 행동을 달리 할 수 있도록 해준다."
CLASS
class Vector
{
int mX;
int mY;
};
class MyClass
{
public:
protected:
private:
};