JAVA

[JAVA] 객체지향 프로그래밍 이해하기 (1)

개발 공주 2023. 5. 29. 23:08
728x90

📌 현실세계에서 어떠한 제품을 만들기 위해 부품들을 하나씩 조립해서 완성시키는 것 처럼 소프트웨어 또한 필요한 부품들을 만들고 하나씩 조립해서 하나의 완성된 프로그램을 만들 수 있는데 이러한 기법을 ‘객체지향 프로그래밍’이라고 부릅니다.

 

1. 객체란?

  • 객체는 세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 의미
  • 객체는 속성과 행위로 구성
    • 자동차를 속성과 행위로 표현
      • 자동차는 회사, 모델, 색상, 가격, 속도 등의 속성을 가질 수 있음
      • 자동차는 가속, 브레이크, 기어변속, 조명, 경적등의 행위를 가질 수 있음
      • java에서 이러한 속성과 행위를 필드와 메서드로 정의하여 구현할 수 있음

이처럼 현실 세계에 있는 객체를 소프트웨어의 객체로 설계하는 것을 객체 모델링이라고 함


2. 객체 간의 협력

현실 세계에서 사람이라는 객체와 자동차라는 객체는 서로 행위를 통해 상호작용을 하며 협력할 수 있다.

 

  1. 사람이 자동차의 가속 페달을 밟으면 자동차는 이에 반응해 속도를 올리며 앞으로 이동한다.
  2. 사람이 자동차의 브레이크 페달을 밟으면 자동차는 이에 반응하여 속도를 줄이며 정지한다.

소프트웨어의 객체들 끼리 상호작용은 JAVA의 메서드를 통해 이루어진다. 

  • 사람 객체는 자동차 객체가 가지고 있는 가속 페달이라는 gaspedal(); 메서드를 호출한다.
    • 그러면 자동차 객체는 이에 반응해 속도 속성의 값을 증가 시킨다.
  • 사람 객체는 자동차 객체가 가지고 있는 브레이크 페달 이라는 메서드 brakePedal(); 를 호출한다
    • 자동차 객체는 이에 반응해 속도 속성의 값을 감소 시킨다.
  • 또한 소프트웨어의 객체들은 메서드를 통해 데이터를 주고 받을 수도 있다.

 

  • 사람 객체는 메서드를 호출할 때 괄호() 안에 데이터를 넣어 호출할 수 있는데 이때 이괄호안에 넣는 데이터를 파라미터 혹은 매개값 이라고 표현한다

사람 객체는 gasPedal(50); 이렇게 메서드 괄호 안에 50의 매개값을 넣어 호출한다.

  • 그러면 자동차 객체는 해당하는 50의 데이터를 전달 받아 자동차 객체의 속성인 속도의 값을 50으로 만든다.
  • 또한 자동차 객체는 gasPedal(50); 메서드에서 속도를 바꾸는 작업을 수행한 후 사람 객체에게 실행 결과인 속도의 값을 반환할 수 있다. 이때 반환되는 값을 리턴값 이라고 표현한다.

3. 객체 간의 관계

현실세카이(セカイ)에서의 객체는 수많은 관계를 맺고 살아간다.

ex) 사람 객체는 자동차 객체를 사용하는 '사용의 관계' 를 맺고 있음

 

소프트 웨어의 객체 간의 관계

중간 복습) 객체지향 프로그래밍은 필요한 부품들을 만들고 하나씩 조립해서 하나의 완성된 프로그램을 만드는 기법

 

ex) 현실 세계의 자동차

  • 현실 세카이에서 자동차를 만들기 위해서는 수많은 부품이 필요
  • 타이어, 차문, 핸들등이 필요

 

이를 소프트웨어의 객체 간의 관계로 표현

1. 사용 관계

  • 사람 객체는 자동차 객체를 사용한다.

 

2. 포함 관계

  • 타이어 객체, 차문 객체, 핸들 객체는 자동차 객체에 포함되어 있습니다.

 

3. 상속 관계

  • 만약 공장에 자동차만 생산하는게 아니라 기차도 생산한다고 가정해보면
  • 자동차와 기차 객체는 하나의 공통된 기계시스템 객체를 토대로 만들어진다고 가정해보면
  • 그렇다면 자동차 객체와 기차 객체는 기계시스템 객체의 상속 받는 상속 관계가 된다.

 

'JAVA' 카테고리의 다른 글

[JAVA] 클래스 설계  (0) 2023.05.29
[JAVA] 객체지향 프로그래밍 이해하기 (2)  (0) 2023.05.29
[JAVA] JVM 구조와 메모리 영역  (0) 2023.05.28
[JAVA] 참조형 배열로 정리하기 (컬렉션)  (0) 2023.05.27
[JAVA] 배열  (2) 2023.05.26