728x90
JAVA 객체 지향 프로그래밍 - 3. 변수와 메소드
※이클립스 Refactor- extract method 기능
- 자동으로 메소드 만들어주는 기능
이전 메소드 수업에서 3가지 형태를 좀 더 풀어서 설명하시는 듯함
1.메소드
2.클래스 소속 메소드
3.인스턴스 소속 형태 메소드
아래부터는 코드를 점점 개선해 나아갈 것인데 뭐가 문제점이고 어떻게 개선시키는지를 중점적으로 보자
OOP 03_1 : 변수와 메소드 - 메소드 호출 방식
메소드 생성하고 해당 메소드를 호출 & 메소드 한 줄마다 파라미터를 지정해줘야함
많은 양의 코드에서 일일히 다 수정하기가 불가능하기에 구분자만 바꿀 수 있도록 지정 해주는 것
// OOP 03_1 : 변수와 메소드
// 1.메소드
// 2.클래스 소속 메소드
// 3.인스턴스 소속 메소드
// 1.메소드
//
// 메소드 생성하고 해당 메소드를 호출 & 메소드 한 줄마다 파라미터를 지정해줘야함
public class OOP03_1 {
public static void main(String[] args) {
printA();
printA();
printB();
printB(); // 이 방식은 메소드 한줄마다 바꿔줘야함. 그래서 구분자 변수 지정(String delimiter = "----";) 하는 것
}
public static void printA() {
// ... 1억줄 코드
System.out.println("----"); // 여기서 구분자를 ----으로했지만
System.out.println("A"); // 위 printA()에서 *로 하고 싶다면?
System.out.println("A"); // 각각의 메소드에 파라미터 지정해주는 것
// 옆 메소드에서 printA()에 타입,변수지정
// 및 지정변수 println하고
// (메소드09번 수업1,2,3에서 변환한 그거인듯)
}
public static void printB() {
// ... 1억줄 코드
System.out.println("====");
System.out.println("B");
System.out.println("B");
}
}
OOP 03_2 : 변수와 메소드 - 메소드 호출 + 구분자 방식
위의 03_1 방식에서 매 메소드마다 바꾸지 않아도 되게끔 따로 구분자만 변수 처리해서 한번만 바꾸도록 개선
// OOP 03_2 : 변수와 메소드
public class OOP03_2 {
public static void main(String[] args) {
// 1억줄 코드에 자주 구분자를 바꿔줘야한다면?
// 변수를 지정해주자 ↓↓↓
String delimiter = "----";
printA(delimiter);
printA(delimiter);
delimiter = "====";
printB(delimiter);
printB(delimiter);
}
public static void printA(String delimiter) {
// ... 1억줄 코드
System.out.println(delimiter);
System.out.println("A");
System.out.println("A");
}
public static void printB(String delimiter) {
// ... 1억줄 코드
System.out.println(delimiter);
System.out.println("B");
System.out.println("B");
}
}
OOP 03_3 : 변수와 메소드 - 메소드 호출 + 구분자 + 유효범위확장 방식
서비스를 하고 기능이 많아지면 여러 주제의 메소드도 늘어나고 메소드만 1억개라면...?
이 메소드를 주제별로 정리해줄 구원자가 class
인자로 변수를 주는 것도 싫다면?
메인 메소드 안 delimiter를 메소드 안에서 메소드 밖에 있는 delimiter값을 사용하면 됨. 다만, 유효범위 체크
delimiter 인식 순서 & 유효범위
메인 메소드 안에 delimiter 변수를 먼저 찾고 없으면, 이 파일 클래스 전체에서 찾는 것
printA() 메소드 안에 delimiter가 없다면, 이 파일 클래스(메인 메소드 위에)에서 찾아서 사용
// OOP 03_3 : 변수와 메소드
public class OOP03_3 {
public static String delimiter = "";
//메인 메소드 안 delimiter를 메소드 안에서 메소드 밖에 있는 delimiter값을 사용하게끔 지정
public static void main(String[] args) {
// 인자로 변수를 주는 것도 싫다면?
//
// 메인 메소드 안 delimiter를 메소드 안에서 메소드 밖에 있는 delimiter값을 사용하면 됨
// 다만, 유효범위 체크
delimiter = "----"; // 이 delimiter = public static String delimiter = "";
printA(); // 메인 메소드 안에 delimiter 변수가 없기에 이 파일 클래스 전체에서 찾는 것
printA();
delimiter = "===="; // 이 방식은 구분자 하나만 바꿔주면 끝
printB();
printB(); // 이 방식은 메소드 한줄마다 바꿔줘야함. 그래서 구분자 변수 지정(String delimiter = "----";)
}
public static void printA() {
// ... 1억줄 코드
System.out.println(delimiter); // printA() 메소드 안에 delimiter가 없다면
System.out.println("A"); // 이 파일 클래스(메인 메소드 위에)에서 찾아서 사용
System.out.println("A"); //
}
public static void printB() {
// ... 1억줄 코드
System.out.println(delimiter);
System.out.println("B");
System.out.println("B");
}
// public static String delimiter = "";
// public static void printA() {
// public static void printB() { 와 같이 연관성이 깊고 같은 주제 코드들이 모여있지만
// 주제가 다 다른 코드들이 1억개라면 지옥 같이 복잡해짐
// 이 상황에서 구원자는 class!
}
728x90
반응형
'JAVA > 생활코딩 JAVA 객체지향' 카테고리의 다른 글
JAVA 객체 지향 프로그래밍 - 5. 인스턴스 (0) | 2022.02.01 |
---|---|
JAVA 객체 지향 프로그래밍 - 4.2. 클래스 - 형식 (0) | 2022.01.31 |
JAVA 객체 지향 프로그래밍 - 4.1. 클래스 - 존재 이유와 기본형식 (0) | 2022.01.31 |
JAVA 객체 지향 프로그래밍 - 2. 남의 클래스 & 남의 인스턴스 (0) | 2022.01.30 |
JAVA 객체 지향 프로그래밍 - 1. 수업소개(객체지향+절차지향 개념) (0) | 2022.01.27 |