서론 상속의 첫 번째 용도는 타입 계층을 구현하는 것입니다. 타입 계층의 관점에서 부모 클래스는 자식 클래스의 일반화이고 자식 클래스는 부모 클래스의 특수화입니다. 상속의 두 번째 용도는 코드 재사용입니다. 상속을 사용하면 점진적으로 기능을 확장해나갈 수 있습니다. 다만 부모 클래스와 자식 클래스 간에 강하게 결합되기 때문에 변경이 어려워집니다. 우리는 상속을 코드 재사용의 목적이 아닌 타입 계층을 구현하기 위해서 상속을 사용해야 합니다. 타입 객체지향 프로그래밍 언어에서 타입을 이해하기 위해서는 프로그래밍 언어 관점에서의 타입과 개념 관점에서의 타입을 살펴봐야합니다. 타입은 적용 가능한 오퍼레이션의 종류와 의미를 정의함으로써 코드의 의미를 명확하게 전달하고 개발자의 실수를 방지하기 위해서 사용합니다. ..
서론 상속의 목적은 코드를 재사용하기 위함이 아닙니다. 상속은 타입 계층을 구조화하기 위해서 사용해야하며 조금 더 쉽게 이해하자면 같은 범주로 묶기 위해서 사용해야 합니다. 다형성 다형성이란 그리스어에서 "많은"을 의미하는 poly와 "형태"를 의미하는 morph의 합성어로 "많은 형태를 가질 수 있는 능력"을 의미합니다. 컴퓨터 과학에서는 다형성을 하나의 추상 인터페이스에 의해 코드를 작성하고 이 추상 인터페이스를 활용하여 서로 다른 구현을 연결할 수 있는 능력으로 정의하고 있습니다. 💡 다형성의 분류 다형성은 아래와 같은 사진처럼 분류할 수 있습니다. 매개변수 다형성이란? 매개변수 다형성이란 제네릭 프로그래밍과 관련이 높습니다. 클래스의 인스턴스 변수나 메서드의 매개변수 타입을 임의의 타입으로 선언한..
서론 상속은 부모 클래스와 자식 클래스 사이의 의존성이 컴파일 시점에 고정되어 높은 결합도를 가지지만 합성은 두 객체 사이의 의존성이 런타임시점에 고정되어 낮은 결합도를 가지게 됩니다. 상속과 합성은 코드 재사용이라는 동일한 목적을 가지지만 구현 방법부터 변경을 위해 다루는 방식 모두에서 차이점을 가집니다. 상속을 사용하면 자식 클래스가 부모 클래스의 내부 구현까지 자세히 알아야하기 때문에 결합도가 높아지고 캡슐화에 약해집니다. 반면 합성을 사용하면 오직 퍼블릭 인터페이스에만 의존하므로 내부 구현이 변경되더라도 영향을 최소화할 수 있으며 캡슐화를 지킬 수 있습니다. 상속과 합성은 재사용의 대상이 다르다 상속과 합성은 재사용의 대상이 다릅니다. 상속은 부모 클래스의 내부 구현을 재사용하지만 합성은 퍼블릭 ..
서론 객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기 쉽다는 것입니다. 전통적인 패러다임에서 코드를 재사용하는 방법은 코드를 복사한 후 수정하는 것입니다. 이와 다르게 객체지향은 코드를 재사용하기 위해 "새로운 코드"를 추가합니다. 코드를 재사용하기 위해 새로운 코드를 추가한다? 이 말이 쉽게 와닿지 않을 수 있습니다. 객체지향에서 코드는 일반적으로 클래스 내부에 작성되기 때문에 객체지향에서 클래스를 재사용하는 전통적인 방법은 새로운 클래스를 추가하는 것입니다. 무슨 말인지 모르겠지만 지금부터 천천히 알아보도록 하겠습니다. 상속과 중복 코드 중복 코드는 우리들의 마음속에 의심과 불신의 씨앗을 뿌립니다. 지금 내가 보고 있는 코드가 예전에 본 코드와 비슷하다면 우리는 이거 중복 코드인가? 비슷한 코..
- Total
- Today
- Yesterday
- pipeline architecture
- pipe and filter architecture
- spring boot redisson destributed lock
- service based architecture
- spring boot poi excel download
- spring boot redisson sorted set
- JDK Dynamic Proxy와 CGLIB의 차이
- @ControllerAdvice
- polling publisher spring boot
- 레이어드 아키텍처란
- 트랜잭셔널 아웃박스 패턴 스프링부트
- 자바 백엔드 개발자 추천 도서
- redis 대기열 구현
- spring boot redisson 분산락 구현
- space based architecture
- microkernel architecture
- 공간 기반 아키텍처
- spring boot excel download oom
- java userThread와 DaemonThread
- spring boot excel download paging
- transactional outbox pattern
- redis sorted set
- spring boot 엑셀 다운로드
- 서비스 기반 아키텍처
- transactional outbox pattern spring boot
- spring boot redis 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- redis sorted set으로 대기열 구현
- 람다 표현식
- java ThreadLocal
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |