도서/자바의 신

[도서/자바의 신] #3 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요

yulee_to 2022. 12. 20. 01:29

자바의 신

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 


자바의 객체지향 언어라고 해요 

이 세상의 모든 사물들은 각각의 객체로 나눌 수 있고, "상태"와 "행위"를 갖는다. 이러한 객체들을 클래스로 나타낸다.

  • 생성자 (constructor) : 클래스 이름과 같은 이름을 갖는 메소드로 new라는 키워드 뒤에 생성자 메소드를 사용해 객체를 생성해줌
  • 기본 생성자 (default constructor) : 매개 변수가 없는 생성자로 클래스를 컴파일할 때 javac를 실행하면 클래스 파일 안에 자동으로 만들어짐

클래스와 객체는 구분하셔야 해요

클래스는 객체를 만들어내는 '틀'같은 거라고 생각하면 되고, 객체는 각각의 실제 사물을 위한 것으로 "인스턴스 (instance)"라고도 한다.

자동차라는 클래스로 '철수의 자동차'와 '영희의 자동차'라는 각각의 객체를 만들 수 있는 것이다.

 

new 키워드와 생성자를 사용하여 객체를 만들어야만 일을 시킬 수 있다. 

일을 시킬 때는 객체이름 뒤에 점(.)을 하나 입력하고 메소드()를 써주면 해당 객체에 원하는 메소드의 일을 수행할 수 있다.

Car

public class Car {
    int speed;
    int distance;
    String color;
    
    public Car() {			//기본 생성자
    }
    public void speedUp() {		//speed값 +5해주는 메소드
    	speed = speed+5;
    }
    public void breakDown() {		//speed값 -10해주는 메소드
  		speed = speed-10;
    }
    public int getCurrentSpeed() {	//speed값 리턴해주는 메소드
    	return speed;
    }
}
public class CarManager {
	public static void main (String[] args) { 	// main문
    	Car dogCar = new Car(); 			//dogCar라는 객체 생성
        dogCar.speedUp();  				//dogCar의 speed +5해주기
        dogCar.speedUp();				//dogCar의 speed +5해주기
        System.out.println(dogCar.getCurrentSpeed());	//dogCar의 현재 speed값 출력(speed == 10)
        dogCar.breakDown();				//dogCar의 speed -10해주기 
        System.out.println(dogCar.getCurrentSpeed());	//dogCar의 현재 speed값 출력(speed == 0)
    }
}

CarManager에서 Car 클래스를 참조하기 때문에 CarManager만 컴파일할 때 알아서 Car 클래스도 컴파일해준다. 

Calculator

public class Calculator {
	public static void main (String[] args) {
    	System.out.println("Calculator class started");
        Calculator clac = new Calculator(); //clac이라는 Calculator 객체 생성
        int a = 10;
        int b = 5;
        System.out.println("add="+calc.add(a, b));
        System.out.println("subtract="+calc.subtract(a, b));
        System.out.println("multiply="+calc.multiply(a, b));
        System.out.println("divide="+calc.divide(a, b));
    }
    public int add (int a, int b) {         //a와 b를 더한 값을 return
    	return a+b;
    }
    public int subtract (int a, int b) {    //a와 b를 뺀 값을 return
    	return a-b;
    }
    public int multiply (int a, int b) {    //a와 b를 곱한 값을 return
    	return a*b;
    }
    public int divide (int a, int b) {      //a와 b를 나눈 값을 return
    	return a/b;
    }

객체 이름 짓기

  • 되도록 한 단어, 혹은 두 단어로 간편하게 짓기
  • 두 단어 이상일 경우 맨 앞 단어는 소문자로, 다음 단어는 첫 문자만 대문자 ex)dogCar

메소드에 매개변수를 넘겨줄 때는 직접 값을 써줘도 되고, 변수를 넘겨줘도 된다.


정리해 봅시다

1. 클래스와 객체의 차이점은?

클래스는 현실 세계의 사물의 틀을 의미하고, 객체는 그 사물 하나하나를 의미한다.

더보기

- 답 : 클래스를 통해서 객체를 생성할 수 있다. 즉, 하나의 클래스를 만들면 그 클래스의 모습을 갖는 여러 객체들을 생성할 수 있다. 그러므로, 일반적인 경우 클래스의 메소드나 변수들을 사용하려면 객체를 생성하여 사용해야 한다. 

2. 객체를 생성하기 위해서 꼭 사용해야 하는 예약어는?

new

3. 객체를 생성하기 위해서 사용하는 메소드 같이 생긴 클래스 이름에 소괄호가 있는 것을 뭐라고 하나요?

생성자

4. 객체의 메소드를 사용하려면 어떤 기호를 객체 이름과 메소드 이름 사이에 넣어주어야 하나요?

.(점)

5. 여러분들이 메소드를 사용하기 위해서는 어떤 것을 만들어야 하나요?

객체

6. 5번 문제에서 만들어야 하는 것은 어떤 예약어를 사용하고, 클래스의 무엇을 사용해야 하나요?

new와 생성자

728x90