개인프로젝트의 로직은 어제 다 짰고, 오늘부터는 수정 및 디버깅을 했다.
다행히 팀원분께서 도와주셔서 치명적인 버그를 4개나 찾았고, 모두 수정 완료 하였다.
문제는 이 기능들을 수정하느라 코드가 또 더러워졌다.
1 ~ 3번은
String으로 입력받아서 int로 바꾼다음,
그 값이 이상하거나(String이거나) 메뉴보다 많은 수(5)를 입력하면 걸러주도록 처리했다.
4번은
String.format(".1f)을 이용했다
String과 int를 바꿔주는 코드, 그걸 판단하기 위한 if문과 다른 로직이 추가되어서 스스로 짜면서 답답해했다.
주말동안 자바의정석이랑 다른 코드들을 보며 클래스 / 함수를 좀더 잘 활용할 수 있도록 공부해야겠다고 생각하였다!
그리고 평소에도 클래스 / 추상화 / 인터페이스 부분이 헷갈렸었는데, 오후에 튜터님이 강의를 해주신 내용을 잠깐 정리 해 보 았다.
인터페이스는 예시로 <계산기> 라는 틀에서
1. 공학용 계산기
2. 다른 계산기
처럼 두가지 가지로 나뉠 때 쓴다?
추상이랑 똑같지않나
다른점
1. 우선 멤버변수를 가질 수 없다
2. 인터페이스는 다중상속이 된다
3. 추상화 : <일반화된 개념>으로 묶을 때
인터페이스 : <행위적 일관성>으로 묶을 때 (able)
선풍기 / 회전할 수 있는 / 기계(바람을쓴다)
헬리콥터 / 회전할 수 있는 / 기계(바람을쓴다)
바람개비 / 회전할 수 있는 / 종이(바람을쓴다)
인터페이스 추상화
이럴 때 인터페이스를 쓴다
!기억해두기{
인터페이스는 멤버변수를 가질 수 없다
인터페이스는 다중상속이 된다.
}
인터페이스에서 변수선언하면 무조건 static final이 컴파일과정에서 붙는다
static은 멤버변수가 아니니까 얘는 오브젝트가 아니라 클래스 개념의 변수기 때문에
하지만 인터페이스 안에는 지양