객체지향 프로그래밍(Object Oriented Programming)
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법
객체지향 프로그래밍 장점
- 코드 재사용이 용이
- 클래스 상속을 통해 확장해서 사용할 수 있음
- 유지보수가 쉬움
- 클래스 내부 멤버의 변수나 메서드 부분만 수정하면 됨
- 대형 프로젝트에 적합
- 클래스 단위로 모듈화시켜 개발할 수 있어 대형 프로젝트에서 업무 분담하기 쉬움
객체지향 프로그래밍 단점
- 처리속도가 상대적으로 느림
- 객체가 많으면 용량이 커짐
- 설계시 많은 시간과 노력이 필요
기본 구성 요소
- 클래스
- 같은 집단에 속하는 속성(attribute)과 행위(behavior)를 변수와 메소드로 정의한 것
- 메모리에 할당되지 않은 상태
- 객체
- 클래스의 인스턴스로 실제로 메모리에 할당된 것
- 메서드
- 클래스로부터 생성된 객체를 사용하는 방법
- 객체에 명령을 내리는 메시지
객체지향 프로그래밍 특징
- 추상화
- 객체에서 공통된 속성과 행위를 추출하는 것을 추상화라고 함
- 상속
- 상위 클래스의 특징을 하위 클래스에서 물려 받는 것
- 프로그램을 개발하다 보면 중복되는 속성과 기능을 개발해야하는 일이 발생하는데 상속을 통해 중복되는 기능을 반복하여 작업하지 않게 함
- 다형성
- 하나의 객체가 여러가지 타입을 가지는 것
- 동일한 변수, 함수명 등이 다양한 방법으로 기능하는 것
- 캡슐화
- 연관있는 변수와 메소드를 묶어주는 작업
- 접근 제어 지시자(public, private, protected)를 통해 외부로부터의 접근을 제한 함, 이를 통해 정보은닉을 함
'Java' 카테고리의 다른 글
ZipOutputStream vs ZipArchiveOutputStream (3) | 2024.11.08 |
---|---|
FileInputStream vs BufferedInputStream (0) | 2024.11.03 |
JDK Dynamic Proxy와 CGLIB (0) | 2024.07.30 |
Java Collections Framework (0) | 2020.03.25 |
(Java) JVM 메모리 구조 (0) | 2020.03.18 |