✍ Today I Learned
- 오늘은 여러 퀴즈 문제를 풀었다. 확실히 자바스크립트로 한 번 풀어봤던 문제들이라 자바로도 어렵지 않게 풀 수 있었다. 가장 어려웠던 부분은 각 클래스를 연결하여 하나의 큰 개념을 만들어내는 것이었는데 클래스를 분석하는 작업이 선행되어야 한다는 걸 깨달았다.
- 클래스를 분석하는 작업은 추상화를 의미한다. 생성하려는 객체가 무엇이고, 어떤 것들이 포함되어야 할지 항상 생각하자.
System.out.printf("%.2f");
- DecimalFormat 외에 소수점을 조정할 수 있는 방법. (추천 방식은 아님)- 하나의 패키지 안에 같은 이름의 클래스를 둘 이상 정의할 수 없다. (패키지가 다르면 같은 이름 가능)
[생성자 Constructor]
- 생성자란? 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 메서드이다.
- 목표 객체를 명확히 하기 위해 생성자의 이름은 해당 클래스와 일치해야 한다.
- 리턴 값이 없지만 리턴 타입을 void로 선언하지 않는다.
- 패키지를 넘나들 수 있도록 public으로 선언한다.
- 별도로 생성자를 정의하지 않으면 자바 컴파일러가 기본 생성자(default constructor)를 추가한다.
- 매개변수를 가지는 생성자를 하나라도 정의했다면, 기본 생성자는 자동으로 추가되지 않는다.
- 생성자는 초기화를 위한 데이터를 파라미터로 전달받을 수 있다.
- 하나의 클래스가 여러 개의 생성자를 가질 수 있다. (메서드 오버 로딩)
- 멤버 변수는 정적인 역할로 데이터를 정의하고 메서드는 동적인 역할로 데이터를 설정한다면, 클래스는 2가지 역할을 동시에 한다. 정적인 대상의 이름을 표시하고, 동적으로 객체를 생성한다.
- 이클립스 생성자 단축키는 alt+shift+s>o
public class Main {
int modelYear;
String modelName;
public Main(int year, String name) {
modelYear = year;
modelName = name;
}
public static void main(String[] args) {
Main myCar = new Main(1969, "Mustang");
System.out.println(myCar.modelYear + " " + myCar.modelName); // 1969 Mustang
}
}
- 하나의 .java 파일에 서로 다른 클래스가 존재하면 자바 컴파일러는 class를 중심으로 컴파일한다.
- 클래스 앞에 아무것도 적지 않으면 default로 선언되어 같은 패키지 안에서만 접근할 수 있다.
- 주로 변수는 private으로 선언하고, getter와 setter는 public으로 선언한다.
- 하위 패키지는 .(점)으로 연결한다.
- 이클립스에서 hierarchical 구조로 패키지를 보고 싶다면? Package Explorer menu > Package Presentation > Hierarchical로 설정한다.
[클래스를 분리하여 뱅킹 시스템 만들기]
- BankAccount, Banker, User 클래스를 생성하여 계좌 개설, 잔액 조회, 입금 및 출금 기능을 다음과 같이 구현해보았다.
- BankAccount 클래스 생성자 메서드에 파라미터로 현금 데이터를 전달하면 그 현금이 입금된 계좌 객체를 생성한다.
- User 클래스 생성자 메서드에 파라미터로 이름, 현금 보유액, 위에서 만든 BankAccount 객체를 전달하면 고객의 정보가 담긴 객체를 생성한다.
- Banker 클래스에 view, saving, withdraw 메서드를 생성하여 각 기능을 수행한다.
- 메서드 내에서는 각 클래스의 getter와 setter를 이용하여 잔액을 조회하거나 설정한다.
'📝 TIL' 카테고리의 다른 글
[TIL] Java 뱅킹 시스템, 호텔 객실 관리 프로그램 (0) | 2022.05.17 |
---|---|
[TIL] Java 뱅킹 시스템, 은닉화 (0) | 2022.05.16 |
[TIL] Java 메서드, 오버로딩, 재귀호출, 클래스 (0) | 2022.05.12 |
[TIL] Java 버블정렬, 선택정렬, 퀴즈파티 (0) | 2022.05.11 |
[TIL] Java 타입 변환, 연산자, 조건문, 반복문, 배열 (0) | 2022.05.10 |