본문 바로가기

언어 기초/JAVA

[자바의정석 | Chapter 06 객체지향 프로그래밍1] 객체배열, 프로그래밍에서의 클래스

1. 학습목표

객체배열에 대해 이해할 수 있다.

프로그래밍관점에서 클래스를 이해할 수 있다.

2.필요 개념 문장정리

객체배열

  • 객체 역시 배열로 다루는 것이 가능하며 이를 객체 배열이라 한다.
  • 객체 배열 안에 객체가 저장되는 것이 아니고 객체의 주소가 저장된다. 객체 배열은 참조변수들을 하나로 묶은 참조변수 배열이다.
  • 객체배열을 생성하는 것은 객체를 다루기위한 참조변수들이 만들어진 것일 뿐 아직 객체가 저장되지 않았다.
  • 배열초기화 블럭이나 for문을 사용하여 초기화를 한다.
  • 객체배열도 같은 타입의 객체만 저장할 수 있다.

클래스

  • 변수 : 하나의 데이터를 저장할 수 있는 공간
    배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
    구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
    클래스 : 데이터와 함수의 결함
  • 객체지향언어에서는 변수와 함수를 하나의 클래스에 정의하여 서로 관계가 깊은 변수와 함수들을 함께 다룰 수 있게 했다.
  • 자바에서 클래스가 사용자 지정타입이다. 제어자와 메서드를 이용해서 조건들을 코드에 반영할 수 있다.

 3. 코드작성

class Tv {
	// Tv의속성(멤버변수)
	String color; // 색상
	boolean power; // 전원상태(on/off)
	int channel; // 채널

 	// Tv의기능(메서드)
	void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드 
    void chanelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드 
    void channelDown() { --channel; } // TV의채널을 낮추는 기능을 하는 메서드 
 }
 
class TvTest2 {
	public static void main(String args[]) {
		Tv[] tvArr = new Tv[3]; //길이가 3인 Tv객체 배열
	// Tv객체를 생성해서 Tv객체 배열의각 요소에 저장 
    for(int i = 0; i < tvArr.length; i++){ 
    	tvArr[i] = new Tv();
		tvArr(i].channel = i + 10; //tvArr[i]의 channel에 i+10을 저장
    }
    for (int i = 0; i < tvArr.length; i++) {
		tvArr[i].channelUp(); // tvArr[1]의 메서드를 호출. 채널이 1증가 
        System.out.printf ("tvArr[%d].channel=%d%n", i, tvArr[i].channel);
 	}
} 

실행결과        
tvArr[0].channel=11
tvArr[1].channel=12
tvArr[3].channel=13

4. 마무리

클래스를 만들어 변수를 지정하고 메서드를 사용하여 조건을 반영하는 객체지향프로그래밍 구조를 이해할 수 있었다.