✍ Today I Learned
[계산기 만들기]
- switch문에서 string을 이퀄 연산하는 건 자바 1.7 버전부터 가능하다.
- 연산을 한 첫 번째 숫자와 두 번째 숫자를 사용자에게 입력받고 연산자를 switch문으로 돌려서 간단하게 구현하였다.
- 여기서 로직이 추가된다면? case 절의 연산이 다른 곳에서도 필요하다면? 답은 메서드!
[메서드 Method]
- 메서드(method)란? 어떠한 특정 작업을 수행하기 위한 명령문의 집합이다.
- 메서드를 사용하면 중복되는 코드를 줄일 수 있고, 모듈화로 인해 가독성도 좋아지고, 손쉽게 유지 보수할 수 있다.
- 메서드는 되도록 하나의 기능만 수행하는 것이 좋다.
- 메서드를 생성할 때는 항상 2가지를 생각한다. 1) 어떤 데이터를 파라미터로 전달할 건지 2) 어떤 데이터를 리턴할 건지
- 기본적인 아키텍처는 자바스크립트와 비슷하나 자바에서는 파라미터의 데이터 타입이 굉장히 중요하다.
- 접근제어자 반환타입 메서드이름(매개변수목록) 순서로 작성한다.
- void는 반환 값이 없다는 의미이다.
- 메서드의 리턴은 단일 데이터 타입만 가능하다.
- 메서드를 변수로 받아 다양하게 활용할 수도 있다.
[숫자 야구 게임 메서드로 기능 분리]
- 랜덤 숫자 생성 메서드, 유저 숫자 입력받는 메서드, 숫자 비교 메서드, 결과 출력 메서드로 기능을 분리한다.
- while문을 제어하는 부분이 헷갈렸는데, 결과 출력 메서드의 리턴을 boolean으로 주고 그걸 flag 변수로 받아서 while문의 조건절에 넣는다.
- Scanner를 사용하는 메서드가 한정적이라면 굳이 전역으로 선언하지 말고 파라미터로 던진다.
- 클래스 내에서만 변수 선언이 가능하다.
[메서드 오버 로딩 Method Overloading]
- 메서드 오버 로딩이란? 서로 다른 시그니처를 갖는 여러 메서드를 같은 이름으로 정의하는 것이다. 자바에서는 원래 한 클래스 내에 같은 이름의 메서드를 가질 수 없지만, 파라미터의 데이터 타입이나 개수를 다르게 하면 하나의 이름으로 메서드를 작성할 수 있다.
- 메서드 오버 로딩을 사용하면 메서드에 사용되는 이름을 절약할 수 있고, 메서드를 호출할 때 전달해야 할 파라미터의 타입이나 개수에 관계없이 호출할 수 있다.
- 객체 지향 프로그래밍의 특징 중 하나인 다형성(polymorphism)을 구현하는 방법 중 하나이다.
- 메서드의 리턴 타입은 오버 로딩에 영향을 주지 않는다.
- 그럼 리턴 타입만 다르게 같은 메서드를 만들고 싶으면? 파라미터의 순서를 바꾸면 된다.
[재귀 호출 recursive call]
- 재귀 호출이란? 메서드 내부에서 해당 메서드가 또다시 호출되는 것을 의미한다.
- 재귀 호출을 중단할 수 있는 종료 조건과 연산 식이 반드시 있어야 한다.
// 10까지의 모든 숫자 더하기
public class Main {
public static void main(String[] args) {
int result = sum(10);
System.out.println(result); // 55
}
public static int sum(int k) {
if (k > 0) {
return k + sum(k - 1);
} else {
return 0; // i가 0이 되면 종료
}
}
}
// 피보나치 수열
public class Main {
public static void main(String[] args) {
int n = 6;
for (int i = 0; i < n; i++) {
System.out.print(fibos(i) + " "); // 1 1 2 3 5 8
}
}
public static int fibos(int i) {
if(i == 0 || i == 1) {
return 1;
} else {
return fibos(i-2) + fibos(i-1);
}
}
}
[클래스 Class]
- 클래스란? 객체를 정의하는 틀 또는 설계도와 같은 의미이다. 객체의 상태를 나타내는 필드(field)(=클래스에 포함된 변수)와 객체의 행동을 나타내는 메서드(method)로 구성된다.
- 인스턴스란? 해당 클래스 타입의 객체로 선언되어 메모리에 할당된 객체를 의미한다.
public class Main {
int x = 5;
public static void main(String[] args) {
Main myObj = new Main();
System.out.println(myObj.x); // 5
}
}
[클래스를 이용하여 뱅킹 시스템 만들기]
- 계좌 클래스를 생성하여 예금주, 계좌번호, 계좌 잔액을 설정할 변수와 메서드를 정의한다.
- 각 데이터를 설정하는 setters와 데이터를 가져오는 getters가 있다. (이때 this는 해당 인스턴스의 주소를 가리킨다.)
- 이클립스에서는 이걸 자동완성으로 만들어준다. (세상에) 단축키는 alt+shift+s > r > alt+a(모두 선택) > alt+r(생성)
- 정보 시스템 구축의 4단계는 분석 -> 설계 -> 구현 -> 테스트이다.
- 클래스를 생성할 때는 어떠한 목적으로 만드는지 분석하는 것이 먼저이다!
'📝 TIL' 카테고리의 다른 글
[TIL] Java 뱅킹 시스템, 은닉화 (0) | 2022.05.16 |
---|---|
[TIL] Java 퀴즈파티, 생성자, 뱅킹 시스템 (0) | 2022.05.13 |
[TIL] Java 버블정렬, 선택정렬, 퀴즈파티 (0) | 2022.05.11 |
[TIL] Java 타입 변환, 연산자, 조건문, 반복문, 배열 (0) | 2022.05.10 |
[TIL] Java 개발 환경 설정, 데이터 타입, 입출력 (0) | 2022.05.09 |