Language & Framework35 [퍼온 글] Checked vs Unchecked Exceptions (체크예외, 언체크 예외) 출처: http://www.nextree.co.kr/p3239/ 언체크 예외 - RuntimeException을 상속한 것들 - 런타임 예외라고도 함. - 따로 catch문으로 잡거나, throws로 선언하지 않아도 됨. - 프로그램에 오류가 있을 때 발생하도록 의도된 것들. 예외 처리 방식 1. 예외 복구 - 예외 발생 시 예외를 try, catch, finally 등을 사용하여 최대한 처리함으로써 , 프로그램의 흐름을 정상화 시키는 방식 2. 예외 회피 - 메소드 선언부에 throws ~~~Exception 이런 식으로 구현해서 현재의 메소드 내부가 아닌, 메소드를 호출한 곳에서 에러를 처리하게 하는 방식 남발하면 안됨, 막 던지다가 제대로 처리 안하면 에러남 3. 예외 전환 catch(SQLExce.. 2020. 5. 6. [퍼온 글] 연관관계 편의 메서드에 대하여 참고 링크: https://www.inflearn.com/questions/16308 먼저 연관관계 편의 메서드를 정의하면 다음과 같습니다. (사실 이 연관관계 편의 메서드라는 이름은 제가 만들었습니다. ㅎㅎ) 연관관계 편의 메서드: 양방향 연관관계를 한번에 설정하는 편리한 메서드 질문이 엔티티 A와 B가 서로 양방향 연관관계인데, 어디에 연관관계 편의 메서드를 두는게 좋은가?로 이해했습니다. 우선 3가지 선택지가 있습니다. - 엔티티 A에 둔다. - 엔티티 B에 둔다. - 엔티티 A,B에 둘다 둔다. 둘다 두는 것은 혼란을 가중하기 때문에 제외하고, A, B중 하나를 선택해서 사용하는 것이 좋다 생각합니다. 그러면 여기서 A,B 중에 하나를 선택해야 하는데 사실 이 부분이 고민하셨던 것 처럼 정답이 없.. 2020. 5. 4. Objects 시리즈_4장.설계 품질과 트레이드 오프 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다. 이 정의에는 객체지향 설계에 관한 두 가지 관점이 섞여있다. 첫 번째 관점은 객체지향 설계의 핵심은 책임이라는 것이다. 두 번째 관점을 책임을 할당하는 작업이 응집도와 결합도 같은 설계 품질과 깊이 연관되어 있다. 설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다 훌륭한 설계란 합리적인 비용 안에서 변경을 수용할 수 있는 구조를 만든느 것이다. 적절한 비용 안에서 쉽게 변경할 수 있는 설계는 응집도가 높고 서로 느슨하게 결합돼 있는 요소로 구성된다. 결합도의 응집도를 합리적인 수준으로 유지할 수 있는 중요한 원칙이 있다. 객체의 상태가 아니라 객체의 행동에 초점을 맞추는.. 2020. 4. 22. Objects 시리즈_3장.책임, 역할, 협력 객체 지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration) 이다. 객체 지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고 한다. 객체가 협력에 참여하기 위해 수행하는 로직을 책임이라고 부른다. 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다. 협력 협력이란 어떤 객체가 다른 객체에게 무엇인가를 요청하는 것이다. 한 객체는 어떤 것이 필요할 떄 다른 객체에게 전적으로 위임하거나 서로 협력한다. 즉, 두 객체가 상호작용을 통해 더 큰 책임을 수행하는 것이다. 객체 사이의 협력을 설계할 때는 객체를 서로 분리된 인스턴스가 아닌 협력하는.. 2020. 4. 22. Objects 시리즈_2장.객체지향 프로그래밍 객체지향 패러다미으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야한다. 도메인 정의 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야 클래스 구현 혹은 다른 개발자가 개발한 클래스 사용시 중요한 것. 클래스의 경계를 내, 외부로 구분 짓는 것. 어떤 부분을 외부로 공개하고 어떤 부분을 감출지 결정하는 것 객체 정의 객체가 상태와 행동을 함께 가지는 존재 스스로 판단하고 행동하는 자율적인 존재 캡슐화(데이터와 기능을 한 덩어리로 내부에 묶는 것)하여 문제 영역의 아이디어를 적절하게 표현할 수 있게 한 것. 접근 수정자(acc.. 2020. 4. 20. Objects 시리즈_1장.객체, 설계 오브젝트의 1장인 객체, 설계를 간단히 정리해보았다. 객체, 설계 패러다임 정의 모델, 패턴, 또는 전형적인 예를 의미 한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계 과거의 패러다임이 새로운 패러다임에 의해 대체됨으로써 정상 과학의 방향과 성격이 변하는 것을 패러다임 전환이라 함. 예) 우주를 바라보는 패러다임이 천동설에서 지동설로 변화 . 특성 패러다임과 패러다임을 채용하는 언어는 특정한 종류의 문제를 해결하는데 필요한 일련의 개념들을 지원한다. 두 개의 패러다임은 하나의 언어에 함께 존재할 수 있으며, 함께 공존함으로써 서로의 장단점을 보완할 수 있다. 이러한 언어를 다중패러다임 언어라고 한다. 절차 + 객체 = C++ 함수 + 객체 = Scala . 결론 은총알은 없으며, 객체.. 2020. 4. 14. Objects 시리즈_0장.오리엔테이션 오브젝트란 책은 지금까지 내가 해왔던 자바 프로그래밍을 돌아보게 하는 책이다. 지금까지의 코드가 전혀 객체 지향 적이지 못했으며, 고객의 수정 요청이 발생했을 때 코드가 진도 9.0 지진처럼 흔들렸던 이유를 깨닫게 해주기 충분했다. . 캡슐화, 응집도와 결합도, 상속, 합성, SOLID, 서브 클래싱, 서브 타입 등 객체 지향과 관련된 내용들이 정말 알차게 구성되어 있고 쉽게 이해 되었다. . 하지만 말로 표현하지 못하는 지식은 완전히 숙지하고 있는 지식이 아니라고 배워왔다. . 이 Objects 시리즈를 연재하며 책에서 핵심이 되는 내용을 우선 정리하며 명확히 정립하고, 이를 기반으로 2부에서 나의 말과 언어로 다시 한번 정리해볼 계획이다. . 시리즈를 읽으며 이해가 안되거나 의문이 가는 사항은 비판 .. 2020. 4. 14. 토비의 봄을 담은 제네릭 2편 람다와 인터섹션 시작하는 글 1편에서 설명했던 제네릭의 개념을 바탕으로 하여 람다와 인터섹션에 대해 학습해보자. 람다란? 람다 표현식은 익명 클래스와 익명 메소드, 함수형 인터페이스를 단순화하여 표현한 것이다. public class LambdaAndIntersection { public static void main(String[] args) { hello(o -> o); hello(o -> { return o; }); hello( new Function(){ @Override public Object apply(Object o) { return o; } }); } private static void hello(Function o) { } } 위 예제를 보면 hello 란 정적 메소드에 할당된 파라미터 들은 람다에 익.. 2020. 3. 26. 토비의 봄을 담은 제네릭 1편 작성 계기 자바 공부 5년차 자알못이 분수를 깨닫고 부족한 개념을 쌓기 위한 첫 걸음으로, Java 5에 처음 등장해 활약 중인 제네릭에 대하여 토비 님의 강의를 듣고 정리해보았다. 이펙티브 자바나 구글링을 통해서도 이해하기 힘들었던 제네릭이 완전히 이해되었다. 이 글을 쓰며 내 머릿 속을 다시 한 번 정리하고, 기록하고자 한다. 제네릭 제네릭이란? 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. 아래 예제를 보자. public class GenericEx1 { public static void main(String[] args) { Jordy stringJordy = new Jordy (); stringJordy.setT("죠르디"); System.out.println(stringJo.. 2020. 3. 26. 이전 1 2 3 4 다음