본문 바로가기

전체 글

(92)
[JAVA 객체지향 디자인 패턴] 1장 : 객체지향 모델링 1.1 모델링 소프트웨어 개발에서 모델의 역할 서로의 해석을 공유해 합의를 이루거나 해석의 타당성을 검토 현재의 시스템 또는 앞으로 개발할 시스템의 원하는 모습을 가시화 시스템의 구조와 행위를 명세할 수 있으며 시스템을 구축하는 틀을 제공 모델은 추상화에 기반을 둔다. 특정 관점에서 관련이 있는 점은 부각시키고 관련 없는 면은 무시한다. ex) 대학교 학사 지원 업무 -> 학생의 머리카락 수, 머리 색깔은 학사 지원과 전혀 무관하기 때문에 관심있는 영역에서 제외 (추상화에서 제외) -> 학생의 "학번, 이름, 수강과목"은 학사 지원 필수적이므로 관심영역에 포함시킨다. 사람의 모든 속성을 가져가는 것이 아닌 관심있는 영역의 필요한 속성만 가지고 가는 것 (추상화) 1.2 UML 모델링 언어 : 원하는 시스..
[스프링 입문을 위한 자바 객체 지향의 원리와 이해] 7장 : 스프링 삼각형과 설정 정보 스프링을 이해하려면 POJO를 기반으로 스프링 삼각형이라는 애칭을 가진 IoC/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대해 이해가 필수다. 스프링 삼각형을 이해하면 그 조합으로 이루어진 수많은 복잡한 부가 프레임워크를 이해할 수 있다. 스프링 삼각형에 대해서 한번 알아보자. IoC/DI - 제어의 역전/의존성 주입 프로그래밍에서 의존성이란 무엇일까? ex) 운전자가 자동차를 생산한다. -> 자동차가 내부적으로 타이어를 생산한다. (운전자 -> 자동차 -> 타이어) 의존 -> 전체(의존하는 객체)가 부분(의존되는 객체)에 의존한다. 집합(Aggregation) 관계: 부분이 전체와 다른 생명 주기를 가질 수 있다. 구성(Compostion) 관계: 부분은 전체와 같은 생명 주기를 ..
[스프링 입문을 위한 자바 객체 지향의 원리와 이해] 6장 : 스프링이 사랑한 디자인 패턴 '객체지향의 4대 특성'은 객체지향을 잘 사용하기위한 '도구'이다. '객체지향의 5대 원칙'은 이러한 도구를 올바르게 사용하는 원칙으로 볼 수 있다. 그렇다면 디자인패턴은 무엇에 비유할 수 있을까? '디자인 패턴'은 레시피에 비유할 수 있다. 실제 개발 현장에서 비즈니스 요구 사항을 처리하면서 만들어진 다양한 해결책 중 많은 사람들이 인정한 '베스트 프렉티스'를 정리한 것이다. (디자인 패턴은 당연히 객체 지향 특성과 설계 원칙을 기반으로 구성) -> 스프링 역시 다양한 디자인 패턴을 활용하고 있다! * 스프링의 공식적 정의 : "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크" 디자인 패턴은 객체 지향의 특성 중 '상속', '인터페이스', '합성'을 이용한다. (합성은 객..
[오류] PRG(Post-Redirect-Get) 패턴 적용 오류 🤔 문제를 겪게 된 이유 🤔 책 '스프링 입문을 위한 자바 객체지향의 원리와 이해'를 쓰신 분께서 부록 부분에 있는 컨트롤러에서 POST 요청을 처리한 후 redirect 하는 것과 뷰 힌트만 제공하는 것의 차이에 대해 시도해보라고 하셨다. 그래서 내 프로젝트에 실제로 시도해보기로 했다. 1. "/url" 로 리턴하면 화면은 전환되나 브라우저 주소는 계속해서 이전 url을 가르키고 있었다. 2. "redirect:/url"로 반환했더니 화면이 전환되면서 브라우저 주소도 함께 변경되었다. 1번 방법은 브라우저 주소가 변경되지 않으므로 화면을 새로고침할 때마다 POST요청이 날라갈 위험이 존재한다. 2번 방법은 이미 브라우저의 주소가 변경되었기 때문에 서버에 부작용을 일으키지 않는다. ⚠️ 문제 상황 ⚠️ ..
[1주에 1번 자문자답] OSI 7 계층, 시스템 콜, Spring 특징 ✋🏻 기수 정렬 (Radix Sort)은 무엇인가요? 낮은 자리수부터 비교하여 높은 자리수까지 정렬해나가는 것이 기본개념입니다. 기수정렬은 O(N)이라는 굉장히 빠른 시간 복잡도를 가지나 버킷이라는 추가 메모리가 필요하고 최대자릿수가 늘어나면 시간도 증가하게 됩니다. 0~9 까지의 Bucket(Queue 자료구조의)을 준비한다. 모든 데이터에 대하여 가장 낮은 자리수에 해당하는 Bucket에 차례대로 데이터를 넣는다. 0부터 차례대로 버킷에서 데이터를 다시 가져온다. 가장 높은 자리수를 기준으로 하여 자리수를 높여가며 2번 3번 과정을 반복한다. 시간 복잡도는 O(dn) 자리수가 고정되어 있어서 안정성이 있는 정렬 방식 참고 ✋🏻 OSI 7 계층 무엇인가요? 네트워크에서 일어나는 데이터 전달 과정을 7단..
[스프링 입문을 위한 자바 객체 지향의 원리와 이해] 5장 : 객체 지향 설계 5원칙 객체 지향 설계 5원칙 객체 지향의 개념과 4대 특성 좋은 도구을 알게됨. 좋은 도구가 있어도 올바르게 사용하는 방법을 알아야 좋은 요리가 나옴. 객체 지향 설계 (Object Oriented Design) 5원칙 SOLID (객체 지향을 올바르게 사용하는 방법) SRP (Single Responsibility Principle) : 단일 책임 원칙 OCP (Open Closed Princinple) : 개방 폐쇄 원칙 LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 ISP (Interface Segregation Principle) : 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) : 의존 역전 원칙 응집도는 높이고 결합도..
[스프링 입문을 위한 자바 객체 지향의 원리와 이해] 4장 : 자바가 확장한 객체 지향 abstract 키워드 - 추상 메서드와 추상 클래스 추상 메서드를 하나라도 가지고 있는 클래스를 추상 클래스라고 부른다. 도대체 왜 몸체가 없이 선언만 있는 메서드가 필요할까?? **문제점** 1. 동물 클래스는 어떻게 울어야 하는지 모른다. (우는 메서드를 정의할 수 없다.. -> 정의하더라도 인스턴스로 생성해선 안된다.) 2. 그런데 동물 참조 변수를 통해 모든 동물을 울게하고 싶다. (하위클래스에서 오버라이드 할 상위 메서드가 필요함...) **해결 방법** 추상 클래스와 추상 메서드 사용하면 1번의 문제를 해결가능하다. 우는 메서드는 하위 클래스에게 구현을 맡길 수 있고 추상클래스는 인스턴스가 될 수 없다. (문제점 모두 해결!!) 2번 문제도 추상 메서드로 하위클래스에게 메서드의 구현을 강제할..
[스프링 입문을 위한 자바 객체지향의 원리와 이해] 3장 : 자바와 객체 지향 객체지향은 인간 지향이다 객체 지향의 큰 그림 세상의 모든 것은 "객체"다. 각각의 고유하다. 사물은 속성을 갖는다. 사물은 행위를 한다. 우리 인간은 사물을 "분류"를 통해 이해하고 인지한다. 사람은 나이, 몸무게를 가지며 "먹거나, 자거나, 우는 등에 행동"을 하는 물체를 뜻한다. (개념에 따른 분류) 우리가 실제 사물을 인지하고 사고하는 방식대로 객체 단위의 프로그래밍이 객체 지향에서 가능하다. 객체 지향의 4대 특성 - 캡! 상추다 캡슐화 : 정보은닉 상속 : 재사용 추상화 : 모델링 다형성 : 사용편의 클래스 vs. 객체 = 붕어빵틀 vs. 붕어빵 ??? 붕어빵틀 붕어빵 = new 붕어빵틀(); //??? 붕어빵틀을 새로운 만든다고 "붕어빵"이 될순 없다 -> 붕어빵틀은 그저 붕어빵을 만드는 팩..

반응형