🟨 목 차 🟨
1. 자바는 객체지향 언어라고 한다.
2. 클래스와 객체는 구분해야 한다.
3. 클래스와 객체는 구분해야 한다.
4. 정리
◼️ 1. 자바는 객체지향 언어라고 한다. ◼️
자바는 객체지향 언어다. 용어가 어려워 보일 수 있는데 알고나면 쉽다.
이 세상의 모든 사물들은 객체로 되어 있다. 예를 들어 우리가 보고 있는 책, 앉아 있는 의자, 핸드폰 등드 모두 객체이다.
앞에서 배운 클래스는 "상태"와 "행위"가 있어야 한다. 모든 사물에도 "상태"와 "행위"가 있다.
책을 예로 들어 보면,
- 상태 : 펼쳐져 있는 상태, 덮혀 있는 상태
- 행위 : 펼치는 행위 , 페이지를 넘기는 행위, 덮는 행위
자동차를 예로 들어 보면,
- 상태 : 시속 50km/h로 주행중인 상태, 512km를 주행한 상태, 차 색깔이 빨간색인 상태
- 행위 : 가속을 하는 행위, 감속을 하는 행위, 문이 열리는 행위
자동차로 자바를 표혀하면 어떻게 될까?
[1-1.EX]
public class Car {
public Car() {
}
}
위의 코드를 보게 되면 Car 클래스 선언문 안에 같은 이름의 Car()메소드가 있다. 이것은 생성자라고 부른다.
위의 Car 클래스의 주행중인 상태, 주행한 상태, 차 색깔의 상태 등을 아래의 코드로 다시 나타낼 수 있다.
[1-2.EX]
public class Car {
public Car() {
}
int speed;
int distance;
String color;
}
위의 코드처럼 정수형 스피드, 거리/ 문자형 색깔의 상태를 지정해 줄 수 있다.
더 나아가 상태를 지정한 Car() 클래스에 속도를 올리는 행위, 속도를 줄이는 행위 아래의 코드로 다시 나타낼 수 있다.
[1-3.EX]
public class Car {
int speed;
int distance;
String color;
public Car() {
}
public void speedUp() {
}
public void breakDown() {
}
}
위의 코드를 보게 되면 속도를 올리는 speendUp() 메소드와 속도를 줄이는 breakDown() 메소드로 클래스의 상태를 변경하는 행위를 지정할 수 있다.
◼️ 2. 클래스와 객체는 구분해야 한다. ◼️
앞에서 만든 Car 클래스는 말 그대로 "클래스"이다.
"포르쉐" 라는 차가 있더라도, A의 포르쉐와 B의 포르쉐는 다르다. 당연히 주행 거리, 색도 다를 수 있고 결정적인 자동차 등록 번호도 다르다.
A의 포르쉐와 B의 포르쉐를 나타내기 위해서 별도의 클래스를 따로 만들어줘야할까?
==> 그렇지 않다. 왜냐하면 각각의 실제 사물을 나타내기 위한 객체 혹은 인스터스를 이용하면 해결이 가능하기 때문이다.
즉, 자동차를 관리하는 큰 틀의 CarManager라는 클래스를 만들고 그 main문 안에 Car 클래스를 이용하여 각각의 객체를 생성하면 된다.
[2-1.EX]
public class CarManger {
public static void main(String args[]) {
Car aCar = new Car();
Car bCar = new Car();
}
}
이런식으로 Car클래스를 통해 각각의 객체(자동차)를 만들어 코드를 입력해주면 된다.
위의 코드에서 new 라는 것은 자바에서 미리 정해져 있는 예약어 중 하나이며, new 라는 단어 뒤에 내가 만든, 혹은 다른 사람이 만든 클래스의 생성자를 넣어주면 된다.
만약 Car 클래스 안에 있는 메소드를 이용하고 싶다면 객체 이름에 점을 찍고 사용하고 싶은 메소드 이름과 소괄호를 적어주면 사용할 수 있게된다. (물론 사용할 메소드가 빈 껍데기라면 불러오기만 할 뿐 아무런 기능이 없다.)
[2-2.EX]
public class CarManger {
public static void main(String args[]) {
Car aCar = new Car();
Car bCar = new Car();
aCar.speedUp();
bCar.breakDown();
}
}
클래스안에 속해 있는 메소드들에 대해 기능을 넣어줘 메소드를 구현해 보자.
[2-3.EX]
public class Car {
int speed;
int distance;
String color;
public Car() {
}
public void speedUp() {
speed = speed + 5;
}
public void breakDown() {
speed = speed - 10;
}
}
위의 코드처럼 속도를 증가시키고, 감소시켜도 현재의 속도를 확인 할 수 있는 방법이 없다. 따라서 현재 속도를 확인할 수 있는 getCurrentSpeed() 메소드를 만들어보자.
[2-4.EX]
package Part3;
public class Car {
int speed;
int distance;
String color;
public Car() {
}
public void speedUp() {
speed = speed + 5;
}
public void breakDown() {
speed = speed - 10;
}
public int getCurrentSpeed() {
return speed;
}
}
완성된 Car 클래스를 가지고 A차의 속도를 증가 및 감소시켜 보자.
[2-5.EX]
public class CarManager {
public static void main(String args[]) {
Car aCar = new Car();
Car bCar = new Car();
aCar.speedUp();
bCar.breakDown();
System.out.println(aCar.getCurrentSpeed());
System.out.println(bCar.getCurrentSpeed());
bCar.speedUp();
System.out.println(bCar.getCurrentSpeed());
}
}
◼️ 3. 클래스와 객체는 구분해야 한다. ◼️
계산기의 기본적인 기능인 더하기, 빼기, 곱하기, 나누기 기능을 제공하는 클래스와 메소드를 만들어 봅시다.
[3-1.EX]
package Part3;
public class Calculator {
public static void main(String[] args) {
System.out.println("Calculator class started");
}
public int add(int a, int b) {
return a+b;
}
public int substract(int a, int b) {
return a-b;
}
public int multiply(int a, int b) {
return a*b;
}
public int divide(int a, int b) {
return a/b;
}
}
Calculator 객체를 생성해보자(메소드를 부르기 전에 반드시 객체를 먼저 생성하고 그 객체에서 메소드를 부르는것이다.)
public class Calc {
public static void main(String[] args) {
System.out.println("Calculator class started");
Calculator calc = new Calculator();
int a = 10;
int b = 20;
calc.add(a, b);
calc.substract(a, b);
calc.multiply(a, b);
calc.divide(a, b);
System.out.println("add= " + calc.add(a, b) );
System.out.println("substract= " + calc.substract(a, b) );
System.out.println("multiply= " + calc.multiply(a, b) );
System.out.println("divide= " + calc.divide(a, b) );
}
}
◼️ 4. 정리 ◼️
자바에서 객체를 생성하는 것은 매우 중요하다. 객체를 생성할 때에는 new라는 예약어를 사용하여 만든다는 것과 메소드 같이 생긴 클래스 이름과 동일한 생성자를 호출한다는 것을 잊지 말아야 한다. (생성자 부분은 10장에서 살펴볼 것이다.)
'JAVA > 자바의신 1' 카테고리의 다른 글
6장 제가 조건을 좀 따져요(if ,for, while, continue, break) (0) | 2022.09.03 |
---|---|
5장 계산을 하고 싶어요 (0) | 2022.09.03 |
4장 정보를 어디에 넣고 싶은데? (1) | 2022.09.02 |
2장 Hello God Of Java (0) | 2022.09.01 |
1장 프로그래밍이란 무엇인가? (0) | 2022.09.01 |