객체 : 세상에 존재하는 모든것, 프로그래밍에서의 객체는 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹
- 코드 재사용성 증가
상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있음
- 생산성 향상
잘 설계된 클래스를 만들어 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킨다. 효율적인 개발 가능.
- 자연적 모델링 가능
일상생활의 구조가 객체지향 개념에 잘 녹아들어 생각하는 것을 자연스럽게 구현할 수 있다.- 유지보수의 우수성
캡슐화를 통해 프로그램 수정시 주변의 영향이 적어 유지보수가 쉽다.
- 개발 속도가 느리다
객체가 처리하려는 것에 대한 정확한 이해가 필요해 설계 단계부터 많은 시간이 소모된다.
- 실행속도가 느리다
- 난이도 상승
다중 상속이 지원되는 언어인 경우 코드가 복잡해진다
(자동차를 예시로 한다)
클래스(Class) : 객체를 만들어 내기 위한 설계도 혹은 틀. 자동차의 설계도
인스턴스(Instance) : 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
객체(Object) : 설계도로 구현한 모든 대상. 클래스 타입으로 선언되었을 때는 객체라고 부르고, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.
메서드(Method) : 기능
클래스 메서드(Class Method) : 클래스에 속하지만 특정 인스턴스에 묶이지는 않는 기능. 시동을 거는 기능은 클래스 메서드이다.
생성자(Constructor) : 인스턴스를 새로 만들 때는 생성자 실행. 생성자는 객체 인스턴스를 초기화.