분류 전체보기176 (Java)백준 24060 알고리즘 수업 - 병합 정렬 1 1. 문제 조건 문제 제목 그대로 주어진 수를 병합정렬을 이용해 푸는 문제. 숫자를 정렬 할 때마다 개수를 세서, K번째 정렬한 숫자를 출력해야 한다. 2. 아이디어 구현해놓은 병합 정렬을 활용하기 단, 전체를 정렬할 필요 없이, 문제의 조건이 충족되는 순간 모든 메서드를 멈추고 결과값을 출력해봤다. 3. 구현 package Silver4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main_24060병합정렬1 { static int[] arr; stati.. 2023. 3. 26. (스프링 핵심 원리 - 기본편) 2-(3) 회원 도메인 설계, (4) 회원 도메인 개발, (5) - 회원 도메인 설계 회원 데이터는 자체 DB 구축 또는 외부 시스템과 연동(미확정) - 회원 도메인 설계하기 클라이언트 회원 서비스 (역할) 회원가입 회원조회 회원 저장소 (회원 데이터에 접근하는 계층 따로 만들기, 인터페이스, 역할) 구현 => 메모리 회원 저장소 : 메모리니까 컴퓨터 껐다 켜면 날아가므로 개발용으로만 사용, 테스트하거나 로컬에서 개발할 때 사용. 이걸로 개발하다가 나중에 데이터베이스나 외부 시스템이 결정되면 그걸로 바꿔 끼울 것! DB 회원 저장소 외부 시스템 연동 회원 저장소 - 회원 클래스 다이어그램(실제 구현레벨로 내려오면!) - 회원 객체 다이어그램(객체가 실제로 참조하는 주소) 클라이언트 -> 회원서비스Impl -> 메모리 회원 저장소 ** 윈도우 환경에서 IntelliJ .. 2023. 3. 26. (스프링 핵심 원리 - 기본편) 2-(1) 프로젝트 생성, (2) 비즈니스 요구사항과 설계 - 준비하기 JAVA11 IntelliJ 스프링 부트 스타터 사이트에서 스프링 프로젝터 생성 : https://start.spring.io - 프로젝트 열기 build.gradle 파일을 open as project * build.gradle 내에서 설정을 변경하면 반드시 옆에 코끼리 아이콘 눌러줘야 라이브러리 등이 변경 된다 !! - 실행해보기 - 설정 [File] - [Settings] - Gradle 검색 - 아래 사진처럼 [Build and run using]과 [Run tests usint]을 'IntelliJ IDEA'로 바꾸기 이렇게 설정하면 Gradle을 통해 실행하지 않고, IntelliJ로 바로 실행하기 때문에 조금 더 빠르다고 한다. - 비즈니스 요구사항 확인 회원 : 회원 가입, 조.. 2023. 3. 25. (스프링 핵심 원리 - 기본편) 1-(5) 객체 지향 설계와 스프링 - 스프링과 객체지향 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 DI(Dependency Injection) : 의존관계, 의존성 주입 DI 컨테이너 제공 * OCP : 개방-폐쇄원칙 * DIP : 의존성 역전 원 클라이언트 코드의 변경 없이 기능 확장 쉽게 부품을 교체하듯이 개발 - 정리 모든 설계에 역할과 구현 분리할 것 애플리케이션 설계도 공연을 설계 하듯이 배역만 만들어두고 배우는 유연하게 변경할 수 있도록 하는 것이 좋은 객체 지향 설계 이상적인 건 모든 설계에 인터페이스를 부여하는것 2023. 3. 25. (스프링 핵심 원리 - 기본편) 1-(4) 좋은 객체 지향 설계의 5가지 원칙(SOLID) - SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙 정리 1. SRP 단일 책임원칙 한 클래스는 하나의 책임만 하나의 책임 : 모호 / 클 수도 작을 수도 , 문맥, 상황에 따라 중요한 기준은 변경! 변경이 있을 때 파급 효과 적으면 OK. 2. OCP 개방-폐쇄 원칙 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 함 다형성을 활용하면 지킬 수 있음 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능 구현 문제점 구현 객체를 변경하려면 클라이언트 코드 변경해야 함 분명 다형성을 사용했는데 이 원칙을 지킬 수 없는데??? 객체를 생성하고 연관관계를 맺어주는 별도의 조립, 설정자가 필요함 => 이걸 스프링이 해준다 !! 3. LSP 리스코프 치환 원칙 .. 2023. 3. 24. (스프링 핵심 원리 - 기본편) 1-(3) 좋은 객체지향 프로그래밍 - 객체지향 프로그래밍 컴퓨터 프로그램을 명령어 목록으로 보기보다는 여러 개의 독립된 단위인 객체들의 모임으로 파악하고자 하는 것. 객체는 메시지를 주고 받고 데이터 처리 가능 프로그램을 유연하고 변경이 용이(부품 갈아끼우듯이) 하게 만들기 때문에 대규모 개발에 많이 사용됨. - 다형성 실세계와 비교해보자. 세상을 역할과 구현으로 구분해본다면! 운전자 & 자동차 비유 운전자 & 자동차. 운전자 역할 / 자동차 역할. 이런 자동차 역할을 여러 자동차 회사의 자동차들이 구현 자동차가 바뀌어도 운전자에게 영향을 주지 않음 자동차 역할과 구현을 분리한건 바로 운전자를 위한 것. 자동차의 내부 구조를 운전자가 알 필요가 없고, 자동차가 바뀌어도 운전자는 바뀔 필요가 없다. => 대상을 바꾸지 않고 새로운 자동차를.. 2023. 3. 24. 이전 1 ··· 15 16 17 18 19 20 21 ··· 30 다음