[Java] 객체지향이란?

2022. 5. 16. 14:35·Java

객체지향이란?

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

 

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

 

OOP의 4가지 특징

추상화

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

캡슐화

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

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

상속

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

다형성

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

 

좋은 객체지향 설계

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

  • 응집도란 모듈에 포함된 내부 요소들이 연관되어 있는 정도로, 변경이 발생할 때 모듈 내에서 발생하는 변경의 정도를 의미한다.
  • 결합도란 모듈간의 의존성의 정도로, 하나의 모듈의 수정되기 위해 함께 수정되어야 하는 정도를 의미한다.
저작자표시 (새창열림)
'Java' 카테고리의 다른 글
  • [Java 필수 문법] 1. 정수형, 부동소수형 데이터 타입
  • [Java] SOLID란?
  • [Java] GC란?
  • [Java] JVM, JRE, JDK
김행만
김행만
이모저모 다 적기
  • 김행만
    hyeinisfree
    김행만
  • 전체
    오늘
    어제
    • 분류 전체보기 (41)
      • AWS (0)
      • Network (6)
      • CICD (1)
      • Spring (0)
      • Ruby on Rails (0)
      • Java (12)
      • Python (1)
      • Computer Science (6)
        • Algorithm (2)
        • Data Structure (3)
        • Database (0)
        • Design Pattern (1)
      • Solving Algorithm Problem (12)
        • LeetCode (12)
        • Programmers (0)
      • 자격증 (1)
      • Tip (1)
      • Etc (1)
        • 도서, 강의 (1)
        • Talk (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Network
    CISCO
    Packet Tracer
    java 필수 문법
    cisco packet tracer
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
김행만
[Java] 객체지향이란?
상단으로

티스토리툴바