IT자료실 37

오브젝트 - 기술서적 스터디 8단원-의존성 관리하기

의존성 의존성 : 의존하는 대상의 변경에 영향을 받을 수 있는 가능성 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이에 의존성이 존재 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 갖는다 실행 시점 : 의존하는 객체가 정상적으로 동작하려면 실행 시에 의존 대상 객체가 반드시 존재 구현 시점 : 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경 의존성은 방향성을 가지며 단방향 의존성 전이 직접 의존성 : 한 요소가 다른 요소에 직접 의존하는 경우 간접 의존성 : 직접적인 관계는 존재하지 않지만 의존성 전이에 의해 영향이 전파되는 경우 런타임 의존성 : 애플리케이션이 실행되는 시점 컴파일 타임 의존성 : 작성한 코드의 구조 런타임 의존성이 다루는 주제는 객체 사이의 의존성, ..

오브젝트 - 기술서적 스터디 7단원-메시지와 인터페이스

하향식 기능 분해 프로그래밍 패러다임은 프로그래밍을 추상화로 만들기 위해 사용하는 추상화의 종류와 추상화를 이용해 소프트웨어를 분해하는 방법 두 가지 요소로 결정 전통적인 기능 분해 방법은 하향식 기능 분해 방법 하향식 기능 분해 방법 : 시스템을 최상위의 가장 추상적인 메인 함수로 정의하고, 메인함수를 구현 가능한 수준까지 세부단계로 분해하는 방법 겉으로는 이상적인 방법으로 보일 수 있지만, 불귝칙하고 불완전한 문제를 만나면 큰 혼란이 발생 하향식 기능 분해의 문제점 시스템은 하나의 메인함수로 이루어저 있지 않다 기능 추가나 요구사항 변경으로 인해 메인 함수를 계속 수정 비즈니스 로직이 사용자 인터페이스와 강하게 결합 하향식 분해는 너무 이른 시기에 함수들의 실행 순서를 고정시키기 때문에 유연성과 재사..

오브젝트 - 기술서적 스터디 6단원-메시지와 인터페이스

협력과 메시지 협력은 어떤 객체가 다른 객체에게 요청할 때 시작 메시지는 객체 사이의 협력을 가능하게 하는 매개체 메시지는 오퍼레이션명 + 인자로 구성된다 (ex. car.colar(red)) 메시지를 수신했을 때 실제로 실행되는 함수 또는 프로시저를 메서드라고 한다 객체가 의사소통을 위해 외부에 공개하는 메시지의 집합을 퍼블릭 인터페이스 라고 한다 퍼블릭 인터페이스에 포함된 메시지를 오퍼레이션이라고 하고, 오퍼레이션은 수행 가능한 어떤 행동에 대한 추상화이다 인터페이스와 설계 품질 인터페이스의 품질에 영향을 미치는 4가지 원칙 디머터 법칙 : 협력하는 객체의 내부 구조에 대한 결합으로 인해 발생하는 설계 문제를 해결하기 위해 제안된 원칙 클래스 내부의 메서드가 아래의 조건을 만족하는 인스턴스에만 메시지..

오브젝트 - 기술서적 스터디 5단원-설계품질 트레이드 오프

책임 주도 설계를 위해 데이터보다 행동을 먼저 결정하자 협력의 문맥에서 책임을 결정하자 메시지라는 것을 통해 통신을 하면서 주고받기 때문에 객체를 갖게 된 것 GRASP 책임을 할당할 때 지침으로 삼을 수 있는 원칙들이다 도메인 개념에서 시작을 한다, 이 도메인이 완전히 정확할 필요는 없고 출발점의 의미면 충분하다 올바른 도메인이란 존재하지 않고, 계속 변경이 일어난다고 생각된다. INFORMATION EXPERT 패턴 : 책임을 할당 할 때 메시지를 전송할 객체는 무엇을 원하는지, 수신할 객체는 누구인지를 고민하자 CREATOR 패턴 : 객체를 생성할 책임을 어떤 객체에게 할당할지에 대한 지침을 제공(객체 A는 B에 책임 할당) B가 A 객체를 포함하거나 참조 B가 A 객체를 기록 B가 A 객체를 긴밀..

오브젝트 - 기술서적 스터디 4단원-설계품질 트레이드 오프

객체지향 설계 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가지는 것 데이터 중심의 설계 책임 할당의 방식이 아닌 데이터 중심의 설계의 문제점들을 알아보자 데이터 중심의 설계는 객체의 책임이 아니라 객체의 상태에 집중을 한다 객체의 상태는 구현에 속하기 떄문에 캡슐화의 원칙이 무너진다 데이터 중심 설계이지만 캡슐화의 원칙을 지키기위해 사용하는게 데이터 접근자와 수정자를 사용하는 것 캡슐화 캡슐화란 변경 가능성이 높은 부분을 객체 내부로 숨기는 추상화 기법 캡슐화를 사용하는 목적은 유지보수성이다. 캡슐화 위반 데이터 중심으로 설계한 클래스들은 메서드로만 객체의 내부 상태에 접근할 수 있다 주로 사용되는 것이 get과 set이다 예를 들어 getBuy, setBuy ..

오브젝트 - 기술서적 스터디 3단원-역할 책임 협력

객체지향 페러다임의 핵심 객체지향 패러다임의 핵심은 역할, 책임, 협력이다. 협력 : 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용 책임 : 협력에 참여하기 위해 수행하는 로직 역할 : 협력에서 수행하는 책임들의 모임 협력 어떤 객체가 다른객체에게 무엇인가를 요청하는 것 메시지 전송을 통해 객체들의 요청했다면, 메시지를 수신한 객체는 메서드를 실행해 요청에 응답 객체는 메시지 처리 방법을 스스로 선택한다 객체가 자율적인 존재가 되려면 내부 구현을 캡슐화 하는 것 객체의 행동을 결정하는 것은 객체가 참여하고 있는 협력 협력은 객체가 필요한 이유와 객체가 수행하는 행동의 동기를 제공한다 책임 협력에 참여하기 위해 객체가 수횅하는 행동 객체에 의해 정의되는 응집도 있는 행위의 집합 객체의 책임 하는 것..

오브젝트 - 기술서적 스터디 2단원-객체지향 프로그래밍

객체지향 프로그래밍을 위해 집중해야 할 것 (클래스가 아닌 객체에 초점) 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민한다.(클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것) 클래스의 윤곽을 잡기 위해 어떤 객체들이 어떤 상태와 행동을 가지는지 먼저 결정 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다 객체들의 구체적인 윤곽이 잡히면 공통 특성과 상태를 가진 객체들을 타입으로 분류하고 이 타입을 기반으로 클래스를 구현한다 도메인의 구조를 따르는 프로그램 구조 도메인 : 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야 객체지향 패러다임은 초기단계부터 마지막단계까지 동일한 추상화 기법을 사용한다 요구사항과 프로그램을 객체라는..

오브젝트 - 기술서적 스터디 1단원-객체, 설계

소프트웨어 모듈이 가져야 하는 세 가지 기능 실행 중 제대로 동작 변경을 위해 존재하는 것 코드를 읽는 사람과 의사소통 하는 것 변경에 취약한 코드 변경에 취약한 코드는 의존성과 관련이 높다 의존성은 변경에 대한 영향을 암시 객체지향 설계는 서로 의존하면서 협력하는 객체들의 공동체를 구축하는 것 (기능을 구현하는 최소한의 의존성만 유지하고 불필요한 의존성은 제거) 객체 사이의 의존성이 과한 것을 결합도가 높다고 한다 설계의 목표는 객체 사이의 결합도를 낮춰 변경이 용이한 설계를 만드는 것 자율성을 높이자 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것을 "캡슐화" 라고 한다 캡술화의 목적은 변경하기 쉬운 객체를 만드는 것 객체를 인터페이스와 구현으로 나누고 인터페이스만 공개하는 방법이 가장 ..

ETL/ELT

ETL이란? E(Extract) 추출, T(Transform) 변환, L(Load) 적제를 뜻하며 다양한 소스의 데이터를 대상 데이터 저장소에 결합하는 과정입니다. - AWS ETL 설명 추출, 변환, 로드(ETL)는 데이터 기반 조직이 여러 소스에서 데이터를 수집한 후 검색, 보고, 분석, 의사 결정을 지원하기 위해 가져오는 데 사용하는 프로세스입니다. - Oracle ETL 설명 ETL의 작동 ETL은 데이터를 소스 시스템에서 대상 시스템으로 정기적으로 이동하는 방식으로 작동 소스 데이터베이스에서 관련 데이터 추출 데이터를 식별하고 해당 소스에서 복사하여 데이터를 대상 데이터 저장소로 전송 (스테이징 영역) 분석에 더 적합한 형식으로 데이터 변환 추출된 데이터는 원래 형식의 원시 데이터이므로 저장소에..

IT자료실 2023.01.04

리플렉션 .class 클래스

스프링 강의를 진행 중 클래스이름.class 라는 항목이 자주 등장하여 내용 정리와 이해를하기 위해 작성한다. 리플렉션 리플렉션은 구체적인 클래스 타입을 알지 못해도 해당 클래스의 메소드, 타입, 필드들을 접근할 수 있게 해주는 자바API이다. Class 클래스 리플렉션의 기초가 되는 클래스이다. 자바에 사용되는 클래스에 대한 구조를 가지고 있는 class이다. (클래스의 구조 자체를 하나의 클래스로 표현해 놓은 클래스) 사용법 Class.forName("패키지 전체 경로") or 클래스 이름.class 위와 같은 형태로 호출하면 클래스 정보를 담은 class 클래스가 반환된다. 참조 블로그 : https://joont.tistory.com/165

IT자료실/Java 2022.05.31