경계의 경계

자바의 객체 지향 프로그래밍 본문

Java

자바의 객체 지향 프로그래밍

gigyesik 2024. 2. 6. 03:31

객체 지향 프로그래밍이란?

객체 지향 프로그래밍 (Object Oriented Programming) 이란 자바 프로그램의 핵심 개념이다.

이는 프로그램을 클래스 (Class) 와 객체 (Object) 를 이용해 설계하는 것을 말한다.

또한 ‘객체’ 라는 단어 안에 데이터 제어와 메서드 접근 제어 설계를 포함하고 있기도 하다.

먼저, 생소한 용어들을 하나씩 정리해야 한다.

관련 용어 정리

클래스 (Class)

인터페이스 (Interface)

객체 (Object)

상속 (Inheritance)

  • 상속은 연관성 있는 클래스, 인터페이스 사이에 계층을 형성하여 코드를 재사용하는 기법이다.
  • https://gigyesik.tistory.com/215

다형성 (Polimorphism)

추상화 (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