본문 바로가기

Programming29

1. Kotlin 이해하기 1.1 Kotlin이란? 1.1.1 Kotlin 소개 - 통합개발환경(IDE) IntelliJ로 유명한 젯브레인의 오픈소스 그룹에서 개발한 언어 - 2017년 5월 구글 I/O 행사에서 안드로이드의 공식 언어로 코틀린이 지정 1.1.2 Kotlin 특징 공식 사이트(https://kotlinlang.org/)에 소개된 kotlin의 특징 - 자바, 안드로이드 100% 호환 - 자바, 안드로이드, 브라우저, 네이티브 애플리케이션 개발 - IntelliJ, 안드로이드 스튜디오, 이클립스, CLI 등을 통한 개발 - 함수형 언어, Lambdas, Extension, Null Safety 등 최신 언어의 트랜드 지원 - 자바와 같이 JVM에서 실행되지만 자바와는 다른 특징들이 많다 1.2 Kotlin으로 작성 .. 2020. 1. 8.
DAO Pattern 1. 정의 1) 업무와 DBMS를 분리하기 위해 사용됨 2) 업무와 데이터 2계층을 분리하고, 서로 그 상태를 동일하게 유지(persistence) 2. 문제 1) DB를 사용하는 방법이 변경되면 클라이언트의 수정이 많아진다 예) SQL문이 다른 DB로 변경하게 되면 클라이언트의 SQL코드를 수정해야한다. 3. 해결방안 1) 클라이언트는 DAO Pattern을 이용해 DB Interface를 사용하고 실제 수행되는 코드를 분리시킨다(loose coupling) 4. 사용 예제 1) 주소록 관리 어플리케이션 : DB가 바뀌어도 클라이언트 코드는 그대로(List -> sqlite) 1-1) 주소록 without DAO 1-2) 주소록 with DAO * DAO : 모델에 대한 기본적인 CRUD 인터페이스를 .. 2020. 1. 3.
State Pattern 1. 정의 1) 객체의 내부 상태가 바뀔 때 객체의 동작을 변경할 수 있도록 함 2) 객체는 자신의 클래스를 바꾸는 것처럼 보임. 3) State : 시점에 따라 특정 상태에 있어야 함. 4) Transition : 외부 입력에 따라 가능한 상태로 전환 2. 문제 1) 상태(state)가 여러 개 있고, if 문으로 상태를 통제 3. 해결방안 1) 상태를 한 곳에서 관리 4. 사용 예제 1) Finite State Machine 2019. 12. 31.
Facade Pattern 1. 정의 1) 서브시스템에 있는 여러 개의 인터페이스를 통합하는 한 개의 인터페이스를 제공. 2) 퍼사드는 서브 시스템을 쉽게 사용할 수 있도록 해주는 고급 수준의 인터페이스를 정의한다. 2. 문제 1) 서브시스템이 너무 많고 사용하기가 복잡함 3. 해결방안 1) 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스 제공 2) 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있음 4. 사용 예제 1) 홈 씨어터 시스템 팝콘 기계를 켜고 튀기기 시작 전등을 어둡게 조절, 스크린을 내림 프로젝터를 켜고 프로젝터로 DVD 신호 입력 프로젝터를 와이드 스크린 모드로 전환 앰프를 켜고 DVD로 전환 앰프를 서라운드 음향 모드로 전환 앰프 볼륨을 중간(5)로 설정 DVD 플레.. 2019. 12. 31.
Adapter Pattern 과제 과제 : 기존 영화 관리 시스템은 영화를 MovieMediaManagerFile 클래스로 관리하였다. Adapter Pattern을 이용하여 Client가 사용하는 인터페이스는 그대로 두고, 영화를 MovieMediaList 클래스로 관리하라 설계) 코드) https://github.com/kook1932/Computer-Science/tree/master/Design%20Pattern/Adapter%20Pattern 2019. 12. 31.
Adapter Pattern 1. 정의 1) 클래스의 인터페이스를 클라이언트가 원하는 형태의 또 다른 인터페이스로 변환. 2) 어댑터는 호환되지 않는 인터페이스 때문에 동작하지 않는 클래스들을 함께 동작할 수 있도록 만들어 줌. 2. 문제 1) 사용 객체의 API가 서로 다름 3. 해결방안 1) 함수를 변환하는 객체를 중간에 넣음 4. 사용 예제 1) 전기 플러그 2) 객체 어댑터 : 서로 호환되지 않는 두 개 인터페이스를 연결하는 작업 2019. 12. 31.