[JAVA]

객체 / 객체지향 프로그래밍의 특징

2021. 9. 13. 12:14
728x90
반응형

자바는 대표적인 객체지향 프로그래밍 (OOP: Object Oriented Programming)언어.

 

1. 객체란?

1) 정의

: 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별 가능한 것.

(예) 물리적으로 존재하는 사람, 책, 자동차, 추상적인 학과, 강의, 주문 등이 모두 객체가 될 수 있음.

 

2) 구성

- 객체는 크게 속성 과 동작으로 구성됨.

(예) 사람과 자동차

     -사람의 속성 : 이름, 성별 등

     -사람의 동작 : 먹다, 말하다, 웃다 등

 

     -자동차의 속성 : 색상, 모델명 등

     -자동차의 동작 : 달린다, 멈춘다 등 과 같다.

 

자바에서는 이러한 객체의 속성을 필드(field), 동작을 메소드(method)라고 부른다.

 

> 현실세계의 객체를 소프트웨어 객체로 설계하는 것을 객체모델링 이라고 하며,

현실세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메소드로 정의하는 과정 이라고 볼 수 있음.

 

 

3) 특징

- 객체들은 각각 독립적으로 존재하며, 다른 객체와 서로 상호작용 하며 동작함.

- 이때, 객체들 간의 상호작용 수단은 메소드.

  메소드 호출을 통해 다른 객체의 기능을 이용, 매개값(넘겨주는 값)과 리턴값(돌려받는 값)을 통해 데이터를 주고받기도 함.

 

- 객체는 개별적으로 사용될 수 있지만, 대부분 다른 객체와 관계를 맺고 있다.

관계의 종류는 크게 상속관계, 집합관계, 사용관계가 있다.
  • 상속관계는 상위(부모)객체를 기반으로 하위(자식)객체를 생성하는 관계를 말함. (예) 자전거는 교통수단이라는 상위객체의 하위객체가 될 수 있다.
  • 집합관계는 부품과 완성품으로 비유할 수 있는데, 여러 가지 부품들의 집합이 모여 하나의 완성품 객체를 완성한다.(예) 바퀴객체, 브레이크 객체, 핸들객체 등이 모여 자전거 객체가 된다.
  • 사용관계는 객체간의 상호작용을 말한다. (예) 사람객체는 달린다, 멈춘다 등의 메소드를 통하여 자전거 객체를 사용할 수 있다.

 

 

2. 객체지향 프로그래밍의 특징

- 캡슐화(Encapsulation) : 캡슐처럼 묶어 내부의 구조를 감추는 것을 말함.

외부에서는 내부의 구조를 알지 못하며, 객체가 노출하여 제공하는 필드와 메소드만 이용할 수 있음.

 

1) 캡슐화를 하는 주된 이유

 a. 공개하고 싶지 않은 내용의 보안성

 b. 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 한다.

 ▶ 중요한 부분이 밖으로 노출되어 있으면, 사용자의 실수로 인해 오류가 발생할 수 있음.

     자바에서는 접근제한자(Access Modifier)를 통해 캡슐화된 멤버의 사용범위를 제한함.

     접근제한자의 종류는 public, protected, private 등이 있다.

 

- 상속(Inheritance)

: 일반적으로 상속은 부모가 가지고 있는 재산을 물려주는 것을 뜻함.

하위객체는 상위객체를 재사용하여 쉽고 빠르게 설계할 수 있어, 반복된 코드의 중복을 줄여줌.

(개발의 효율성 ↑, 개발 소요시간↓)

 

- 다형성(Polymorphism)

: 다형성은 하나의 타입에 여러 객체를 대입하여 다양한 기능을 이용할 수 있도록 함.

부모 타입에는 모든 자식 객체가 대입될 수 있으며, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.



출처: https://devuna.tistory.com/3 [튜나 개발일기]

 

[자바(JAVA) 개념]- 객체 / 객체지향 프로그래밍의 특징

자바는 대표적인 객체지향 프로그래밍 (OOP: Object Oriented Programming)언어이다. 여기서, 객체란 무엇일까? 객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른

devuna.tistory.com

저작자표시 비영리 (새창열림)

'[JAVA]' 카테고리의 다른 글

Long과 long은 어떤 차이가 있는 걸까?  (0) 2023.11.03
자료형 정리  (2) 2023.10.31
try-catch-finally 말고 try-with-resources 사용법  (0) 2023.06.10
Anonymous Class - 익명 클래스, 무명 클래스  (0) 2021.09.13
화면으로부터 입력 받기 - Scanner, string 객체, equals()  (0) 2021.08.31
'[JAVA]' 카테고리의 다른 글
  • 자료형 정리
  • try-catch-finally 말고 try-with-resources 사용법
  • Anonymous Class - 익명 클래스, 무명 클래스
  • 화면으로부터 입력 받기 - Scanner, string 객체, equals()
hatch
hatch
250x250
hatch
차근차근 쌓아올리는,
hatch
전체
오늘
어제
  • 분류 전체보기 (121)
    • TIL (3)
    • [JAVA] (17)
      • 생활코딩 (11)
    • 모바일 (25)
      • android (24)
      • ReactNative (1)
    • 웹개발 (25)
      • React (3)
      • jQuery (5)
      • Springboot (2)
    • 알고리즘 (42)
    • [프로그래밍기초지식] (1)
    • [기술문서 읽기] (0)
      • 개념 번역 (0)
    • 인사이트(insight) (2)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • write
  • manger

공지사항

인기 글

태그

  • BufferedReader
  • 재귀
  • 타일링
  • jquery
  • 백준
  • 깊은복사
  • state
  • 210908
  • 중복리니어레이아웃
  • 명시적 인텐트
  • 별찍기
  • 반복문
  • DP
  • javascript
  • scanf
  • Doit!자바프로그래밍입문
  • 안드로이드프로그래밍6판
  • 노이클립스
  • 모프2주차
  • TIL

최근 댓글

최근 글

hELLO · Designed By 정상우.
hatch
객체 / 객체지향 프로그래밍의 특징
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.