자바의 정석 - 객체 지향프로그래밍

NOAH·2021년 1월 14일
0
post-thumbnail

클래스와 객체

클래스란 '객체를 정의해놓은 것.' 또는 클래스는 객체의 설계도 또는 틀'이라고 저의할 수 있습니다. 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성됩니다.

클래스 : 객체

붕어빵틀 : 붕어빵
Tv 설계도 : Tv

객체의 구성요소

객체는 속성과 기능, 두 종류이 구성요소로 이루어져 있으며, 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다.

속성(property) -> 멤버변수(variable)
기능(function) -> 메서드(method)

Class Tv{
//Tv의 속성
	String color ; // 색깔
    	boolean power ; // 전원 상태
        int Channel; //채널
// Tv의 기능 
        void Power(){ power = !power ; }
        void channelUp() { channel++; }
        void channelDown() { channel--; } 
    
}

객체와 인스턴스

클래스로부터 객체를 만드는 과정을 클래의 인스턴스화(instatiate)라고 하며, 어떤 클래스로 만들어진 객체를 그 클래스의 인스턴스(instance)

'책상은 인스턴스다'라고 하기보다는
'책상은 객체다'가 더 자연스럽다.

'책상은 책상클래스의 객체다'보다는
'책상은 책상클래스의 인스턴스다'가 던 자연스럽다.

클래스 -----인-스-턴-스-화--- > 인스턴스(객체)

한 파일에 여러 클래스 작성하기

하나의 소스 파일에 하나의 클래스를 정의하는 것이 보통이지만, 하나의 소스파일에 둘 이상의 클래스를 정의하는 것도 가능합니다.

주의할점은 소스파일의 이름은 소스 파일내 public class와 일치해야 합니다. public class가 없다면 소스파일의 이름은 소스파일 내의 어떤 클래스의 이름으로 해도 상관 없습니다.

객체의 생성과 사용

클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수 선언
변수명 = new 클래스명(); // 클래스 객체를 생성 후, 객체의 주소를 참조변수에 저장

일반적으로 클래스로부터 인스턴스를 생성하는 방법은 이와 같습니다.

class Ex6_1{
	public static void main(String[] args){
    Tv t; // Tv인스턴스 참조하기 위한 참조 변수 t 선언
    t = new Tv(); // Tv 인스턴스 생성한다.
    t.channel = 7; // 멤버변수 channel의 값은 7로 한다.
    t.channelDown(); // 메서드 channelDown()을 호출한다.
    System.out.println("현재 채널은 " + t.channel + " 입니다");
    }
}

--------------------------------------------------------
현재 채널은 6 입니다.
--------------------------------------------------------

객체 배열

Tv tv1, tv2, tv3;

많은 수의 객체를 다뤄야 할 때는 배열로 다루면 편리 합니다.

정확하게는 객체 배열 안에 객체가 저장되는 것은 아닌 객체의 주소가 저장됩니다.


Tv[] tvArr = new Tv[3];

길이가 3인 객체 배열 tvArr을 생성하고, 각 요소는 참조변수의 기본값인 null로 자동 초기화됩니다. 생성된 참조 변수 들에 객체를 생성하여 배열의 각 요소에 저장


Tv[] tvArr = new Tv[3]; // 참조변수배열(객체배열)생성

// 생성된 참조 변수 들에 객체를 생성하여 배열의 각 요소에 저장

tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();

배열의 초기화블럭을 사용하면, 다음과 같이 한 줄로 간단히 할 수 도 있습니다.

Tv[] tvArr = { new Tv(), new Tv(), new Tv()};

다뤄야할 객체의 수가 많을 때는 for문을 사용하면 됩니다.

Tv[] tvArr = new Tv[100];

for( int i = 0 ; i < TvArr.length ; i ++ ) {
	tvArr[i] = new Tv();
}

0개의 댓글