1주차 프리코스 미션이 끝나고
제이슨 님의 숫자야구 피드백 강의와 자바기초 강의를 수강하였다.
자바 문법이 분명 허들이 될 수 있다는 말씀과 함께
OOP적 사고와 개념을 적극적으로 받아들인다면
문법은 부수적인 요소일 뿐이라는 응원이 마음에 남는다.
할 수 있다.
>> 학습 내용 정리
>> build 도구의 역할(gradle)
- 파이썬의 pip와 같은 기능
- 외부 라이브러리나 기능들을 자동으로 추가해줌
- 프로젝트의 뼈대와 구조를 잡아줌
>> main 과 test 디렉토리
- main : 최종적으로 배포할 코드
- test : 기능 test code / production test
>> 프로그램의 시작점
: public static void main(String[] args)
>> package
: 디렉토리가 곧 패키지라고 생각해도 됨
: 어떤 프로그램의 애플리케이션인지 파악이 가능
: 패키지를 먼저 찾고 프로그램을 생각하는 습관을 기르자
>> class의 네이밍은 메소드 행위와 연관지어 파악되므로 매우 중요하다
>> 클래스가 가질 수 있는 행동(메소드)
- 메소드의 시그니처 : 메소드 이름 + 매개변수 자료형
>>접근 지정자 : public, private 등
- 이 class를 어디까지 열어줄지 지정
- public : 클래스 외부에서 접근 가능
- private : 내부에서 접근이 가능
- protected
>> directory import
: 클래스 링킹을 위해 외부에 선언된 클래스 사용시 경로를 import 하여 연결
>> 클래스 선언 및 할당
e.g)
Calculator teacher = new Calculator();
=> 인스턴스가 변수 내로 복사됨
>> 멤버변수(인스턴스 변수)
: 클래스 단위로 변수를 관리 및 접근
: 접근 지시자를 통해 공개범위 설정 가능
: 메소드 내에서 같은 이름으로 선언된다면 => 지역변수
: 객체별로 각자의 멤버변수를 지니며 서로 공유하지 않음
>> 클래스 변수
: public static int shareResult=0;
: static 변수 => 모든 인스턴스가 공유하는 변수
: 클래스에서 바로 접근이 가능(인스턴스 접근도 가능)
>>변하지 않게 상수화하는 법
: final => 변화를 하면 오류 반환
: 상수의 이름은 대문자 + _로 구성됨
>> OOP의 개략적인 스텝
1. 기능을 가지고 있는 클래스를 인스턴스화(=객체)힌디.
2. 필요한 기능을 역할에 맞는 인스턴스가 수행하게 한다.
3. 각 결과를 종합한다.
>> Intellij의 자동정렬기능
: Ctrl + Alt + L
=> 패키지를 누르고 실행하면 전체적으로 적용됨
>> 정적 메소드에서는 정적 메소드만 호출 가능
>>test code 작성법
:class에서 Alert +Insert => test code 클릭
: test code case만들고 결과값과 비교
=> 버그를 가장 먼저 알아챔
>>반복되는 코드를 @BeforeEach를 통해 넣어줄 수 있음
=> 매 테스트 코드에 다음 명령어가 삽입됨
>> 배운 점
1. skeleton code 작성의 중요성
: 이번 강의를 수강하다 느낀 가장 큰 깨달음 프로그램의 전체적인 구조 설계의 중요성이다.
: 추상적인 개념으로 시퀀스를 정의했던 나와 달리 정확한 주체별 기능을 구분하고 이 객체들이 어떤 상호작용을 주고 받는지 명확하게 필요한 메소드를 정리하는 과정은 프로그램 구현은 물론 흐름을 직관적으로 받아들일 수 있는 계기가 되었다.
2. 습관적으로 final을 붙이자
: 강의 중간중간에 습관적으로 final을 붙이고 시작하는 모습에서 상수화의 중요성을 느꼈다.
: 혹시모를 변동이나 인터럽트에 대비해 최대한 상수화하려 애쓰자
3. static의 의미와 적극적인 활용법
: 인스턴스 변수와 클래스 변수의 정의를 정확히 구분할 수 있게 되었고, 주로 인스턴스 변수만을 활용했던 것에 반해 static 변수도 적극적으로 활용해야 겠다는 생각이 들었다. 특히 객체 자체가 공통값으로 가지는 초기값이나 상수화하여 가져도 되는 값들은 클래스 변수로 선언하는 습관을 가지는 것이 좋을 것 같다.
4. TDD의 기초적인 방법
: 알고리즘 문제를 풀 때는 항상 화이트박스 테스트를 진행해왔고 내가 입력값을 주고 중간중간 출력문을 넣어주며 오류가 나는 부분을 찾고자 애썼다. 그래서 인지 테스트 코드 작성과정이 신선하고 파격적으로 다가왔다.
'우테코' 카테고리의 다른 글
우테코 2주차 - [자동차 경주] : TDD 작성 (0) | 2023.11.01 |
---|---|
우테코 2주차 - [자동차 경주] : 기능 구현 (0) | 2023.11.01 |
우테코 2주차 - [자동차 경주] 프로그래밍 요구사항 파악 + 구현 기능 목록 작성 (0) | 2023.11.01 |
우테코 2주차 - 1주차 공통 피드백 검토 (0) | 2023.11.01 |
우테코 2주차 - Git & GitHub 기능 강의 수강 (0) | 2023.10.31 |