목록Java (22)
여행을 개발하다
안녕하세요! 오늘은 '스프링의 개요'와 '의존성 주입(Dependency Injection)'에 대해 알아보겠습니다. 1. 스프링 프레임워크(Spring Framework) 스프링은 자바 플랫폼을 위한 '오픈소스 애플리케이션 프레임워크(Framework)'입니다. 여기서 프레임워크란, 소프트웨어를 편리하게 제작할 수 있도록 뼈대를 이루는 클래스와 인터페이스를 미리 제작하여 모아둔 것을 의미하는데요. 프레임워크를 적시적소에 사용하면 프로그램 개발의 생산성이 올라가며, 품질이 향상된다는 장점이 있습니다. 하지만 익숙해지는데 시간이 소요된다는 것이 결국 유연성의 부족으로 이어진다는 단점도 있습니다. 스프링은 프레임워크의 일종으로 여러 클래스의 객체를 생성해주고, 조립해주는 '조립기' 역할을 합니다. 또한 크기..
안녕하세요! 오늘은 스프링(Spring)의 설치법에 대해 포스팅하고자 합니다. (단, Eclipse를 사용하고 계셔야 합니다.) 1. Spring 공식 홈페이지 접속하기 먼저 Spring 공식 홈페이지로 들어갑니다. 불편하시면 아래 링크로 곧장 들어가셔도 상관없습니다. 주소는 'spring.io'!!! 일반 홈페이지와는 조금 다르죠? spring.io 2. Tools 메뉴 선택 스크롤을 끝까지 내려주시면 아래 TEAM, SERVICES, TOOLS, STORE 등의 메뉴가 보이는데요. (왜 이렇게 숨겨놓으셨을까...) 이 중에서 TOOLS를 선택합니다!! 3. 버전에 맞는 다운로드 파일 선택 그 다음엔 버전에 맞는 다운로드 파일을 선택해야 합니다. 급하게 'DOWNLOAD STS'을 누르시지 말고, 아래..
안녕하세요! 오늘 포스팅 할 내용은 'ArrayList'입니다. 배열의 길이는 정해져 있기도 하지만, 때에 따라서 유연하게 늘였다 줄였다 할 필요가 있습니다. 데이터가 추가되고 빠질 때마다 적당하게 메모리가 할당이 되어야 하기 때문이죠. 실제 실무에서도 불필요한 메모리 할당으로 메모리 누수 현상을 방지하기 위해, 배열의 길이는 대부분 정하지 않고 사용한다고 합니다. Java는 이러한 상황에서 배열을 동적 할당하기 위해, ArrayList라는 클래스를 활용합니다. 그럼 ArrayList를 어떻게 활용하는지, 지금부터 살펴보겠습니다. * 왜 동적 할당이 필요할까...? 본격적인 설명에 앞서, 왜 배열의 동적 할당이 필요한지 예제를 통해 살펴보겠습니다. 1과 2를 더한 값인 3을 출력하는 sum(arg)라는 ..
안녕하세요!! 오늘의 포스팅 주제는 '인터페이스(Interface)'입니다. 지난 포스팅에서 Java는 다중 상속이 금지되어 있으며, 그 이유를 C++에서 다중 상속 시 발생 우려가 있는 Diamond of Death 현상으로 설명하였습니다. 인터페이스(Interface)는 이러한 Java의 한계점을 보완하기 위해 마련된 기능이라고 보시면 됩니다. 즉, 다른 클래스를 상속 받은 서브 클래스들의 공통점을 추출해서 사용이 가능하도록 돕습니다. 그럼 지금부터 인터페이스의 특징에 대해 알아보겠습니다. 1. 인터페이스(Interface)의 정의 - 무조건 정적(static) 멤버 변수(상수)와 추상 메소드로만 구성되는 클래스의 특별한 형태. C++에서도 '어떤 클래스로부터 상속을 받을지'에 대한 모호성으로 다중 ..
안녕하세요! 오늘 포스팅 할 내용은 'Diamond of Death 현상'입니다. 사실 본론부터 이야기하자면, Java에서는 일어날 수 없는 현상입니다. 왜냐하면 Java는 다중 상속을 허용하지 않기 때문입니다. 여기서 다중 상속이란, 여러 개의 서브 클래스가 하나의 동일한 슈퍼 클래스를 상속받는 것을 의미하는데요. 하나의 클래스의 활용도를 엄청 높일 수 있을 것만 같은데, Java는 왜 C++로부터 물려받지 않았을까요? 그 이유를 지금부터 풀어갑니다. * Diamond of Death (데스 다이아몬드 현상) * B와 C클래스는 A라는 부모 클래스를 상속 받은 자식 클래스이다. * 그런데 D라는 클래스는 B와 C클래스를 동시에 상속받았다. * 결국 D는 B와 C클래스를 상속 받기는 했지만, A클래스를 ..
안녕하세요! 오늘 포스팅 할 내용은 "클래스(Class)의 상속(Inheritance)"입니다. Java가 C++과 가장 다르다고 느낀 부분은, class가 가장 기본이 된다는 것이었어요. Java는 C계열의 언어와는 달리 다양한 class와 method가 정의되어 있습니다. 그만큼 C계열의 언어에 비해 코딩이 편하다(?)고 생각하는데요. 문제는 package와 project 등을 생성할 때마다 새로운 class를 만들다보면 , 동일한 이름과 기능을 갖게 되는 class들 때문에 많은 미스커뮤니케이션과 혼란이 발생할꺼에요. 이것이 바로 클래스의 상속이 적시적소에 이루어져야 하는 이유입니다. 그럼 Java의 기본이 되는 class의 상속(Inheritance)에 대해 알아볼까요? 1. 클래스의 상속이란? ..
안녕하세요!! 오늘 포스팅 할 내용은 "StringTokenizer"라는 클래스입니다. 우리는 컴퓨터에 영문자, 한글 등 여러 가지 언어와 형태로 문자를 입력합니다. 그리고 필요에 따라 쉼표(,), 마침표(.), equal(=)을 쓰기도 하구요. 그런데 쉼표, 마침표, equal은 의미 단위를 구분해주는 '구분자'로도 사용됩니다. "StringTokenizer"라는 클래스는 이러한 구분자와 밀접한 연관이 있습니다. 지금부터 "StringTokenizer"이라는 클래스와 세부적으로 함께 쓰일 수 있는 "hasMoreTokens()", "nextToken()" 이라는 메소드에 대해서도 살펴보도록 하겠습니다. 들어가기 전에 토큰(Token)의 개념부터 정리하고 가요! 네이버 사전의 힘을 빌리겠습니다 : ) 토..
안녕하세요 : ) 오늘은 random 클래스를 활용하여 lotto 번호를 추출하는 프로그램을 코딩해보겠습니다. 1. Algorithm 구상 ① 1 ~ 45의 숫자를 저장할 수 있는 lotto_array이라는 이름의 배열을 선언한다. ② lotto_test 배열에 1부터 45의 숫자를 저장한다. ③ random 클래스 자료형의 random 객체를 형성한다. ④ 정수형 변수 r을 선언하고, 1부터 44 이하의 숫자에서 무작위 1개를 선택하여 r에 저장한다. ⑤ lotto_test의 0번째 인수와 r번째 인수를 100000번 섞는다. ⑥ 섞기가 완료되면 0번째부터 6번째 인수를 시간차를 두고 호출한다. 참고로 0번째부터 5번째 인수는 당첨번호이며, 6번째 인수는 보너스 번호이다. 2. Coding ① 1 ~ ..