* JAVA - 객체지향 프로그래밍(2)

jodbsgh·2022년 3월 14일
0

💡"JAVA"

목록 보기
11/67

객체 배열

많은 수의 객체를 다뤄야할 경우 배열로 다루면 편리하다.
이를 '객체 배열'이라고 한다. 그렇다고 객체 배열 안에 객체가 저장되는 것은 아니고, 객체의 주소가 저장된다.

	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() };

객체 배열도 같은 타입의 객체만 저장할 수 있으므로 주의해야한다.

여러종류의 객체를 하나의 배열에 저장하고 싶다면 '다형성'을 배우고 나면, 하나의 배열로 여러 종류의 객체를 다룰 수 있게 된다.

클래스의 또 다른 정의

객체지향이론에서의 클래스

  • 객체를 생성하기 위한 틀

  • 속성과 기능으로 정의되어있다.

     

프로그래밍적 관점에서의 클래스

  1. 데이터와 함수의 결합
  • 변수 : 하나의 데이터를 저장할 수 있는 공간
  • 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
  • 구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
  • 클래스 : 데이터와 함수의 결합(구조체 + 함수)
  1. 사용자정의 타입
    프로그래밍언어에서 제공하는 자료형 (primitive type) 외에 프로그래머가 서로 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것을 사용자정의 타입이라고 한다.
    자바와 같은 객체지향언어에서는 클래스가 곧 사용자 정의 타입이다.
int hour;		//시간을 표현하기 위한 변수
int minute;		//분을 표현하기 위한 변수
float second;	//초를 표현하기 위한 변수

만일 3개의 시간을 다뤄야 한다면 다음과 같이 해야 할 것이다.

int hour1, hour2, hour3;		//시간을 표현하기 위한 변수
int minute1, minute2, minute3;		//분을 표현하기 위한 변수
float second1, second2, second3;	//초를 표현하기 위한 변수

배열로 처리하면 다뤄야하는 시간 데이터의 개수가 늘어나더라도 배열의 크기만 변경해주면 되므로, 변수를 매번 선언해줘야 하는 불편함과 복잡함은 없어진다.
하지만 하나의 시간을 구성하는 시, 분, 초가 서로 분리되어 있기 때문에 프로그램 수행과정에서 올바르지 않은 데이터가 될 가능성이 있다.

int[] hour = new int[3];
int[] minute = new int[3];
float[] second = new float[3];

사용자정의 타입, 즉 클래스로 정의한 경우

class Time()
{
	int hour;
    int minute;
    float second;
}

위의 코드는 세 변수를 멤버변수로 갖는 Time 클래스를 정의한 것이다.

profile
어제 보다는 내일을, 내일 보다는 오늘을 🚀

0개의 댓글