전체 글333 객체지향의 사실과 오해 - 구조 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - 도메인 모델 은행에서는 고객의 자산을 관리하고 보호하기 위해, 게임에서는 재미를 위해 또 병원에서는 환자의 진료 및 업무 관리를 위해 소프트웨어를 사용한다. 이처럼 사용자가 프로그램을 사용하는 대상 분야를 도메인이라고 한다. 모델은 복잡한 세상속에서 필요한 것들을 추려낸것이다. 만약 필요한 것만 추려내고 문제와 관련없는 나머지 세부사항들을 무시하는 추상화를 한 모델이 없다면 너무나 복잡하고 고려할것이 많아서 프로젝트 기간이 아무리 길다 한들 개발자들은 소프트웨어를 만들어내지 못할것이다. 이렇게 도메인과 모델의 정의를 고려할 때 도메인 모델이란 사용자가 소프트웨어를 사용하는 대상 분야에서 .. 2021. 8. 26. 객체지향의 사실과 오해 - 기능과 구조 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - 문제를 접근하는 두 가지 방법 낯선 여행지에서 목적지를 찾아가는 방법에는 여러 가지가 있다. 어떤 사람은 모르는 사람에게 길을 묻고, 어떤 사람은 지도를 보고 목적지를 찾아간다. 모르는 사람에게 길을 물으면서 찾아가는 해결법은 '기능적이고 해결책 지향적인 접근법(functional, solution-directed approach)' 라고 할 수 있다. 가령 '길을 따라 얼마쯤 가다가 어떤 랜드마크가 보이면 다른길로 가세요'와 같은 식이다. 반면 지도를 이용하는 방법은 '구조적이고 문제 지향적인 접근법(structural, problem-directed approach)' 이다. 지도는 .. 2021. 8. 26. JPA - 객체지향 쿼리 언어 - QueryDSL 배치쿼리, 동적쿼리 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 수정, 삭제 배치쿼리 QueryDSL도 수정, 삭제 같은 배치쿼리를 지원한다. JPQL 배치쿼리와 같이 영속성 컨텍스트를 무시하고 데이터베이스에 직접 쿼리를 수행한다. JPQL 배치는 추후에 다루도록 한다. QMember m = new QMember("m"); JPAUpdateClause updateClause = new JPAUpdateClause(em, m); updateClause.where(m.name.startsWith("Name")) .set(m.age, m.age.add(1)) .execute(); JPAQueryFactory query = new JPAQueryFactory(em); List members = query.select(m) ... 2021. 8. 24. 객체지향의 사실과 오해 - 인터페이스 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - 인터페이스 인터페이스에는 3 가지 특징이있다. 우선 사용법만 익히면 내부 구조나 동작방식을 몰라도 된다. 또한 내부 구조나 동작방식을 바꾸더라도 사용자에게 영향을 미치지 않는다. 그리고 인터페이스를 변경하지 않으면 사용자와 의사소통에 전혀 문제가 없다는것이다. 앞에서 우리는 메시지의 중요성을 재차 강조했었다. 객체가 다른 객체와 상호작용할 수 있는 유일한 방법은 메시지를 주고 받는것이기 때문에 인터페이스란 객체가 수신할 수 있는 메시지의 목록이라고 할 수 있다. - 책임, 메시지, 인터페이스 여태까지 살펴본 책임, 메시지, 인터페이스를 잠시 정리하는 시간을 가져보자. 맨 먼저 객체의 자율.. 2021. 8. 24. JPA - 객체지향 쿼리 언어 - QueryDSL 프로젝션 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 프로젝션 (Tuple) 조회를 하다보면 하나의 엔티티 형태가 아닌 여러 컬럼으로 이루어진 정보를 조회해야 할 때가 있다. 이때에는 JPQL 에서 살펴본것과 같이 Map 과 비슷한 방식의 Tuple 을 사용하면 된다. JPAQueryFactory query = new JPAQueryFactory(em); QMember m = new QMember("m"); List members = query.select(m.name, m.age) .from(m) .where(m.age.gt(10)) .fetch(); members.forEach(member -> { System.out.println("Member's name: " + member.get(m.name) +.. 2021. 8. 21. 객체지향의 사실과 오해 - 객체지향의 핵심 - 이 글은 조영호의 객체지향의 사실과 오해를 기반으로 작성되었습니다. (가능하면 꼭 읽어보는것을 추천드립니다.) - 객체지향의 핵심, 메시지 객체지향이라는 단어를 들으면 가장 먼저 생각나는것은 클래스이다. 프로그램을 구현하라고 하면 우리가 가장 먼저 하는 일은 클래스를 선언하고 속성과 메소드를 채워넣는것이다. 그리고 클래스간의 의존성을 관리하며 상속도 사용한다. 하지만 객체지향의 강력함은 객체들이 주고 받는 메시지에서 나온다. 따라서 객체들의 속성과 행위를 먼저 식별해야 한다. 클래스는 단지 객체들의 특성과 행위를 정적으로 표현하는 추상화 도구일뿐이다. 문제는 클래스보다 객체를 우선시한다고 해결되지 않는다는 것이다. 객체들의 속성과 행위를 먼저 식별해야 한다는 말을 개별적인 객체에 집중하라는 의도로 오.. 2021. 8. 18. 이전 1 ··· 24 25 26 27 28 29 30 ··· 56 다음