OOP(객체 지향 프로그래밍)은 컴퓨터 프로그래밍의 패러다임 중 하나로, 필요한 데이터를 상태와 행위를 가진 객체로 만들어 다른 객체와 연결하여 사용하는 방법이다. 연결된 각 객체들은 서로 정보를 주고 받을 수 있다.
장점
코드 재사용이 용이하다.
유지보수가 쉽다.
큰 프로젝트에 적합하다.
단점
처리속도가 느리다.
차지하는 용량이 많아진다.
설계할때 많은 시간과 노력이 든다.
Encapsulation(캡슐화)외부에서 속성들을 캡슐화 한다.
따로 선언된 내용과 함수들(절차지향)을 class라는 하나의 객체(객체지향)로 묶는다. 쉽게 말해 따로 흩어져있는 정보들을 하나의 캡슐에 담는다고 생각하면 된다.
Inheritance(상속)
부모의 특징을 그대로 물려받는다.
추가되거나 업그레이드, 변경된 부분들을 제외하고 부모와 동일한 속성을 가진다. 이후 자식에서 특정부분만 따로 수정할 수 있다.
상->중->하로 물려주는 객체가 있을 때 상에서 수정한 부분은 중,하 둘 다 수정이되고 중에서 수정한 부분은 상에는 영향을 주지않으나 하는 수정이 된다. 하는 최하위객체로 수정하여도 상,중 변화가 없다.
Abstraction(추상화)
안은 복잡하나 겉에서 보이는 부분은 간단하다.(simpler Intertace)
불필요한 정보는 보여주지 않고 중요한 정보만을 표현한다.
예를 들어, 전화기가 있으면 전화기 내부는 매우 복잡한 구조를 가지고 있다. 하지만 실사용하는 입장에서 본다면 전화기는 그저 번호를 입력하여 다른 사람과 통화를 할 수 있게 해주는 기계이고 그 동작이 어떻게 진행되는지 알 필요는 없다.
Polymorphism(다형성)
여러가지 형태이다. 하나의 변수명과 함수명 등이 상황에 따라 다른 의미로 해석될 수 있다.