: 구체적, 추상적인 데이터의 단위
코드 재사용 용이 : 남이 만든 코드를 가져와 이용할 수 있으며, 상속을 통해 확장하여 사용도 가능
유지 보수가 쉬움 : 수정할 부분을 찾기 쉬움
높은 안정성 : 클래스 단위로 모듈화시켜서 개발할 수 있으므로, 여러 회사에서 프로젝트를 개발할 때 업무를 분담하기 쉬움
처리속도가 상대적으로 느림
객체가 많으면 용량이 커짐
설계시 많은 시간과 노력이 필요함
추상화 (Abstraction)
: 어떤 실체로부터 공통적인 부분이나 관심있는 특성들만 한 곳에 모으는 것
캡슐화 (Encapsulation)
: 비슷한 역할을 하는 속성과 메소드들을 하나의 클래스로 모은 것. 즉, 변수와 함수를 하나로 묶은 것
데이터에 외부에서 직접 접근할 수 없고, 오로지 함수를 통해서만 접근 가능
정보 은닉 : 캡슐 내부의 로직이나 변수들을 감추고, 외부에는 기능(API)만을 제공하는 것
상속 (Inherutance)
: 클래스의 재사용
하위클래스가 상위클래스를 상속받으면, 상위 클래스의 멤버변수나 메소드를 그대로 물려받을 수 있다.
상속으로 인해 코드 재활용 가능 ➡ 생산성 증가 + 유지보수 용이
다형성 (Polymorphism)
: 같은 모양의 함수가 상황에 따라 다르게 동작하는 것
오버라이딩(Overriding) : 상위클래스의 메소드를 하위클래스에서 똑같은 이름으로 재정의하는 것(덮어씌우기)
오버로딩(Overloading) : 함수의 매개변수의 개수/타입 등을 달리 해서 다르게 사용하는 것
: 단일 책임 원칙
: 개방 폐쇄 원칙
: 리스코프 치환 원칙
: 인터페이스 분리 원칙
: 의존 역전 원칙