클래스와 객체

2014. 11. 10. 15:02Basic/etc

반응형
1. 클래스와 객체
 
클래스는 각각의 객체가 공통적으로 가지는 정보나 기능 등을 추출해서 정리한 것으로 생각하면 된다. 

클래스 ==> 멤버변수(속성,필드) + 메서드

예를 들어 자동차라는 객체는 여러 종류가 있을 수 있지만, 기본적인 구조나 운전방법은 비슷하다. 인간은 자동차를 생각할 때 여러 자동차가 각각 가지고 있는 구성요소나 운전방법 같은 상세한 부분은 생각하지 않고 보다 추상화된 개념으로 생각한다. 이렇게 여러 자동차들에서 공통적이고 추상화된 개념을 추출한 것이 클래스이다. 물론 실제로는 각 객체 사이에 서로 다른 부분이 있을 수도 있지만, 그것들의 공통 부분을 하나의 개념으로 도출할 수 있다면 클래스로 사용할 수 있다.

클래스의 속성과 메서드는 해당 클래스에 속하는 모든 객체의 속성과 메서드로 정의된다. 각 객체간의 차이점은 속성에 어떤 값이 할당되느냐에 따라 다르게 나타난다. 자동차로 예를 들자면 자동차의 색상, 외형, 엔진, 타이어 같은 특징을 속성으로 생각하는 것이다. 그리고 그 속성들이 어떤 값을 가지느냐에 따라 구체적인 자동차가 결정되는 것이다.

추상적인 틀인 클래스에서 구체적인 객체를 생성하는 것을 구체화 혹은 인스턴스화(instantiation)라고 한다. 클래스에서 구체화되어 생성된 객체를 인스턴스 객체(instance object), 간단히 인스턴스 혹은 객체라고 부른다. 객체는 각각 개별적인 변수를 가지고 다른 객체를 참조하거나 값을 가지는 것이 가능하다. 그래서 객체(인스턴스)가 가지는 변수를 인스턴스 변수라고 부른다. 그 객체에 어떤 인스턴스 변수가 있는지에 대해서는 클래스에 정의되어 있다. 각각의 인스턴스 객체는 인스턴스 변수에 서로 다른 값을 할당받을 수 있다. 메서드의 정의는 클래스에 기술되고 그 내용을 인스턴스 객체가 공유한다. 그래서 메서드는 인스턴스 변수와 달리 각 인스턴스 객체에서 다시 재정의하지 않는다.
[출처] 오기하라 타케시 : Objective-C 프로그래밍의 기초 문법부터 실제 애플리케이션 제작까지. 한빛미디어 pp 40~41 
 
 
2. 클래스를 이용한 객체 만들기
 
클래스란 객체를 명세화 시켜놓은 정의이며, 객체를 생성하는데 사용된다. 원하는  객체를  프로그램상에 만들고자 한다면 먼저 클래스를 만들고 그 클래스를 통하여 객체를 생성하여야 한다.
 
만들어 지는 객체는 숫자도 문자도 아닌 사용자가 만든 새로운 데이터가 된다. 
-> 클래스는 객체라는 데이터를 만들기 위한 것이니 클래스도 데이터 타입이다.
 
클래스는 변수와 메서드를 가질수 있으며, 클래스의 정의를 통해 객체를 만드는 방법은 다음과 같다.

※ 객체는 클래스의 유일무이한 표현 방법이고 각 객체는 자신만의 데이터(정보)를 가지고, 메서드는 이 데이터에 접근하여 읽고 수정하는 방법을 제공하여 준다.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Car 
{
     String name;
     boolean power;
     int tire;
     
     void powerOnOff()
     {
          this.power = !this.power;
     }
    
     void move()
     {
          if(this.power) {System.out.println(this.name+"이"+this.tire+"개의 타이어를 움직이다");
     }
}
 
 
1
2
3
4
5
6
7
8
9
10
11
12
class CarMain
{
    public static void main(String[] args)
    {
        Car c; // Car라는 데이터 타입을 저장할 수 있는 변수 c 정의
        c = new Car(); //Car()생성자 메서드라고 부르는데 클래스 정의시 자동으로 만들어짐
        c.name = "K7";
        c.tire = 4;
        c.move();
        System.out.println(c.name);
    }
}

 

※ this 키워드 : 클래스로 통해 만들어진 객체는 각 객체마다 클래스의 정의된 멤버(멤버변수와 메서드)를 가지는데,  클래스내의 this키워드는 객체가 만들어 졌을때 그 객체가 가진 멤버를 접근할때 사용한다. (객체를 정의한 클래스 내에서는 이후 이 클래스를 통해 실제 만들어질 객체의 이름(참조변수)을 알수가 없기에 클래스 내의 다른 멤버를 접근하기 위해 this라는 키워드를 사용한다. this는 객체 자기자신을 가르키는 변수이다.) 

※ new 연산자 : 메모리(heap)의 새로운 공간에 무엇인가를 만들겠다는 연산자.


반응형

'Basic > etc' 카테고리의 다른 글

[Android] ANR 이란?  (0) 2014.12.27
[Android] Service 사용법  (0) 2014.12.27
final, static  (0) 2014.11.10
객체의 생성, 생성자  (0) 2014.11.10
싱글톤 패턴  (0) 2014.11.10