OOP 정의
객체 지향 프로그래밍은 프로그램을 구성하는데 있어 필요한 데이터나 기능을 객체
라는 단위로 나누고, 여러 객체들 간의 상호작용
을 통해 로직을 구성하는 프로그래밍 기법이라고 할 수 있습니다.
OPP의 장점
- 유지보수하기 용이하다.
- 코드 재사용이 가능하다.
- 큰 프로젝트 개발시 적합하다.
OPP의 단점
- 속도가 느리다.
- 객체를 정의하는 클래스가 많아지면 용량이 커진다.
- 설계시 많은 시간과 노력이 필요하다.
OPP의 특징
- 클래스와 인스턴스
클래스는 자바에서 객체 지향 프로그래밍을 위해 구분하는 가장 작은 단위입니다.
클래스라는건 객체를 생성하기 위한 설계도라고 말하고 싶습니다. 공통적인 상태나 기능을 소화하는 객체를 생성하는데 있어서 하나의 클래스로 미리 정의해 둔다면, 해당 클래스의 특징을 활용할 수 잇는 객체는 생성만 해서 활용할 수 있고 여러개의 객체를 생산할 때도 용이한 구조를 가질 수 있습니다.
- 추상화
- 여러 코드를 조합하고 구성해서 추상적인 기능을 할 수 있는 코드를 만들고 이를 하나의 클래스로 정의한다면, 코드의 구성을 사용자가 직접 보고 이해하지 않아도 클래스 그 자체로 하나의 기능을 소화시킬 수 있습니다.
- 캡슐화
복잡한 기능들은
Class
안으로 숨기고, 사용자가 알아보기 쉬운것만 바깥으로 꺼내놓는 것을 캡슐화라고 한다.클래스 내부에 선언된 변수나 메소드 중 외부로 노출시키면 안되는 내용은 숨기고, 접근을 제한시킬 수 있습니다. 이를 통해 코드의 보안성을 보장해 줄 수 있습니다.
- 상속
- 클래스 간에 상속이 가능합니다. 클래스 간에도 관계성에 따라 중복적으로 사용되는 코드들의 경우에는 상위 계층의 클래스로 묶어서 관리하면서 중ㅇ복 코드를 줄이고 필수 코드를 재사용할 수 있습니다.
- 다형성
- 같은 이름의 변수나 메소드라도 클래스의 용도에 따라 다른 결과를 리턴할 수 있도록 코드를 수정할 수 있습니다. 이는 프로그램 구성에 있어 유연성을 증가시켜 주는 장점이 있다고 할 수 있습니다.