본문 바로가기
Java

(Java) 객체지향 프로그래밍

by J_Remind 2020. 3. 18.

객체지향 프로그래밍(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