상속의 특징 private는 상속되지 않는다. abstract class는 new 키워드 사용으로 생성할 수 없다. 미완성 클래스이기 때문이다. 하지만, 생성자는 가질 수 있다. new로 직접 인스턴스 생성이 안되는 것이고 자식 클래스에서는 super()등으로 생성자 사용이 가능하다. 상속은 is-a 관계 즉, 계층구조일 때 사용된다. 포함관계가 될 때 사용한다. 상속을 사용한다는 것은 보통 abstract class를 사용을 의미하는 듯 하다. 일반클래스는 부모클래스로 사용되는 경우는 흔치 않은 듯 하다. 따라서 상속은 불완전한 클래스를 상속하여 완전하게 만드는 것(abstract를 구체화)을 의미한다. 상속은 캡슐화가 깨진다. 그 이유는 상속에서 오는 오류(메소드 오버라이드 등으로 일어나는 부수효과)..
STEP 1 PR링크 학습로그 1-1 [Java] LinkedList - 1 내용 LinkedList는 크기로 초기화가 되지 않음 LinkedList는 Queue, List 인터페이스를 구현함. 따라서 List 기능인 shuffle과 Queue를 같이 사용하려면 LinkedList 타입으로 받아주어야 한다. List타입으로 지정하면 Queue 구현이 안되고, Queue 타입으로 지정하면 shuffle 사용이 되지 않아 다운캐스팅 없이 LinkedList 타입으로 받아줘야 두 가지 인터페이스의 API를 모두 사용이 가능하다. 링크 javadocs LinkedList [OOP] Interface & abstract Class - 5 내용 언제 interface를 사용하고 언제 abstract를 사용하는게 좋..
단위테스트와 TDD는 다르다. 단위테스트는 프로덕션 코드에 대한 테스트코드를 작성하는 것이라면, TDD는 실패하는 컴파일 되는 테스트코드를 기반으로 프로덕션 코드를 작성해 나가는 것을 의미한다. 레거시 코드 TDD로 리팩토링하기 단위가 큰 프로젝트일수록 TDD를 진행하기가 어렵다. 특히, 리팩토링을 하거나 새로운 기능을 추가하게 되는 경우가 많은데 이럴 경우 프로덕션 코드 하나에 따른 다수의 테스트코드 수정이 발생할 수 있다. ✨점진적 리팩토링 - 오버로딩 : 컴파일이 가능하게 기존 메소드를 유지한 채, 시그니처가 다른 수정 메소드를 하나 더 만든다. (메소드 오버로딩) 생성자나 변수의 경우에도 마찬가지이다. 컴파일이 가능하게 중복을 유지한 채로, 점진적인 수정을 진행한다. 리팩토링을 하면서 중간에 배포..
가변인자 public class Main{ public static void main(String []args){ argsTest(1,2); // 변수여러개 } private static void argsTest(final int... numbers){ System.out.println("가변인자"); } private static void argsTest(final int number1, final int number2){ System.out.println("변수여러개"); } } ... 은 가변인자를 의미한다. 단순히 편하게 코딩하고 코드를 깔끔하게 하기 위해서 사용되는 듯하다. 컴파일러 내부적으로 배열로 전환한다. 따라서 위와 같이 호출하면, 컴파일러는 "변수여러개"를 선택한다. 매개변수 final..
Step1 PR 링크 학습로그 1-1 [TDD] TDD - 5 내용 TDD 원칙을 따라 구현하고자 하였다. 더 사전에 어떻게 객체에게 책임과 역할을 분배할 것인지 고민하게 되고 전체적인 구조를 생각하게 된다. // 주석으로 먼저 해야할 일을 적어보고 구현하면 역할 분담을 구체화하는데 도움이 되었다. 다양한 생성자와 인터페이스를 사용하여 객체의 활용도를 높인다. 테스트가 가능하게 최대한 값을 주입받도록 한다. 도메인에서 있는 최대한 많은 부분을 테스트코드로 작성하려고 했다. [Framework] MVC - 3 내용 TDD를 진행하니 좀 더 도메인 위주로 구현이 가능했다. MVC 패턴을 적용하기 좀 더 수월해진듯 하다. View와 Domain의 역할분리를 위해서 다소 반복되더라도 view 위한 코드는 vie..
지역변수에 final을 선언하는 것 final Local Variable - final is the only allowed access modifier for local variables. - final local variable is not required to be initialized during declaration. - final local variable allows compiler to generate an optimized code. - final local variable can be used by anonymous inner class or in anonymous methods. 출처: https://www.tutorialspoint.com/final-local-variable-in-J..
제네릭(Generics) 제네릭은 클래스, 인터페이스, 메소드를 정의할 때 매개변수로 받은 Type으로 정의된다. // 1. 제네릭 클래스 public Coffee{ // 객체를 생성할 때, new Class으로 하면 클래스 내부 T로 정의된 타입은 String이 된다. } // 2. 제네릭 인터페이스 public interface List extends Collection { // ... 리스트 인터페이스의 추상메소드들 } // 3. 제네릭 메소드 public static T order(T t){ /* 이 메소드에서 사용될 타입은 메소드의 수식자와 반환형 사이에 위치한다. (메소드에서 사용할 T타입이 있음을 로 알리는 것이다) 이 메소드에서 T 타입은 입력받은 T타입으로 정의된다. */ return t..

TDD(Test Driven Development)란? TDD = TFD(Test First Development) + 리팩토링 TDD는 테스트 주도 개발이다. 테스트를 먼저 진행하고 리팩토링을 진행하는 것을 합쳐서 TDD라고 한다. 코드는 기능 구현을 위한 Production Code와 테스트를 위한 Test Code로 나눌 수 있다. 테스트 주도 개발은 컴파일되는 Test Code를 먼저 작성한 뒤, 테스트가 통과할 수 있게 Production Code를 작성한다. 그 후, 코드를 리팩토링해나가는 방식이다. TDD를 하는 방법 컴파일되는 실패하는 테스트 코드를 구현한다. 테스트가 성공하도록 프로덕션 코드를 구현한다. 프로덕션 코드, 테스트코드를 리팩토링한다. 컴파일되는 실패하는 테스트코드를 구현하기 ..
- Total
- Today
- Yesterday
- 알고리즘
- Transaction
- 우테코수업
- java
- 모의면접준비
- 내부코드
- 마스터즈코스
- React
- 우아한테크코스
- python
- JS
- 운영체제
- 객체지향
- TIL
- 카카오
- TCP/IP
- 월간회고
- JPA
- 회고
- DB
- javascript
- 글쓰기미션
- CS
- OS
- 코드스쿼드
- 개발공부일지
- 학습로그
- Spring
- 네트워크
- 인증
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |