분류 전체보기
-
[Spring] DI 컨테이너 예제 만들기 ( 1 ), JUnit 사용하기Back-end/Spring 2022. 3. 3. 14:45
안녕하세요 이번 포스팅은 DI 컨테이너를 활용해서 OCP와 DIP를 준수하면 개발하는 예제와 JUnit 사용에 대해서 알아보겠습니다!! 회원에 관한 인터페이스와 클래스는 위와 같이 생성해보겠습니다. 우선 MemberRepository는 회원가입과, 조회의 기능을 갖고 있는 인터페이스이며 인터페이스를 구현하는 클래스는 MemoryMemberRepository와 DBMemberRepository 이렇게 2개가 있다고 가정합니다. MemoryMemberRepo는 Member 객체를 생성해서 HashMap에다가 저장하고 찾는 방식이고 DBMemberRepo는 말 그대로 DB에 저장하고 찾는 방식입니다. 우선 다음의 enum과 클래스들을 생성해보겠습니다. //회원등급 public enum Grade { BASIC..
-
[Spring] 좋은 객체 지향 설계의 5가지 원칙(SOLID)Back-end/Spring 2022. 3. 2. 14:48
안녕하세요 이번 포스팅은 그 유명한 SOLID 원칙에 대해서 알아보겠습니다!! SOLID 원칙 SOLID는 클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 것으로 다음과 같습니다. • SRP: 단일 책임 원칙(single responsibility principle) • OCP: 개방-폐쇄 원칙 (Open/closed principle) • LSP: 리스코프 치환 원칙 (Liskov substitution principle) • ISP: 인터페이스 분리 원칙 (Interface segregation principle) • DIP: 의존관계 역전 원칙 (Dependency inversion principle) 5가지 원칙 중에서 중요도를 나눠서 비교해 봤을 때 OCP와 DIP..
-
[Spring] Spring의 핵심과 객체 지향 프로그래밍Back-end/Spring 2022. 3. 2. 13:18
안녕하세요 이번 포스팅은 좋은 객체 지향 프로그래밍과 스프링의 핵심에 대해서 알아보겠습니다. 스프링의 진짜 핵심!! 스프링은 자바 언어 기반의 프레임워크입니다. 그렇다면 자바 언어의 가장 큰 특징은 무엇일까요? 바로 객체 지향 언어라는 것입니다. 그리고 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크라고 할 수 있고 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크입니다. 좋은 객체 지향 프로그래밍 객체 지향의 특징은 다음과 같습니다. 추상화 캡슐화 상속 다형성 이번 포스팅은 다형성에 대해서 알아보겠습니다! 우선 객체 지향 프로그래밍의 사전적 정의는 다음과 같습니다. • 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단..
-
[Spring] Spring의 역사에 대해서 알아보자Back-end/Spring 2022. 3. 2. 12:21
안녕하세요! 오랜만에 포스팅을 하는데 그동안 인터넷 강의를 수강하고, 취업준비를 하느라 포스팅이 늦었습니다. 이번 포스팅은 Spring이 탄생한 배경과 역사에 대해서 알아보겠습니다!! 추운 겨울 EJB(Enterprise Java Beans)의 시기 Spring framework 1.0은 2004년 3월에 release 됐습니다. 스프링이 세상에 처음 나올 당시, 자바로 애플리케이션은 개발하는 가장 일반적인 방법은 EJB(Enterprise Java Beans)를 사용하는 것이었습니다. EJB는 엔터프라이즈급 애플리케이션 개발을 단순화하기 위해서 발표되었고 당시 대부분의 기업은 EJB를 사용했습니다. 많은 기업들이 사용했다면은 확실한 장점이 있었겠죠? 하지만 장점보다는 단점이 더 큰 스펙입니다. 개발을 ..
-
[프로그래머스] 로또 최고순위와 최저순위Algorithm 2022. 2. 18. 16:19
로또의 최고 순위와 최저 순위 문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0,..
-
[cospro] 체스의 나이트Algorithm 2022. 2. 18. 16:16
01 COS PRO 1급 JAVA 1차 100% [1차] 문제6) 체스의 나이트 - JAVA 실습 내용 ※ 프로그램 구현문제 □ 문제설명 체스에서 나이트(knight)는 아래 그림과 같이 동그라미로 표시된 8개의 방향중 한 곳으로 한 번에 이동이 가능합니다. 단, 나이트는 체스판 밖으로는 이동할 수 없습니다. 체스판의 각 칸의 위치는 다음과 같이 표기합니다. 예를 들어, A번줄과 1번줄이 겹치는 부분은 'A1'이라고 합니다. 나이트의 위치 pos가 매개변수로 주어질 때, 나이트를 한 번 움직여서 이동할 수 있는 칸은 몇개인지 return 하도록 solution 함수를 완성해주세요. □ 매개변수 설명 나이트의 위치 pos가 solution 함수의 매개변수로 주어집니다. pos는 A부터 H까지의 대문자 알파..
-
[cospro] 소용돌이 수Algorithm 2022. 2. 18. 16:16
01 COS PRO 1급 JAVA 1차 100% [1차] 문제5) 소용돌이 수 - JAVA 실습 내용 ※ 프로그램 구현문제 □ 문제설명 다음과 같이 n x n 크기의 격자에 1부터 n x n까지의 수가 하나씩 있습니다. 이때 수가 다음과 같은 순서로 배치되어있다면 이것을 n-소용돌이 수라고 부릅니다. 소용돌이 수에서 1행 1열부터 n 행 n 열까지 대각선상에 존재하는 수들의 합을 구해야 합니다. 위의 예에서 대각선상에 존재하는 수의 합은 15입니다. 격자의 크기 n이 주어질 때 n-소용돌이 수의 대각선상에 존재하는 수들의 합을 return 하도록 solution 메소드를 완성해주세요. □ 매개변수 설명 격자의 크기 n이 solution 함수의 매개변수로 주어집니다. n은 1 이상 100 이하의 자연수입니..
-
[cospro] 언제까지 오르막길이야Algorithm 2022. 2. 18. 16:15
02 COS PRO 1급 JAVA 2차 100% [2차] 문제5) 언제까지 오르막길이야..?! - JAVA 실습 내용 □ 문제설명 자연수가 들어있는 배열이 있습니다. 이 배열에서, 숫자가 연속해서 증가하는 가장 긴 구간의 길이를 구하려 합니다. 단, 바로 전 숫자와 현재 숫자가 같은 경우는 증가한 것으로 보지 않습니다. 예를 들어 배열에 순서대로 [3, 1, 2, 4, 5, 1, 2, 2, 3, 4]가 들어있는 경우, [1, 2, 4, 5]가 들어있는 구간이 숫자가 연속해서 증가한 가장 긴 구간이며, 길이는 4입니다. 자연수가 들어있는 배열 arr와 arr의 길이 arr_len이 매개변수로 주어질 때, 숫자가 연속해서 증가하는 가장 긴 구간의 길이를 return 하도록 solution 함수를 완성해주세요..