JAVA 클래스와 객체

Dev.Shinny·2022년 9월 21일
0

자바의 정석

목록 보기
2/18

객체지향프로그래밍이란?

객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

객체체지향언어의 주요 특징

  1. 코드의 재사용성이 높다.
  2. 코드의 관리가 용이하다. -> 유지보수
  3. 신뢰성 높은 프로그래밍이 가능하다. -> 코드 중복 제거

클래스(class)와 객체(object)

클래스 정의 : 클래스란 객체를 정의해 놓은 것
클래스 용도 : 클래스는 객체를 생성하는데 사용

프로그래밍에서 객체는 클래스에 정의된 내용으로 메모리에 생성된 것을 의미한다.

객체의 정의 : 실제로 존재하는 것. 사물 또는 개념
객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름.

클래스는 단지 객체를 생성하기 위한 도구일 뿐, 객체 그 자체는 아니다. 클래스를 통해 객체를 생성하면, 기능을 추가하거나 변경하기 용이하며 매번 객체를 어떻게 만들지 고민할 필요가 없어진다. JDK는 프로그래밍에 유용한 많은 수의 클래스를 기본적으로 제공하고 있다.

객체와 인스턴스

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

객체의 구성요소

객체는 속성(멤버변수)기능(메서드), 두 종류의 구성요소로 이루어진다. 객체는 속성과 기능의 집합이라고 할 수 있다. 객체가 가지고 있는 속성과 기능을 그 객체의 멤버라 한다.


상단의 이미지를 코드로 작성하면 아래와 같다.
대학 시절 교수님이 쓰던 출판사 제공 이미지ㅋㅋ

class Tv{
int channel;
int volume;
boolean power;

void power(){ power =!power; }
void channelUp(){ channel++;}
void channelDown(){ channel--;}
void volumeUp(){ volume++;}
void volumeDown(){ volume--;}
}

인스턴스 생성과 사용

클래스명 변수명;
변수명 = new 클래스명();

Tv tv1;
tv1 = new Tv(); 

배열과 마찬가지로 클래스의 객체를 참조하기 위한 참조변수를 먼저 선언하고 객체를 생성한 후 객체의 주소를 참조변수에 저장해야 한다.

class Tv{
int channel;
int volume;
boolean power;

void power(){ power =!power; }
void channelUp(){ channel++;}
void channelDown(){ channel--;}
void volumeUp(){ volume++;}
void volumeDown(){ volume--;}
}

class TvTest{
	public static void main(String args[]){
    	Tv t ; //참조 변수 t 선언 
        t = new Tv(); //Tv인스턴스 생성
    	t.channel = 11;
        t.channelDown(); //메서드 실행
    }
}

인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야한다.

객체 배열

많은 수의 객체를 다룰 때, 배열을 사용하면 편리할 것이다. 객체 또한 배열로 다루는 것이 가능하며 '객체 배열'이라고 한다. 객체 배열 안에는 객체가 저장되는 것이 아니라 각 객체의 주소가 저장된다. 즉 객체 배열은 참조변수들을 하나로 묶은 참조변수 배열인 것이다.

객체 배열도 같은 타입의 객체만 저장할 수 있다.

Tv tvArr [] = new Tv[3];

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

클래스의 또 다른 정의

1. 클래스 - 데이터와 함수의 결합

  1. 변수 : 하나의 데이터를 저장할 수 있는 공간
  2. 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
  3. 구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
  4. 클래스 : 데이터와 함수의 결합(구조체 + 함수)

2. 클래스 - 사용자 정의 타입

프로그래밍언어에서 제공하는 자료형 외에 프로그래머가 서로 관련된 변수를 묶어서 하나의 타입으로 새로 추가하는 것을 사용자정의 타입이라고 한다.

자바의 경우 클래스가 곧 사용자 정의 타입이다.

profile
Hello I'm Shinny. A developer who try to enjoy the challenge.

0개의 댓글