자바의 객체 지향 프로그래밍
2024. 2. 6. 03:31ㆍJava
반응형
객체 지향 프로그래밍이란?
객체 지향 프로그래밍 (Object Oriented Programming) 이란 자바 프로그램의 핵심 개념이다.
이는 프로그램을 클래스 (Class) 와 객체 (Object) 를 이용해 설계하는 것을 말한다.
또한 ‘객체’ 라는 단어 안에 데이터 제어와 메서드 접근 제어 설계를 포함하고 있기도 하다.
먼저, 생소한 용어들을 하나씩 정리해야 한다.
관련 용어 정리
클래스 (Class)
- 클래스는 객체의 설계도이다.
- https://gigyesik.tistory.com/211
인터페이스 (Interface)
- 인터페이스는 클래스의 설계도이다.
- https://gigyesik.tistory.com/214
객체 (Object)
- 객체는 상태와 행동을 갖는 OOP의 핵심 단위이다.
- https://gigyesik.tistory.com/211
상속 (Inheritance)
- 상속은 연관성 있는 클래스, 인터페이스 사이에 계층을 형성하여 코드를 재사용하는 기법이다.
- https://gigyesik.tistory.com/215
다형성 (Polimorphism)
- 다형성은 객체의 표현이 여러 가지로 다양화될 수 있는 자바의 패턴적 특성이다.
- https://gigyesik.tistory.com/216
추상화 (Abstraction)
- 추상화는 객체를 껍데기만 만들어 코드를 재활용하고, 사용자에게 내부 구현보다는 외부 기능에 집중할 수 있게 해주는 기법이다.
- https://gigyesik.tistory.com/217
캡슐화 (Encapsulation)
- 캡슐화는 접근 제어자와 getter, setter를 활용하여 외부 클래스에서의 접근을 제어할 코드를 하나로 묶는 기법니다.
- https://gigyesik.tistory.com/218
그래서 OOP는 무엇인가
객체를 프로그래밍의 주요 관심사로 하는 프로그래밍 기법이다.
즉 어떤 실체의 속성과 행동을 정의하고, 닮은 속성과 감출 속성, 그리고 바뀌는 속성 등 현실 세계의 실체와 유사한 동작을 구현하는 것을 목표로 한다.
객체의 메서드를 정의하려면 다음과 같은 용어의 이해가 필요하다.
- 접근 제어자 (Accedd Modifier) : 메서드에 접근할 수 있는 클래스의 범위를 정의한다.
- public : 앱 내 어떤 클래스에서도 접근 가능
- protected : 같은 패키지 또는 자식 클래스에서만 접근 가능
- private : 메서드를 정의한 클래스에서만 접근 가능
- default (생략 가능) : 같은 패키지 내 클래스에서 접근 가능
- 반환 타입 (Return Type) : 메서드가 반환할 데이터 유형. 반환하지 않는 경우 void
- 메서드 이름 (Method Name) : 메서드를 호출할 이름
- 파라미터 (Parameter List) : 메서드에 제공할 입력값. 메서드 이름 뒤의 괄호에 입력
- 예외 (Exception List) : 메서드 실행 중 발생할 것으로 예상되는 예외들
- 본문 (Method Body) : 코드 블록. 중괄호로 둘러싸여 있으며, 메서드의 기능을 정의
그 밖의 OOP 를 이해하는데 도움이 되는 용어들
커플링 (Coupling)
- 하나의 클래스가 다른 클래스에게 갖는 의존도
- 다른 클래스의 정보를 상세하게 기술할수록 의존성이 강하다
- 인터페이스 (Interface) 를 사용하여 구현을 추상화함으로써 의존도를 낮출 수 있다.
응집도 (Cohesion)
- 한 묶음의 코드가 단일성을 갖는 코드로 이루어져 독립성을 갖는 것
- 응집도가 낮은 코드는 여러 개의 부분으로 쪼개질 수 있다.
- 패키지 (Package) 를 사용하여 갖은 용도의 코드를 분류함으로써 응집도를 높일 수 있다.
관계 모델 (Association)
- 객체끼리의 포함관계
- One to One
- One to Many
- Many to One
- Many to Many
- 상속 (Inheritance) 을 사용하여 객체간 포함관계를 정의하고 코드 재사용성을 높일 수 있다.
Resources
반응형
'Java' 카테고리의 다른 글
자바의 HTTP 통신 라이브러리 (0) | 2024.02.09 |
---|---|
자바의 파일 입출력 (0) | 2024.02.09 |
자바의 캡슐화 (2) | 2024.02.06 |
자바의 추상화 (1) | 2024.02.06 |
자바의 다형성 (0) | 2024.02.04 |