객체와 클래스 (class) > 학습자료 | IOTsw_u2 U2 Project
학습자료

JAVA 객체와 클래스 (class)

본문

뭔가를 만드는 도구 = Class (지그)

Class 를 이용해서 만든 결과물 은 객체 라고 말 할 수 있다

그렇다면 하나의 클래스를 사용하기 위해서는 마치 변수 선언(셋팅) 하는것 처럼 미리 선언 해두고 나중에 편리하게 사용하다.


메소드(방법,방식,체계성)는 == 함수

만들어진 클래스를 조립(사용)하기 위해 상속 임포트 페키지 가 필요하다


 

변수를 저장하는 방법과 저장하는 방법중 하나인 배열을 배웠었고
함수를 만드는 방법으로 반복문과 조건문을 배워보았다.
그리고 그 변수와 함수를 합쳐서 하나의 클래스를 만들었었다.
지금까지의 예제를 보면 모두 하나의 클래스로 만들어진것을 확인할수 있다.


필자가 처음 클래스에 대해 설명할때 클래스란

함수에서 값을 계산하여 변수로 값을 저장하거나

아니면 변수에서 값을 가져와서 함수로 계산하는것이라고 설명하였다.

 
자 그럼 이제 시야를 클래스보다 좀 더 넓혀서 보도록 하자.

흔히 자바를 객체지향언어라고 말한다.
자 그럼 객체지향이란 무엇을 뜻할까?

깊게 들어가면 정말 따로 공부할만큼 공부해야지 되는것이 객체지향이다.
그러니 너무 깊게 들어가지 말고 간단한 개념으로만 알고 있자.


객체지향이란 세상의 모든 것을 객체화 한다는 것이다.


예를 들어 지갑을 객체화 해보자.

객체라는 것은 속성과 기능을 가지게 된다. 그럼 지갑에는 어떤 속성과 어떤 기능이 있을까?
지갑속에 돈이 있다면 돈이라는 속성과 돈을 꺼낸다 & 돈을 넣는다라는 기능이 생겨난다.
또한 지갑에 명함이 있다면 명함이란 속성과 명함을 꺼낸다 & 명함을 보관한다라는 기능이 생겨난다.

이렇게 우리가 흔히 볼수 있는 모든 물건 혹은 개념을 객체화 시킬려고 노력하는 것이 객체지향이라고 볼수 있다.
솔직히 필자도 위의 말이 정확한 답이라고 말할수가 없다.
다만 객체지향이란 것의 개념을 간단하게만 적어본것이지 저게 완벽한 객체지향의 개념이라고 말하기도 좀 그렇다.
정말 자세하게 알고 싶으신분들은 따로 공부를 하기 바란다.


그럼 객체지향언어의 장점은 무엇일까?


바로 재사용성과 유지보수의 용이함이다.
하나의 객체를 만들어 놓으면(프로그래밍 하면) 여러 프로그램에서 사용할수 있는것이다.
예를들어 숫자의 합계와 평균을 구하는 객체를 만들어 놓으면
가계부프로그램, 학점관리프로그램, 통계프로그램 등등 여러 프로그램에서 사용할수 있듯이
하나의 객체를 여러 방도로 활용할수 있다는게 제일 큰 장점이다.

우리가 지갑을 가지고 명함도 교환하고 먹을것도 살수 있고 혹은 지갑을 던져서 누굴 맞출수도 있듯이
하나의 객체를 만들고 난뒤 그것을 어떻게 활용하나에 따라 결과물이 바뀔수도 있는것이다. 


이외에 객체지향언어의 장점으로 은닉화, 상속성, 다형성 등등 많은 특성이 있지만
복잡하게 생각할 필요없이 하나의 객체를 여러형태로 사용할수 있다는것만 알아두자.




클래스와 객체의 정의와 용도

자 그럼 객체와 클래스에 대해 좀더 자세히 알아보자. 우선 객체! 

객체의 정의  :  실제로 존재하는 것, 사물 또는 개념.
객체의 용도  :  객체가 가지고 있는 기능과 속성에 따라 다름.

유형의 객체  :  책상, 의자, 자동차등과 같은 사물.
무형의 객체  :  수학공식, 프로그램 에러와 같은 논리나 개념. 
    -출처 자바의 정석 

객체의 사전적인 정의는, '실제로 존재하는 것'이지만 객체지향이론에서는
위와같이 무형의 개념이나 논리들도 하나의 객체로 본다.

클래스와 객체 관계는 설계도와 완성품이라고 생각하면 될것이다.
즉 클래스는 "객체를 만들기 위한 설계도 또는 틀"이라고 정의할수 있다.

자 예를 들어 TV설계도(클래스)는 TV(객체)를 정의 한것이며 TV(객체)를 만들때 사용된다.
우리가 TV를 볼려고 할때에는 TV(객체)가 필요한것이지 TV설계도(클래스)가 필요한것이 아니다.
TV설계도(클래스)는 TV(객체)를 만들때에만 사용하는 것이며 TV(객체)는 TV설계도(클래스)가 있어야지만 만들수 있다.
(즉 클래스는 객체를 정의한 것이며 객체를 만들때 사용된다.
  클래스는 객체를 만들때에만 사용하는 것이며 객체는 클래스가 있어야지만 만들수 있다.)




클래스의 설계와 기능 
 

아직 조금 헷갈리는 사람을 위해 우선 클래스를 한번 만들어보자. (객체를 만들려면 우선 클래스가 필요하다고 말했었다.)

class AddHap { }

 
그뒤에 클래스 안에 합계를 할 두 변수 a와 b를 선언하고 그 합계를 저장할 hap이라는 변수를 선언해보자.

class AddHap {

int a ;

int b ;

int hap;

 

}


그리고 난뒤 a와 b의 합을 구하는 메소드를 만들어보자.

class AddHap {

int a ;

int b ;

int hap;

void hap(){

hap = a + b;

}

}

AddHap클래스를 자세히 살펴보면
변수 a와 b를 가지고 합계를 구하는 함수 hap()을 가지고 있고
메소드 hap( )으로 합계를 구한 값을 저장시킬 변수 hap을 가지고 있다.

위에서 말한 클래스의
함수에서 값을 계산하여 변수로 저장시키거나
변수에서 값을 가져와서 함수로 계산하는 두가지 기능을 모두 포함
하고 있는것이다.

클래스는 이렇게 데이터(변수)와 처리동작(Method)를 하나로 모아놓은것이며
클래스내의 데이터와 처리동작을 합쳐서 맴버라고 한다. 

a,b,hap과 같이 값을 저장할수 있는 변수를 
객체의 속성, 맴버변수, 특성, 필드, 상태등으로 불리우며
hap ( )과 같이 값을 계산할수 있는 함수를 
객체의 기능, Method, 행위, 맴버함수등으로 불리운다.
(필자는 앞으로 맴버변수와 Method라는 용어를 사용하겠다.)


자 위의 예제처럼 변수와 Method를 모아논 클래스를 만들었다고 바로 사용할수는 없다.
위에서 말했듯이 클래스는 하나의 설계도 일뿐 TV설계도만으로 TV를 볼수 없듯
클래스만으로는 그 기능을 사용할수 없는것이다.
(여태껏 우리가 만든 클래스는 클래스 안에 main( )메소드가 있어서 바로 실행이 가능했지만
  위 클래스는 자세히보면 main( )메소드가 클래스 내에 없다.)
  

137159394E932B220909FA
자 위그림은 클래스와 객체의 차이를 간단히 보여주는 그림이다.
AddHap이라는 클래스(설계도)를 가지고 AddHap에 있는 맴버변수와 Method를 사용할수 있도록
메모리 위에 공간을 만들어 hap1이라는 객체를 만들었다.
TV설계도가 있으면 TV를 몇개씩 만들수 있는것 처럼 하나의 클래스로 여러개의 객체를 만들어 낼수 있다.
그렇게 여러개 만든 객체는 위 그림에서 보듯이 각각 자기만의 저장공간을 가지게 된다.



클래스의 객체화와 사용


클래스를 가지고 객체를 생성하는 과정을 객체화(인스턴스화, 오브젝트화 명칭이 많다;;)라고 하며

클래스명 변수명;
변수명 = new 클래스명();

이라는 공식으로 객체를 생성하며 줄여서

클래스명 변수명 = new 클래스명();

으로 사용가능하다.

자 그럼 위에 만든 AddHap이라는 클래스를 가지고 객체를 한번 생성해보자.

class AddHap {

int a ;

int b ;

int hap;

void hap(){

hap = a + b;

}

}

 

class Hap{

public static void main(String[] args){

AddHap hap = new AddHap();

hap.a = 1;

hap.b = 2;

hap.hap();

System.out.println(hap.hap);

}

}

Hap라는 클래스 안에 AddHap클래스의 참조변수 hap을 생성하고난뒤 객체를 생성하였다.

이 클래스 Hap이 어떻게 실행되는지 알아보자. 
(아래그림을 클릭하세요)

객체와 참조변수의 관계는 우리가 일상생활에서 사용하는 리모컨과 TV의 관계와 비슷하다.
리모컨(참조변수)를 사용하여 TV(객체)를 다루기 때문이다.


조금 정리를 해보자.
(지금 필자가 적어놓고 왠지 헷갈린다;;)

TV를 만들려고 하면 설계도가 필요하다.
설계도는 클래스이며 TV는 객체이다.
TV의 설계도를 다 작성하고 이제 조립하는것이 객체화이다.
객체화 시킨 TV의 속성과 기능은 클래스내의 변수와 함수이다.
이 객체화시킨 TV의 속성과 기능을 사용할려면 리모컨(참조변수)이 필요하다.

조금은 개념이 정리가 되었으면 한다.




댓글목록

학습자료 목록

Total 91건 2 페이지
게시물 검색

IOTsw_u2 정보

회사 . U2
주소 . 어느별 하늘 아래에 있것지요
사업자 등록번호 . 백수임 대표 . 김씨 전화 . 02-123-4567 팩스 . 팩스없음
통신판매업신고번호 . 낼할께 개인정보관리책임자 . 김씨가 알아서 함 부가통신사업신고번호 신고안함
Copyright © 2001-2013 U2. All Rights Reserved.
닫기