Java/나동빈 기초 강좌

나동빈 자바(Java) 클래스 #09

eastperson 2020. 7. 16. 19:12

객체 : 실세계의 사물

 

하나의 객체를 만든다. 그 객체의 성질들을 묶어서 저장해두는 것을 클래스이다. 예를 들어 게임을 만들 때, 자동차의 특성, 사람의 특성, 나무의 특성 등등을 클래스를 저장한다. 그리고 프로그래밍을 할 때, 그 클래스를 사용해서 성질에 맞는 방법을 구현한다.

 

가령 car라는 클래스의 특징이 속력, 색상, 이름 등등이 있을 때

 

new car();

 

의 함수를 사용하면 car라는 객체가 불러와진다. 이 특성을 프로그램 안에서 개별적으로 설정하거나 사용할 수 있다.

 

실제로 이러한 데이터를 변수로 활용하는 것을 인스턴스화라고 한다. 어떠한 클래스 안에서 만들어진 실제로 사용하는 단위이다.

 

 

자동차 -> car (클래스, 객체화) -> new car; (인스턴스, 객체의 활용) => 객체 지향 프로그래밍

 

프로그래밍의 모듈화, 변수 가능, 보안 향상

두 클래스를 이용해서 하나의 프로그램을 만들어주자. Node 클래스는 Main 메소드를 넣을 필요가 없다.

 

객체지향 프로그램의 보안

package 응용예제2;
public class Node {
       
       private int x; // x와 y를 외부에서 접근할 수 없도록 private 으로 만든다.
       private int y;
       
       public int getX() {
              return x;
              
       }
       public void setX(int x) {
              this.x = x; // x라는 변수를 지금 들어온 매개 변수로 바꿔주겠다는 뜻.
       }
       public int getY() {
              return y;
              
       }
       public void setY(int y) {
              this.y = y;
       }
       
       public Node(int x, int y) { //생성자의 정의는 인스턴스(객체)를 새로만들 때  자동으로 값을 초기화해주는 것.
              this.x = x;
              this.y = y;
       }
       
       public Node getCenter(Node other) { // getCenter는 다른 Node를 매개변수로  잡아서 정 중아의 값을 반환한다.
              return new Node((this.x + other.getX()) / 2, (this.y + other.getY())  / 2);
       }

Main 활용

package 응용예제2;
public class Main17 {
       public static void main(String[] args) {
              
              Node one = new Node(10, 20);
              Node two = new Node(30, 40);
              Node result = one.getCenter(two);
              System.out.println("x : " + result.getX() + " y : " +  result.getY()); // x(10, 30) 의 중앙, y(20, 40)의 중앙의 값을 가져온다.
       }
}