- 상속과 위임의 차이
위임: 다른 클래스의 객체를 멤버로 갖는 형태의 클래스
- 두 클래스 관계가 ‘IS-A’ 관계이면 상속을 써야한다.
- 기존에 존재하는 API에 넘겨줘야 하는 경우 상속을 써야한다.
- final 클래스를 확장하고 싶은 경우 위임을 써야한다.
상속으로 클래스를 정의한 경우 부모 클래스와 자식 클래스 사이에는 강한 연관관계가 생기게 된다. 이 경우 부모 클래스의 동작이 변경되면 자식 클래스의 동작도 모두 영향을 받게 된다.
Java 프로그래밍에서 상속은 한 클래스가 다른 클래스의 속성을 가져오는 과정입니다. 즉, 파생 클래스 또는 자식 클래스라고 하는 새 클래스가 기본 클래스 또는 상위 또는 부모 클래스라고 하는 기존 클래스의 속성과 동작을 이어받습니다.
위임은 단순히 어떤 일을 다른 사람에게 넘기는 것입니다.
위임은 상속의 대안이 될 수 있습니다.
위임이란 다른 클래스의 객체를 인스턴스 변수로 사용하고 인스턴스로 메시지를 전달하는 것을 의미합니다.
인스턴스가 새로운 클래스가 아니라 이미 알려진 클래스의 인스턴스이기 때문에 전달할 메시지 하나하나에 대해 생각하게 만들고, 슈퍼클래스의 모든 메서드를 강제로 받아들이지 않고 실제로 의미가 있는 메서드만 제공할 수 있기 때문에 많은 경우에 상속보다 낫습니다.
위임은 한 객체가 특정 메서드 호출을 다른 객체, 즉 델리게이트라고 하는 객체에게 전달하는 객체 간의 관계로 볼 수 있습니다.
위임의 가장 큰 장점은 런타임 유연성으로, 위임자는 런타임에 쉽게 변경할 수 있습니다. 그러나 상속과 달리 위임은 대부분의 객체 지향 언어에서 직접적으로 지원되지 않으며 동적 다형성을 용이하게 하지 않습니다.
- 참조, 참조 변수기본타입 변수는 실제 값을 변수에 저장하는 것이고, 참조타입 변수는 메모리의 번지를 변수 안에 저장한다.
- 참조 타입이란 객체의 번지를 참조하는 타입으로 배열, 열거,클래스,인터페이스를 말한다.
- ./gradlew 명령어
- tasks - 프로젝트의 작업단위이다. gradle이 제공하는 task들이 있고, build.gradle에서 사용자가 직접 만들 수 있다.
- run - 컴파일 후 메인클래스를 실행한다.
- test -
- compileJava
- clean
- assemble
- 폴더가 여러 개 있는 경우 ./gradlew compileJava하면 된다.
- resources에 자바가 아닌 다른 것들을 넣을 수 있다.
- plugins 안에는 지원하는 뭔가를 넣는다. ex) Java,kotiln
JUnit목차
목차-
- compileTestJava - 테스트를 컴파일할 때 필요한 추가적인 의존성
이름 부모 사용하는 태스크 의미
compile | - | compileJava | 컴파일 시점 의존성 |
runtime | compile | - | 실행시 의존성 |
testCompile | compile | compileTestJava | 테스트를 컴파일할 때 필요한 추가적인 의존성 |
testRuntime | runtime, testCompile | test | 테스트만 실행할 때 필요한 추가적인 의존성 |
archives | - | uploadArchives | 해당 프로젝트가 생성한 Artifact(jar 등) |
default | runtime | - | 이 프로젝트에서 기본으로 사용되는 의존성. 이 프로젝트의 실행시에 필요한 Artifact들과 의존성을 포함한다. |
- JUnit5 - 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크이다.\
- 생성자 메서드 오버로딩 - 클래스 내에서 같은 이름의 메소드를 여러 개 만드는 것.
- 메서드 오버라이딩 - 슈퍼 클래스에 구현된 메소드를 , 서브 클래스에서 자신의 특징에 맞게 동일한 이름으로 다시 구현한 것.
- 프레임워크 - 개발자가 Java 프로그 래밍 언어로 애플리케이션을 만들기 위해 사용하는 미리 작성된 코드의 본문.
- Annotation - 주석이라는 의미를 가진다.
- 용도
-
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
- 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
- 실행시(런타임시)특정 기능을 실행하도록 정보를 제공
-
- 용도
TDD
- 테스트 주도 개발(Test Driven Development) - 결과를 먼저 생각하고, 그 결과를 내기 위해 최선을 다 하는 개발.
- TDD 사이클(RED → GREEN → REFACTOR)
- 실패하는 테스트(내가 원하는 걸 기록)
- 뭐라도 만들어 보기.
- 제대로 된 모양으로 고치기
- expression(식)과 statement(문)
- expression - 값을 기술하는 것이다. 컴파일러에 의해 값으로 평가될 수 있어야한다. 즉, 식은 하나의 값으로 치환된다. ex) 함수 호출, 객체 할당, 산술식
- statement - 프로그램 내에서 하나의 동작을 기술 하는 것. ex)변수 선언과 할당, 조건문, 반복문
- 응집도와 결합도
- 응집도 - 한 모듈 내부의 처리 요소들이 서로 관련되어 있는 정도. 즉, 모듈이 독립적인 기능을 수행하는지 또는 하나의 기능을 중심으로 책임이 잘 뭉쳐있는지를 나타내며 모듈이 높은 응집도를 가질 수록 좋다.
- 결합도 - 서로 다른 모듈 간에 상호 의존하는 정도 또는 연관된 관계를 의미.
- 추상화 레벨
- 추상화란 복잡한 자료,모듈,시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
- 추상화가 필요한 이유는 복잡성을 숨기고 사용되는 단순한 형식만 노출해 코드를 체계화.
- 높은 레벨로 갈 수록 물리 장치에서 멀어지고 프로그래밍에서는 일반적으로 높은 레벨일 수록 프로세스와 멀어지고 관리해야하는 세부적인 내용이 적음.