본문 바로가기

Study

개발지식 스터디 발표 자료(MSA) Monolithic Architecture 개념 모든 도메인을 하나의 프로그램으로 개발 컴포넌트 간 메서드(함수) 호출을 통해 상호작용 장점 개발과 디버깅, 배포 모두 비교적 수월한 편 데이터베이스가 통합되어 데이터 일관성 유지 용이 대체로 성능이 뛰어남(컴포넌트끼리 메모리 내의 호출을 통해 상호작용하므로 응답 속도 빠름) 단점 배포까지의 사이클(테스트, 컴파일, 빌드 등)이 너무 오래 걸림 일부 컴포넌트의 프레임워크, 라이브러리 업데이트가 어려움(다른 컴포넌트에 영향을 주게 됨) 일부 컴포넌트의 장애가 전체 서비스로 전파되기 쉬움 (MSA 방식에 비해) 컴포넌트 간 결합도가 높아 일부 기능 변경의 파급효과가 큼 비교적 요구사항 변경에 따른 유지보수가 어려운 편 언어, 프레임워크에 종속적 ex) Spri.. 더보기
개발지식 스터디 발표 자료(빌더 패턴 & 팩토리 메서드 패턴) 객체 생성 관련 대표적인 디자인 패턴 생성자 패턴: 생성자를 통해 객체를 생성 자바 빈 패턴: 객체 상태의 초기화 없이 객체 생성 후, setter를 통해 상태를 초기화/변경 프로토타입 패턴: 기존 객체를 복제해 새로운 객체를 생성 빌더 패턴: 객체 생성을 한 번에 하지 않고 순차적으로 진행 팩토리 메서드 패턴: 객체 생성 전용 인터페이스를 통해 새로운 객체를 생성 추상 팩토리 패턴: 여러 팩토리 메서드들을 모아, 여러 객체 간 연관된 객체 생성을 관리 객체 상태 관리 방법 객체의 상태를 직접 변경하는 방식 field의 접근제한자를 public으로 선언 매우 편리하게 원하는 값을 초기화/변경/조회 가능 의도치 않은 객체 상태 변경에 매우 취약함 유효성 검사를 수행할 수 없음 —> 객체가 유효하지 않은 상.. 더보기
객체지향의 사실과 오해 부록A 발표 자료 목차 부록A 추상화 기법 분류와 인스턴스화 개념과 범주 타입 외연과 집합 클래스 일반화와 특수화 범주의 계층 서브타입 상속 집합과 분해 계층적인 복잡성 합성 관계 패키지 부록A 추상화 기법 추상화 기법 추상화를 통해 복잡한 도메인을 단순하고 직관적으로 만들 수 있다. 추상화 기법을 통해 같은 특성을 가진 객체들을 동일한 타입으로 분류할 수 있다. 분류를 통해 각 객체의 세부 사항을 숨기고, 공통 특성을 통해 범주를 형성한다. 이를 반대로 수행해 객체를 인스턴스화할 수 있다. 예) 소나타, 그렌저, 제네시스 —> 자동차 —> 소나타, 그렌저, 제네시스 객체 간 차이를 숨기고 공통 특성을 추출하여 객체를 일반화한다. 이를 반대로 수행해 객체를 특수화할 수 있다. 예) 자동차, 자전거 —> 운송수단 —> 자동.. 더보기
객체지향의 사실과 오해 스터디 7장 발표 자료 목차 07 함께 모으기 커피 전문점 도메인 커피 주문 커피 전문점이라는 세상 설계하고 구현하기 커피를 주문하기 위한 협력 찾기 인터페이스 정리하기 구현하기 코드의 세 가지 관점 코드는 세 가지 관점을 모두 제공해야 한다 도메인 개념을 참조하는 이유 인터페이스와 구현을 분리하라 추상화 기법 07 함께 모으기 서문 객체지향에는 개념, 명세, 구현의 세 가지 관점이 있다. 각 관점은 클래스를 바라보는 방식에 관한 것이며, 개발 순서에 따른 것이 아니다. 클래스는 아래의 세 가지 관점을 모두 수용하고, 명확하게 분리할 수 있어야 한다. 개념 관점은 도메인 내부의 각 개념들 간 관계에 관한 것이다. 도메인은 사용자들이 관심을 가지는 특정 분야나 주제를 뜻한다. 소프트웨어의 목적은 현실 도메인에 존재하는 문제를 해.. 더보기
객체지향의 사실과 오해 스터디 5장 발표 자료 목차 05 책임과 메시지 자율적인 책임 설계의 품질을 좌우하는 책임 자신의 의지에 따라 증언할 수 있는 자유 너무 추상적인 책임 ‘어떻게’가 아니라 ‘무엇’을 책임을 자극하는 메시지 메시지와 메서드 메시지 메서드 다형성 유연하고 확장 가능하고 재사용성이 높은 협력의 의미 송신자와 수신자를 약하게 연결하는 메시지 메시지를 따라라 객체지향의 핵심, 메시지 책임-주도 설계 다시 살펴보기 What/Who 사이클 묻지 말고 시켜라 메시지를 믿어라 객체 인터페이스 인터페이스 메시지가 인터페이스를 결정한다 공용 인터페이스 책임, 메시지, 그리고 인터페이스 인터페이스와 구현의 분리 객체 관점에서 생각하는 방법 구현 인터페이스와 구현의 분리 원칙 캡슐화 책임의 자율성이 협력의 품질을 결정한다 05 책임과 메시지 서문 자.. 더보기
커뮤니케이션 스터디 발표 자료(재귀함수) 재귀함수의 개념 문제를 해결하는 알고리즘을 구현할 때 사용 함수가 자기 자신을 호출하는 방식으로 동작 전체 문제를 작은 부분의 문제로 나누고 반복 호출을 통해 모든 부분을 해결 재귀함수의 특징 기본 조건 : 재귀함수를 통해 해결하고자 하는 작은 부분 문제들은 해답이 존재해야 한다. 기본 조건이 충족되면 재귀 호출을 중단하고 결과를 반환한다. 부분 기본 조건의 합인 최종 기본 조건을 충족하면 전체 문제의 결과를 얻을 수 있다. 종료 조건 : 기본 조건을 충족한 재귀함수를 종료하기 위한 조건을 설정한다. 재귀함수 내부에서 자기 자신을 호출한다. 기본적으로 반복문보다 직관적이지 않은 구조를 띄고 있으나, 일부 알고리즘에서는 보다 직관적이고 간편한 구현이 가능하다. 예시 : Factorial 계산, Fibona.. 더보기
객체지향의 사실과 오해 스터디 2장 발표 자료 02 이상한 나라의 객체 목차 02 이상한 나라의 객체 객체지향과 인지 능력 객체, 그리고 이상한 나라 이상한 나라의 앨리스 앨리스 객체 객체, 그리고 소프트웨어 나라 상태 행동 식별자 기계로서의 객체 행동이 상태를 결정한다 은유와 객체 두 번째 도시전설 의인화 은유 이상한 나라를 창조하라 02 이상한 나라의 객체 서문 아기들 역시 세상을 객체들의 집합으로 바라본다. 즉, 인간의 객체지향성은 선천적인 것이다. 객체지향과 인지 능력 인간은 객체지향적으로 세상을 이해한다. 따라서 실제 세상의 객체를 중심으로 소프트웨어에서의 객체를 이해하는 과정이 수월하다. 객체는 구분할 수 있는 개념 또는 사물이며, 실세계는 소프트웨어와 마찬가지로 객체들로 가득하다. 인간은 복잡한 세상을 이해하기 위해 본능적으로 세상을 분.. 더보기