본문 바로가기
Programming language/Java

[Java] 객체지향이란?

by hyeinisfree 2022. 5. 16.

객체지향이란?

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 실제 세상에 가깝게 모델링하는 컴퓨터 프로그래밍 패러다임 중 하나로, 실제 세계의 데이터를 추상화 시켜 프로그래밍에서 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용으로 구성하는 프로그래밍 방법이다.

 

객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

 

OOP의 4가지 특징

추상화

구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것이다. 즉 객첵들의 공통적인 특징(속성, 기능)을 모아 하나의 클래스로 만드는 것을 의미한다. 이때 각 객체의 구체적인 개념에 의존하지 말고 추상적인 개념에 의존해야 설계를 유연하게 변경할 수 있다.

캡슐화

관련된 필드와 메서드를 하나의 캡슐처럼 포장해 세부 내용을 외부에서 알 수 없도록 감추는 것이다. 캡슐화의 주목적은 내부 데이터를 숨겨서 외부 영향에서 벗어나는 것이다.

💡 캡슐화와 은닉화의 차이
은닉화는 캡슐화를 통해 얻어지는 실제 구현 내용 일부를 외부에 감추는 효과이다. 캡슐화를 통해 객체의 속성과 행위를 하나로 묶고 세부 내용을 외부에서 알 수 없도록 하기 때문에 정보 은닉의 효과를 얻을 수 있는 것이다.

상속

자녀가 부모 재산을 상속받아 사용하듯이 객체 지향 프로그래밍에서는 상위 객체를 상속받은 하위 객체가 상위 객체의 메서드와 필드를 사용할 수 있다.

다형성

대입되는 객체에 따라서 메서드를 다르게 동작하도록 구현하는 기술이다. 이는 실행 도중 동일한 이름의 다양한 구현체 중에서 메서드를 선택할 수 있다는 것을 의미한다.

 

좋은 객체지향 설계

객체지향 프로그래밍에서 좋은 설계란, 응집도가 높고 결합도가 낮은 설계를 말한다. 

  • 응집도란 모듈에 포함된 내부 요소들이 연관되어 있는 정도로, 변경이 발생할 때 모듈 내에서 발생하는 변경의 정도를 의미한다.
  • 결합도란 모듈간의 의존성의 정도로, 하나의 모듈의 수정되기 위해 함께 수정되어야 하는 정도를 의미한다.

'Programming language > Java' 카테고리의 다른 글

[Java] SOLID란?  (0) 2022.05.16
[Java] GC란?  (0) 2022.05.12
[Java] JVM, JRE, JDK  (0) 2022.05.12
[Java] JIT 컴파일러란?  (1) 2022.05.09
[Java] JVM이란?  (0) 2022.05.05

댓글