객체지향 이전의 코딩
클래스, 인스턴스 = 설계도, 제품
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라는 사용자 정의 데이터 타입을 만드는 것
- ㅇㅇ
'Programming > 자바' 카테고리의 다른 글
생활코딩 자바 - 유효범위 (0) | 2022.04.01 |
---|---|
생활코딩 자바 - 클래스 멤버, 인스턴스 멤버 (0) | 2022.03.28 |
생활코딩 자바 - 객체지향 프로그래밍 (0) | 2022.03.25 |
생활코딩 자바 - 입력과 출력(Input &Output, IO) (0) | 2022.03.19 |
생활코딩 자바 - 메소드 (0) | 2022.03.19 |