반응형
package org.opentutorials.javatutorials.object;
public class CalculatorDemo {
public static void main(String[] args) {
// 아래의 로직이 1000줄 짜리의 복잡한 로직이라고 가정하자.
// 상당히 중복이 많다.
// 프로그래밍의 기본 원칙 중 하나는 중복을 없애는 것이다.
System.out.println(10 + 20);
System.out.println(20 + 40);
}
}
package org.opentutorials.javatutorials.object;
public class CalculatorDemo2 {
// 중복을 없애는 방법으로 메소드를 만드는 방법이 있다.
// sum이라는 메소드를 만들고 left, right라는 파라미터 값을 주면
// System.out.println(left + right);식으로 메소드를 구현해두어 중복되는 코드를 방지할 수 있다.
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);
}
}
package org.opentutorials.javatutorials.object;
class CalculatorDemo3 {
// 메소드를 따로 만들어두고
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) {
// left, right의 데이터 타입을 int로 지정
int left, right;
// left, right 변수에 값을 담아서 계산
left = 10;
right = 20;
sum(left, right);
avg(left, right);
left = 20;
right = 40;
sum(left, right);
avg(left, right);
}
}
반복을 없애려고 메소드를 썼지만, 결국 또 메소드를 반복하는 결과를 낳았다. 이래서 객체가 필요하다.
package org.opentutorials.javatutorials.object;
class Calculator{
// left, right에 대한 int 데이터 타입 선언
// 이 데이터는 이 객체 전역에서 접근가능한 데이터임.
int left, right;
// 리턴값이 없는 int left, int right을 파라미터로 갖는
// setOprands 메소드 작성
public void setOprands(int left, int right){
// this는 이 메소드가 소속된 클라스를 지칭함.
// 그러므로, this.left라는 것은
// Calculator라는 클래스에서 선언한 이 클래스 혹은
// 객체 전역에 영향을 미치는 left라는 뜻이고
// 연산자 오른쪽에 들어간 left는 현재 setOprands에서
// 사용하는 매개변수 즉, 파라미터값이 들어가는 것.
// 아래 c1.setOprands(10, 20);의 10은
// 여기서 파라미터값인 int left에 들어가고
// this.left = left; 라고 정의했음에 따라
// 10은 다시 전역에 영향을 미치는 int left(this.left)값에 들어가게 됨.
this.left = left;
this.right = right;
}
// this.left에 담긴 값을 이제 사용할 수 있게 되면서
// 아래와 같은 메소드를 사용할 수 있게 됨.
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) {
// c1: 클래스를 상속받아 실제로 만든 제품을 인스턴스라고 한다.
// Calculator는 c1이라는 변수의 클라스형 데이터타입이라고 이해할 수 있다.
// Calculator라는 클래스는 곧 설계된 구조를 뜻하고, c1이라는 인스턴스는
// 그 안에 실제로 사람이 들어와 살게 되는 인테리어로 비유할 수도 있다.
Calculator c1 = new Calculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
Calculator c2 = new Calculator();
c2.setOprands(20, 40);
c2.sum();
c2.avg();
}
}
반응형
'Programming > Java' 카테고리의 다른 글
자바 생성자 (0) | 2022.01.29 |
---|---|
유효범위 전역변수 지역변수 (0) | 2022.01.29 |
자바 입력과 출력 스캐너 scanner 사용법 (0) | 2022.01.29 |
자바 입출력 (0) | 2022.01.29 |
이클립스 단축키 정리 (0) | 2022.01.28 |