객체지향

백엔드/Java

[Java] 상속(Inheritance)과 합성(Composition)

상속과 합성의 개념 상속(Inheritance) 부모 클래스와 자식 클래스 사이의 의존성은 컴파일 타임에 해결 is-a 관계 부모클래스의 구현에 의존 결합도가 높음. 클래스 사이의 정적인 관계 부모 클래스 안에 구현된 코드 자체를 물려받아 재사용 합성(Composition) 두 객체 사이의 의존성은 런타임에 해결 has-a 관계 구현에 의존하지 않음. 내부에 포함되는 객체의 구현이 아닌 인터페이스에 의존. 객체 사이의 동적인 관계 포함되는 객체의 퍼블릭 인터페이스를 재사용 상속(Inheritance)이란 클래스 상속을 통해 자식 클래스는 부모 클래스의 자원을 물려받게 되며, 부모 클래스와 다른 부분만 추가하거나 재정의함으로써 기존 코드를 쉽게 확장할 수 있다. 그래서 상속 관계를 is-a 관계라고 표현하..

백엔드/JPA

[JPA] 패러다임의 불일치

패러다임 불일치란? 애플리케이션은 발전하면서 그 내부의 복잡성도 점점 커진다. 지속 가능한 애플리케이션을 개발하는 일은 끊임없이 증가하는 복잡성과의 싸움이다. 복잡성을 제어하지 못하면 결국 유지보수하기 어려운 애플리케이션이 된다. 객체지향 프로그래밍은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공한다. 비즈니스 요구사항을 정의한 도메인 모델도 객체로 모델링하면 객체지향 언어가 가진 장점들을 활용할 수 있다. 문제는 이렇게 정의한 도메인 모델을 저장할 때 발생한다. 객체는 속성(필드)과 기능(메서드)을 가진다. 객체의 기능은 클래스의 정의되어 있으므로 객체 인스턴스의 상태인 속성만 저장했다가 필요할 때 불러와서 복구하면 된다. 객체가 단순하면 객체의 ..

밝은별 개발자
'객체지향' 태그의 글 목록