본문 바로가기
back-end/JAVA

2)객체지향-클래스와 객체,변수(속성),메서드(기능),인스턴스

by 모두의 향연 2021. 4. 9.
728x90
반응형

2)객체지향-클래스와 객체,변수(속성),메서드(기능),인스턴스

 

2-1)클래스와 객체

클래스의 정의: 객체를 정의해 놓은 것

클래스의 용도: 객체를 생성하는 데 사용

 

객체의 정의: 실제로 존재하는 것, 사물 or 개념

객체의 용도: 객체가 가지고 있는 기능과 속성에 따라 다름

 

굉장히 교과서적인 표현이죠?ㅋㅋㅋ저는 개념 자체를 어렵게 생각하는 경향이 있어 받아들이는데 오래 걸렸습니다..

하지만 딱 이것만 외워두세요. 

클래스=설계도

객체=제품

설계도

클래스=설계도

예를 들어, 커피머신 설계도는 커피머신을 만들기 위해 필요합니다.

이 설계도만 가지고 있다면 같은 커피머신을 여러 개 만들 수 있죠.

 

제품

객체=제품

객체는 말 그대로 커피머신 자체 제품입니다. 설계도를 참고하여 만든 사물인 것이죠. 

 

다른 것으로 예를 들어볼까요?

TV설계도는 클래스와 같은 것이고,

TV설계도를 참고하여 만든 TV가 객체가 되는 겁니다.

 

 

 

2-3) 객체의 구성요소-속성과 기능

그럼 객체는 무엇으로 이루어질까요?

즉, 커피머신은 무엇으로 이루어져 있나요?

커피머신 구성요소

크기, 길이, 높이, 색상, 스팀파이프, 전원 스위치, 온수 추출구... 등등 뭐가 많네요?

또 커피머신은 무슨 일을 하나요?

스팀파이프에서 스팀도 나올 것이며, 전원 스위치가 켜지기도 할 것이고, 온수 추출구에는 온수도 나오겠죠?

 

커피머신이 구성하고 있는 것을 '속성'이라 하고, 

커피머신 속성이 하는 동작을 '기능'이라고 합니다.

우리 몸에서 눈, 코, 입.. 을 '속성'이라 하는 것이고요

눈이 깜빡이고, 코에서 숨을 쉬고, 입으로는 음식을 먹는 동작을 '기능'이라 합니다.

 

 

여기서 잠깐.. 객체지향 진짜 왜 썼을까요?

과거로 잠깐 돌아가 보겠습니다. 객체지향 개념은 사실 군사적 목적으로 사용하다가 지금까지 사용하고 있는 건데요. 진짜 세계를 가상으로 만들어서 실험을 하고 싶은 겁니다.

현실세계(HW)

우리가 살고 있는 현실세계에서 미사일을 하나 발사해보고 싶은 겁니다. 전쟁에서 써먹기 위해서죠. 그럼 미사일을 만들고 발사해보면 되지 않냐고요? 미사일을 만드는데 시간과 비용이 얼마나 많이 드는데요.. 그래서 가상세계에 미사일을 만들고 거기서 각도나 무게 바람 등을 조절하여 최적의 미사일을 시험해 보고 싶었던 거예요. 그럼 시간과 비용은 줄어들 테니까요.

미사일(HW)
고무신게임

 

실제로 존재하는 현실세계를 하드웨어라고 불리고 하드웨어를 코드화 시킨걸 소프트웨어라고 합니다.

 

우리가 티브이로 보고 있는 드라마를 소프트웨어화 시켜 컴퓨터나 어플로 보고 싶다고요?

카세트로 듣던 오디오를 소프트웨어화 시켜 컴퓨터나 어플로 듣고 싶다고요?

하드웨어를 코드화 시켜 소프트웨어로 만들면 됩니다.

 

 

 

다시 본론으로 돌아와서

객체=속성(변수)+기능(메서드)로 이루어집니다.

그럼 커피머신에서 속성과 가능은 어떤 것일까요?

 

속성: 크기, 길이, 높이, 색상, 스팀파이프, 전원 스위치, 온수 추출구 등

기능: 켜기, 끄기, 스팀 강도 높이기, 스팀강도 낮추기, 온도 올리기, 온도 내리기 등

코드로 표현해 봅시다.

               커피머신의 클래스

변수(속성)

 

메서드(기능)

 

 

 

이 코드는 커피머신(HW)을 코드화(SW) 한 것입니다.

클래스는 뭐라고 했죠? 설계도입니다. 지금 커피머신의 설계도를 작성하고 있는 것입니다.

이 설계도만 있으면 편리합니다. 원래 커피머신에서 추가 기능을 넣어 만들고 싶으면, 이 코드에서 추가만 하면 되니까요.

이 설계도 하나만 만들어 놓으면 여러 개의 커피머신을 만들 수 있습니다. 마치 대량생산처럼요.

 

 

 

2-4) 객체와 인스턴스

결론부터 말하면 객체와 인스턴스는 같은 용어입니다.

 

객체: 모든 인스턴스를 대표하는 일반적 용어

인스턴스: 특정 클래스로부터 생산된 객체(주로 클래스로 만들어진 객체를 부를 때 인스턴스라고 합니다)

 

   클래스         ☞      인스턴스(객체)  

             (인스턴스화)                     

우리는 설계도(클래스)를 왜 만들었죠? 제품을 만들려고 만들 거죠?

커피머신을 조립하려고 즉 제품을 만드려고 설계도를 만든 겁니다.

그걸 인스턴스화라고 합니다.

 

 

<정리 퀴즈>

1. 클래스가 왜 필요합니까?

객체를 생성하기 위해서(=설계도는 제품을 만들기 위해서 필요하죠)

2. 객체가 왜 필요합니까?

객체를 사용하기 위해서(=커피머신은 왜 필요하죠? 커피머신을 사용하기 위해서 필요하죠)

3. 객체를 사용한다는 것은?

객체가 가진 속성(변수)과 가능(메서드)을 사용하기 위해서(=커피머신이 가진 스팀기(속성)로 우유를 데우기(기능) 위해서 필요하죠)

 

 

*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 되구요! 저는 개인적으로 공부하는 게 목적입니다*

728x90
반응형