본문 바로가기

Programming/자바

생활코딩 자바 - 클래스, 인스턴스, 객체

객체지향 이전의 코딩

클래스, 인스턴스 = 설계도, 제품

 

  •  

System.out.println(10 + 20);
System.out.println(20 + 40);

=> 중복 제거 필요

 

-> (refactoring: 편리, 효율화)

 

public static void sum(int left, int right) {
System.out.println(left + right);
}

public static void main(String[] args) {
sum(10, 20);
sum(20, 40);
}

 

  •  

public static void avg(int left, int right) {
System.out.println((left + right)/2);
}

public static void sum(int left, int right) {
System.out.println(left + right);
}

public static void main(String[] args) {
int left, right;
|

| 중간에 코드 많다고 가정하면 변수 의미가 중간에 바뀔 수도 있고 혼란 커짐 --> left 등 변수와 sum 등 연산자처럼 연관된 것들 그룹핑하는 법 고민하게 됨 (객체지향 프로그래밍의 시작)

|

left = 10;
right = 20;

sum(left, right);
avg(left, right);

left = 20;
right=40;

sum(left, right);
avg(left, right);

 

 

객체화

 

  •  

class Calculator{        => 지금부터 Calculator 객체의 설계도를 알려주겠다라고 컴퓨터에 알려줌
int left, right;

public void setOprands(int ①left, int right) {
this.③left = ②left;      => this : c1 인스턴스 가리킴 = 인스턴스 자신 = Calculator 변수 전역에서 적용되는 int left
this.right = right;
}

public void sum() {
System.out.println(this.left + this.right);
}

public void avg() {
System.out.println((this.left+this.right)/2);
}
}



public class CalculatorDemo4 {

public static void main(String[] args) {

Calculator c1 = new Calculator();  => 객체  // Calculator 객체를 c1 변수에 담음
c1.setOprands(10,20); // 10, 20이라는 인자를 setOprands(연산 대상이 될 값) 메소드에 전달
c1.sum();  //30
c1.avg();   //15

Calculator c2 = new Calculator(); => 새로운 객체를 c2라는 변수에 담음 : 인스턴스
c2.setOprands(20,40);
c2.sum();
c2.avg();

 

 

- c1, c2 (인스턴스)는 caculator 클래스라는 설계도에 따라 만들어진 제품들

- c1은 calculator 객체 담을 수 있는 컨테이너

- calculator라는 사용자 정의 데이터 타입을 만드는 것

 

  • ㅇㅇ