전체 글
-
토비의 스프링 - 3. 관심사의 분리기술/Java - 토비의 스프링 2022. 8. 3. 14:53
관심사의 분리 관심이 같은 것 끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고, 관심이 다른 것은 가능 한 따로 떨어져서 변경에 서로 영향을 주지 않도록 분리하는 것이다. UserDao 의 관심사항 커넥션을 가져오는 방법에 대한 관심사 DB 에 보낼 Statement 를 만들고 실행하는 관심사 작업이 끝났을 때 리소스를 돌려주는 관심사 상속을 통한 관심사 분리 템플릿 메소드 패턴, 팩토리 메소드 패턴을 통해 서브 클래스에서 Connection 을 가져오는 방법을 유연하게 변경했다. 하지만 상속을 사용했을 때 단점이 존재한다. UserDao 가 다른 목적을 위해 상속을 사용하고 있다면 어쩔 것인가? 자바는 클래스의 다중상속을 허용하지 않는다. 단지, 커넥션 객체를 가져오는 방법을 분리하기 위해 상..
-
토비의 스프링 - 2. 예시 코드를 따라 하기 위한 환경설정 방법기술/Java - 토비의 스프링 2022. 8. 3. 14:52
Java 설치 패키지 관리자를 통해 설치하는게 로컬의 패키지들을 일관성있게 다룰 수 있고 내 환경설정을 코드화 가능하며 설치와 삭제의 수고로움을 덜 수 있다고 생각한다. 그리고 무엇보다 개발자스럽다.. Window choco install openjdk11 java --version MacOS brew install openjdk11 java --version H2 Database 설치 책에서는 MySQL 을 사용하지만 무겁다. 가벼운 파일 형태의 데이터베이스, Web Console 을 지원해주는 H2 Database 를 사용하는걸 추천한다. Window choco install h2database cd "C:\\Program Files (x86)\\H2\\bin" .\\h2.bat MacOS brew ..
-
토비의 스프링 - 1. 객체 지향 프로그래밍기술/Java - 토비의 스프링 2022. 8. 3. 14:50
객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 이전에는 상태와 함수를 각각 관리했었는데 프로그램이 커지니 관리하기 어려워 관련 있는 상태와 함수를 모은 객체를 만들었다. 객체를 사용함으로써 유연하고 변경이 쉬운 소프트웨어를 개발할 수 있다. 캡슐화 객체의 정보의 접근과 연산을 제어함으로서 아래와 같은 이득을 얻는다. 내부 로직을 외부에서 알 필요가 없이 사용할 수 있다. 변경에 영향을 줄 수 있는 범위를 최소화하는 변경 용이성을 확보한다. 하지만 이러한 개념이 객체 지향에만 국한 된 것은 아니다. C 언어에서도 .h..
-
Swift 5.6 Concurrency기술/iOS 2022. 3. 20. 17:53
Concurrency Defining and Calling Asynchronous Functions 비동기 함수 또는 비동기 메서드는 실행 도중에 일시적으로 중단될 수 있는 특수한 함수 또는 메서드 입니다. 이것은 완료될 때까지 실행되거나 오류가 발생하거나 반환되지 안흔ㄴ 한 일반적 동기 함수 또는 메서드와 대조도비니다. 비동기 함수 또는 메서드는 이 세가지 중 하나를 수행하지만 무언가를 기다리고 있을 때 중간에 일시 중지될 수 있습니다. 비동기 함수 또는 메서드의 바디 내에서 실행을 일시 중지할 수 있는 부분을 표시합니다. 함수 또는 메서드가 비동기 임을 나타내려면 던지는 async 키워드를 작성합니다. 비동기 메서드를 호출할 때 해당 메서드가 반환될 때까지 실행이 일시 중단됩니다. 중단될 가능성이 있..
-
Swift 5.6 Error Handling기술/iOS 2022. 3. 20. 17:53
Error Handling Representing and Throwing Errors Swift 에서는 Error 프로토콜에 준수하는 타입의 값으로 표현됩니다. 이 빈 프로토콜은 에러를 처리하는 것에 대해 사용될 수 있음을 나타냅니다. Swift 열거형은 관련된 에러 조건의 그룹을 모델링하는데 특히 적합하며 관련값들을 사용하여 에러의 특성에 대한 추가 정보를 전달할 수 있습니다. Handling Errors Swift 에서는 에러를 처리하는 4가지 방법이 있습니다. 함수에서 해당 함수를 호출하는 코드로 에러를 전파하거나, do-catch 문을 사용하거나 옵셔널 값으로 에러를 처리ㅏㅎ거나 에러가 발생하지 않을것이라 주장할 수 있습니다. Propagating Errors Using Throwing Funct..
-
Swift 5.6 Optional Chaining기술/iOS 2022. 3. 20. 17:52
Optional Chaining Optional Chaining as an Alternative to Forced Unwrapping 옵셔널이 nil 이 아닌 경우 프로퍼티, 메서드 또는 서브 스크립트를 호출하려는 옵셔널 값 뒤에 물음표를 배치하여 옵셔널 체이닝을 지정합니다. 이것은 값에 강제 언래핑하기 위해 옵셔널 값게 느낌표를 배치하는 것과 유사합니다. 이것들의 주요 차이점은 옵셔널이 nil 일 때 옵셔널 체이닝은 실패하는 반면 강제 언래핑은 런타임 에러를 트리거 합니다. Defining Model Classes for Optional Chaining 하나 이상의 레벨 깊이인 프로퍼티 메서드 그리고 서브 스크립트를 호출하기 위해 옵셔널 체이닝을 사용할 수 있습니다. 타입 호환되는 복잡한 모델 내 하위..
-
Swift 5.6 Deinitialization기술/iOS 2022. 3. 20. 17:51
Deinitialization How Deinitialization Works Swift 는 더이상 필요하지 않을 때 자원 확보를 위해 자동으로 인스턴스를 할당 해제 합니다. Swift 는 자동 참조 카운팅을 통해 인스턴스를 관리합니다. 일반적으로 인스턴스가 할당 해제 될 때 수동으로 수행할 필요가 없습니다. 그러나 자체 지원으로 작업하는 경우 추가 정리 로직이 필요한 경우가 있습니다. 클래스 초기화 해제는 클래스 당 하나의 초기화 해제 구문만 가지고 있습니다. 이 초기화 해제 구문은 파라미터가 없고 소괄호 없이 작성됩니다. 초기화 해제 구문은 인슽턴스가 할당 해제 되기 직전 자동으로 호출됩니다. 초기화 해제 구문을 직접 호출할 수는 없습니다. 상위 클래스 초기화 해제 구문은 하위 클래스로 상속되고 상위..
-
Swift 5.6 Initialization기술/iOS 2022. 3. 20. 17:51
Initialization Settings Initial Values for Stored Properties 클래스와 구조체는 해당 클래스 또는 구조체의 인스턴스가 생성될 때까지 모든 저장된 프로퍼티에 적절한 초기값을 반드시 설정해야합니다. 저장된 프로퍼티는 확정되지 않은 상태로 남아있을 수 없습니다. 추기화 구문 내에서 저장된 프로퍼티에 초기값을 설정하거나 프로퍼티의 저으이 부분에서 기본 프로퍼티 값을 할당할 수 있습니다. Initializers 초기화 구문은 특정 타입의 새로운 인스턴스를 생성하기 위해 호출됩니다. 가장 간다한 형식으로 초기화 구문은 init 키워드를 작성하여 파라미터가 없는 인스턴스 메서드와 같습니다. init() {} Default Property Values 초기화 구문 내에서 ..