오늘 진행한 학습 요약
1. 나무반 4회차
- 코드 디버깅 방법 (intellij)
- 코드 리팩토링
2. 추상클래스 개념 공부
- 추상클래스의 작성
자바의 정석 - 추상클래스의 작성1 : https://youtu.be/SBdXXWIB3To?si=rdT0y6jtACXVNzmQ
자바의 정석 - 추상클래스의 작성2 : https://youtu.be/s0gRBHqa0yg?si=cWo3YOfWVR1Gyj-j
3. 향상된 for문 정리
- 향상된 for문이란?
- 일반 for문과 향상된 for문의 차이
생활코딩 - for-each : https://youtu.be/EcLZUcCLRxg?si=x25HtdkcfJ2ohOIM
4. 알고리즘 코드카다 Day10 (작성 생략)
CodingTest Git-hub 링크 : https://github.com/chews26/CodingTest
5. Git-hub profile 업데이트 (작성 생략)
Git-hub 링크 : https://github.com/chews26
학습 정리
1. 나무반 4회차
- 코드 디버깅 방법 (intellij)
- 디버그모드(Shift +F9) 로 항상 실행할 것!
- 중단점(브레이크 포인트)은 코드가 실행되는 부분에 하나만 찍어도됨.
- 이상이 없으면 넘길 부분뒤에 중단점을 찍고 프로그램재개(F8)실행
- Step In (F7): 메서드 호출 내부로 들어가 세부사항을 확인
- Step Over (F8): 메서드를 실행만 하고 내부로 들어가지 않음
- Step Out (Shift + F8): 현재 메서드를 빠져나옴
- 값 수정: Variables 창에서 변수 값을 더블 클릭하면 수정이 가능
- 예외 발생 시 디버그: 특정 예외가 발생할 때 자동으로 디버그가 멈추도록 설정
- 코드 리팩토링
- 예시로 설명해주셔서 따로 정리
- 함수 추출(Extract Method): 여러 곳에서 반복되는 코드나 긴 메서드를 더 작은 함수로 분리하여 코드 중복을 줄이고 가독성을 높입니다.
- 변수명 개선(Rename Variable): 직관적이지 않은 변수명을 의미 있는 이름으로 바꿔 가독성을 높입니다. 예를 들어, a 대신 totalCount 같은 구체적인 이름을 사용합니다.
- 매직 넘버 제거(Remove Magic Numbers): 코드 내의 상수값을 의미 있는 변수로 치환하여 코드의 의미를 명확하게 만듭니다. 예를 들어, 3.14159를 PI로 정의하여 사용합니다.
- 조건문 단순화(Simplify Conditionals): 복잡한 조건문을 단순하게 표현하거나, 메서드로 분리하여 코드 흐름을 명확하게 만듭니다. 삼항 연산자나 switch 구문을 적절히 사용해 가독성을 높일 수 있습니다.
- 클래스 분리(Split Class): 하나의 클래스에 너무 많은 역할이 모여 있을 경우, 이를 여러 클래스로 분리해 책임을 명확히 합니다.
- 인터페이스 도입(Introduce Interface): 공통된 기능을 수행하는 클래스들에 대해 인터페이스를 도입하여 유연성을 높이고 의존성을 줄입니다.
- 반복문 단순화: 복잡한 반복문을 단순화하거나 스트림(stream)을 사용하는 등, 더 읽기 쉬운 방식으로 변경합니다.
2. 추상클래스 개념 공부
- 추상클래스의 작성
- 공부를 해도 헷갈려서 다시 한번 더 공부
- 추상화의 장점 : 구체화된 코드보다 유연, 변경에 유리
- 애매하게 쓰니 유연하고 변경에 유리하다.
abstract class Race { // 종족이라는 추상 클래스
abstract void attack(); // 공격은 종족마다 다르게 구현
abstract void move(); // 이동도 종족마다 다르게 구현
}
class Terran extends Race {
@Override
void attack() {
System.out.println("테란: 총을 쏜다!");
}
@Override
void move() {
System.out.println("테란: 걸어서 이동한다.");
}
}
class Zerg extends Race {
@Override
void attack() {
System.out.println("저그: 발톱으로 공격한다!");
}
@Override
void move() {
System.out.println("저그: 기어 다닌다.");
}
}
class Protoss extends Race {
@Override
void attack() {
System.out.println("프로토스: 플라즈마를 발사한다!");
}
@Override
void move() {
System.out.println("프로토스: 순간이동한다.");
}
}
- 그럼 인터페이스는 무엇인가?
- 모두가 공통으로 사용할 수 있는 능력
interface Healing {
void heal(); // 치유 능력
}
interface Cloaking {
void cloak(); // 은폐 능력
}
class Medic extends Terran implements Healing {
@Override
public void heal() {
System.out.println("메딕: 아군을 치료한다!");
}
}
class Ghost extends Terran implements Cloaking {
@Override
public void cloak() {
System.out.println("고스트: 은폐한다.");
}
}
3. 향상된 for문 정리
- 향상된 for문이란?
- 배열이나 컬렉션의 객체를 반복할 때 사용하는 문법
- 기존 for문보다 코드가 간결해짐!
- 순차적으로 탐색할 때 유용하지만 특정 인덱스를 건너뛰거나 역순으로는 탐색 불가
- 일반 for문과 향상된 for문의 차이
- 일반 for문
- 특정범위의 요소만 반복하거나 역순으로 반복이 가능
- 인덱스를 통해 배열의 요소를 직접 변경 가능
- 향상된 for문
- 순차적으로 반복할 때만 사용 가능
- 읽기 전용
- 일반 for문
향상된 for문 | Notion
향상된 for문(Enhanced for loop)은 자바(Java)와 같은 언어에서 배열이나 컬렉션 객체를 반복할 때 사용하는 문법입니다. 일반적인 for문보다 코드가 간결해지고, 반복 작업을 읽기 쉽게 작성할 수 있습
shinelee26.notion.site