클래스와 객체
클래스와 객체
- 클래스의 정의 - 클래스란 객체를 정의해 놓은 것
- 클래스의 용도 - 클래스는 객체를 생성하는데 사용
객체를 정의한다는 것은, "어떤 객체가 이러이러하다"라고 설명해 놓는 것이다.
클래스의 용도는 객체를 생성하는데 사용한다.
- 객체의 정의 - 실제로 존재하는 것. 사물 또는 개념
- 객체체의 용도 - 객체가 가지고 있는기능과 속성에 따라 다름
간단히 말해서, 클래스는 제품 설계도와 같고,
객체는 제품과 같다고 생각하면 된다.
TV설계도를 예로 들면, TV설계도가 필요한 이유는, TV라는 객체를 만들기위함이다.
TV는 왜만드는걸까? 우리가 사용하려고 만든다.
그리고, TV설계도를 한번 만들어 놓으면 제품인 TV를 쉽게 만들 수 있다.
즉, TV를 만드려면 먼저, TV설계도를 만들고, 설계도로부터 TV를 만든다.
객체의 구성요소 - 속성과 기능
많은 과학기술이 군사적인 목적에서 발전이 되었듯, 객체지향 개념도 군사적인 목적에서 시작이 되었다.
실제 세계를(real world) 어떻게 하면 컴퓨터안으로 옮겨 넣을까를 고민한 것이다.
미사일을 쏠 때도, 실제로 미사일을 쏘는 것 보다,
컴퓨터 안에 실제 세계와 똑같이 미사일을 만들어놓고 여러번 쏴보면,
몇도의 각도로 쏘고, 어느쪽 바람이 불 때, 어떻게 해야하는지 테스트해볼 수 있다.
실제 HW를 SW화 하기위한 것이 객체지향 개념이다.
SW화하면 컴퓨터안에서 실행이 가능하기 때문이다.
예를 들어서 TV라는 HW가 있다고 가정해보자.
이 TV라는 HW를 SW로 만들면,
컴퓨터안에 설치하면 컴퓨터로 TV를 보듯이 할 수 있다.
실제로 우리가 예전에 비해서 컴퓨터로 할 수 있는 일이 많아진 이유가 HW가 SW화 되어서
컴퓨터안에서 실행되기 때문이다.
동영상 Player, 오디오 Playe, 그리고 JVM도 마찬가지이다.
예전부터 이런식으로 하려고 했던 것이 바로 "객체지향 개념" 이다.
HW를 SW로 바꾸려면 HW를 분석하고, 관찰해야한다.
그래서 TV를 놓고, 이것을 어떻게 SW화 할까? 라는 고민,
SW화를 한다는 것은, 프로그램으로 만드는 것이고, 즉 코드로 만든다는 것이다.
그래서 TV라는 객체 사물을 관찰해서 속성(변수) + 기능(메서드)로 표현이 가능하더라는 것이다.
속성은 변수로, 기능은 메서드로 표현이 가능했다.
그래서 이 TV라는 사물의 속성을 봤더니,
크기, 길이, 높이, 색상, 볼륨, 채널 등의 이러한 것들이 있고,
기능에는,
켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경하기 등이 있다.
그래서 이렇게 분석한 내용을 가지고 코드를 작성해 보면,
속성은 변수로 선언하고,
기능은 메서드로 선언할 수 있다.
그래서 Tv 클래스는 실제 하드웨어인 Tv를 소프트웨어화 한 것이다.
즉, Tv클래스 설계도를 만든 것이다.
정리해보면,
HW를 관찰해서 속성과 기능을 뽑아낸 다음에,
속성은 변수로,
기능은 메서드로 정의하면,
하나의 Tv라는 클래스가 만들어 지는 것이다.
객체와 인스턴스
- 객체 : 모든 인스턴스를 대표하는 일반적 용어
- 인스턴스 : 특정 클래스로부터 생성된 객체 (예:Tv인스턴스)
결론부터 말하면, 객체와 인스턴스는 거의 같은 말이다.
다만, 차이점은 뭐냐면,
객체는 모든 인스턴스를 대표하는 일반적 용어지만,
인스턴스는 특정 클래스로부터 생성된 객체를 이야기할 때 사용한다.
예를 들어서 Tv클래스로부터 생성된 객체는 Tv인스턴스 라고 한다. (Tv객체이기도 하지만 보통 Tv인스턴스라고 이야기를 한다.)
앞서, 클래스(Tv설계도)를 작성했는데,
설계도를 작성한 이유는, 제품을 만들기 위해서 작성한 것이다.
앞서 만든 Tv클래스를 가지고 제품(인스턴스)을 만드는 것을 인스턴스화 라고 한다.
클래스를 가지고 인스턴스(객체)를 만드는 것을 인스턴스화 라고 한다.
우리가 이렇게 Tv클래스를 작성했는데,
이 Tv클래스를 인스턴스화 하면, 클래스에 작성된 내용대로 오른쪽과 같이 인스턴스(객체)가 생성된다.
오늘 공부한 내용 간단 정리
Q. 클래스가 왜 필요한가?
A. 객체(인스턴스)를 생성하기 위해
Q. 객체가 왜필요한가?
A. 객체를 사용하기 위해
Q. 객체를 사용한다는 것은?
A. 객체가 가진 속성(변수)과 기능(메서드)을 사용하려고
'JAVA' 카테고리의 다른 글
객체의 생성과 사용 (0) | 2022.03.24 |
---|---|
하나의 파일에 여러 클래스 작성하기 (0) | 2022.03.24 |
객체지향 언어 (0) | 2022.03.24 |
Arrays로 배열 다루기 (0) | 2022.03.23 |
2차원 배열 예제 (0) | 2022.03.23 |
댓글
이 글 공유하기
다른 글
-
객체의 생성과 사용
객체의 생성과 사용
2022.03.24 -
하나의 파일에 여러 클래스 작성하기
하나의 파일에 여러 클래스 작성하기
2022.03.24 -
객체지향 언어
객체지향 언어
2022.03.24 -
Arrays로 배열 다루기
Arrays로 배열 다루기
2022.03.23