본문으로 바로가기

객체지향 1부 - 특징, 클래스와 객체

category 코딩/Java 2016. 9. 7. 09:00






객체지향 언어의 특징


1. 코드의 재사용성이 높다. 

   : 새로운 코드 작성시 기존 코드를 이용해 쉽게 작성가능


2. 코드의 관리가 용이

   : 코드간의 관계를 이요애서 적은 노력으로 쉽게 코드변경 가능


3. 신뢰성 높은 프로그래밍을 가능하게 한다

   : 제어자와 메서드를 이용해 데이터를 보호하고 올바른 값을 유지, 코드의 중복을 제거해 코드의 불일치로 인한 오작동 방지




클래스와 객체


* 클래스란?

  : 객체를 정의해 놓은것이며 그 용도는 객체를 생성하는데 사용된다.


* 객체란?

  : 실제로 존재하는것, 사물 또는 개념이며 객체가 가진 기능과 속성에 따라 용도가 다르다.


- 유형의 객체 : 스마트폰, 컴퓨터, 책 등..

- 무형의 객체 : 지식, 논리, 개념 등..



[클래스와 객체의 예]






객체와 인스턴스



클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate) 라고 하며 만들어진 객체를 클래스의 인스턴스(instance)라고 한다.




* 객체의 구성요소


객체는 속성과 기능 두 종류의 구성요소로 이루어져 있으며 일반적으로 다수의 속성과 기능을 갖는다. 그리고 객체가 가지고 있는 속성과 기능을 그 객체의 맴버라고 한다.



쉽게 자동차 예를들면 다음과 같다.


- 속성 : 크기, 길이, 높이, 색상, 바퀴수, 좌석수 등..

- 기능 : 전진, 후진, 브레이크 등...


자동차의 속성과 기능을 코드로 만들면 아래처럼 만들 수 있다.


1
2
3
4
5
6
7
8
9
10
11
class Car
{
    // 자동차의 속성
    String color // 색상
    String size  // 크기
    
    // 자동차의 기능
    void power() {} // 자동차의 시동을 켜거나 끄는 기능
    void forward() {} // 전진기능
    void backwards() {} // 후진기능
}
cs



* 인스턴스의 생성과 사용


클래스로부터 인스튼스를 생성하는 방법은 일반적으로 다음과 같다.


1
2
3
4
5
클래스명 변수명 = new 클래스명(); 
// 클래스의 객체를 생성후, 객체의 주소를 참조변수에 저장한다.
 
ex)
Car c = new Car();
cs




[예제 1]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class TvTest
{
    // Tv테스트 클래스
    public static void main (String[] args)
    {
        Tv t=new Tv();
        t.power();
        t.channel = 7;
        t.channelDown();
        System.out.println("현재 채널은 = " + t.channel);
 
        // 인스턴스는 참조변수를 통해서만 다룰 수 있다.
        // 여기서는 Tv의 변수나 메서드를 사용하기 위해 t 라는 참조 변수를 이용해야 한다.
 
    }
    
}
 
class Tv
{
    // TV 클래스
        // TV의 속성(변수)
        String color;
        boolean power;
        int channel;
            
        // TV의 기능(메서드)
        void power() // 전원 온/오프
        {
            power = !power; 
            // boolean의 초기값은 false 여기서 이 메서드 호출시 true값 치환
        }
        
        void channelUp() { ++channel; } // 채널 up
        void channelDown() { --channel; } // 채널 down
}
cs


[실행결과]




[예제 2]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class TvTest
{
    // Tv테스트 클래스
    public static void main (String[] args)
    {
        Tv t1=new Tv();
        Tv t2=new Tv();
        
        System.out.println("현재 t1 채널은 = " + t1.channel);
        System.out.println("현재 t2 채널은 = " + t2.channel+"\n");
        
        t2 = t1;
        t1.channel =9;
        System.out.println("t1 채널 7로 변경 \n");
        System.out.println("현재 t1 채널은 = " + t1.channel);
        System.out.println("현재 t2 채널은 = " + t2.channel);
    }
    
}
 
class Tv
{
    // TV 클래스
        // TV의 속성(변수)
        String color;
        boolean power;
        int channel;
            
        // TV의 기능(메서드)
        
         // boolean의 초기값은 false 여기서 이 메서드 호출시 true값 치환
        void power() { power = !power; }  // 전원 온/오프       
        void channelUp() { ++channel; } // 채널 up
        void channelDown() { --channel; } // 채널 down
}
cs


[실행결과]



'코딩 > Java' 카테고리의 다른 글

객체지향 3부 - 오버로딩, 생성자  (0) 2016.09.11
객체지향 2부 - 변수, 메서드  (0) 2016.09.10
자바 오버로딩(Overloading)  (0) 2016.09.06
자바 - 이름 붙은 반복문  (0) 2016.09.04
자바 - continue문  (0) 2016.09.04
RSS구독 링크추가 트위터 이메일 구독