분류 전체보기

언어/Java

[Java] 가변인자 ... 표현

오늘은 Java의 ... 표현에 대해서 알아보려고한다. 이 표현을 최근에 접해보면서 알게되었는데, 생각해보면 가끔 코딩을 하다가 파라미터를 받을 때 ... 같은 표현을 본 적이 있는 것 같다. ​ 이 표현의 이름은 ellipsis 뜻 풀이 하자면 생략이다. (가변길이 파라미터 또는 가변인자라고도 불린다) 같은 유형의 타입을 여러개 받아도 처리 할 수 있게 해주는 역할을 해준다. ​ 이렇게 말하면 살짝 이해가 안될 수도 있을 것 같아 예제 코드를 살펴보자. public class Main{ public static void main(String[] args) { String[] name = {"GG", "_", "BB"}; print("GG_BB"); System.out.println("\n"); prin..

오늘의 공부/CS

API에 대해서

오늘은 API라는 것에 대해서 알아보려고한다. API는 개발을 하다보면 어디선가 한 번쯤은 들어봤을 법한 단어이다. ​ API? 프로그래밍 할 때 편하게 짤 수 있게끔 도와주는 거 아닌가? 그렇다면 라이브러리는 뭐지? 라고 생각하면서 점점 복잡해지게 되는 것이다. 이러한 개념을 확실하게 정리해보도록 하자. ​ API(Application Programming Interface, 응용프로그램 프로그래밍 인터페이스) API는 말 뜻대로, 응용프로그램에서 사용하기 위한 목적으로 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 하는 인터페이스를 말한다. ​ 예를 들어, 우리가 흔히 이용하는 유튜브에서 데이터를 가져오려면 유튜브 API를 통해서 원하는 데이터들을 가져오거나 기능을 실행할 수 있는 것..

Spring

[Spring 핵심 원리] 의존관계 주입에 대하여 (생성자 주입과 Lombok)

이번 글에서는 의존관계 주입 방법에 대해서 더 자세히 다뤄볼 것이다. 지금까지의 예제에서는 빈 등록을 이용해서 단순히 실행만 시켜보는 구조였기에 객체간의 의존관계 주입이 없었다. 그렇기에 이번에는 의존관계에 대해 설명 못한 것들(종류, 좋은 방법, 활용하는 법 등)에 대해서 알아보려고 한다. 전 글들에서 언급했던 @Autowired 나 생성자 주입의 중요성과 Lombok도 이 곳에서 모두 다룰 것이다. ​ 그럼 먼저 종류에 대해서 살펴보자. ​ 생성자 주입 @Component public class StuService implements Service{ private final Repository repository; public StuService() {} @Autowired public StuServ..

Spring

[Spring 핵심 원리] 싱글톤 패턴

이번 글은 싱글톤에 대해서 정리해보려고 한다. Spring에 대한 내용만은 아니지만 연관되어 이야기 할 수 있기에 정리해볼 것이다. ​ 싱글톤 패턴이란 객체의 인스턴스가 딱 1번만 생성되는 패턴을 말한다. 예를 들어보자면, 어떤 프로그램 내에서 고객은 기능을 실행하기 위해 객체를 생성해야만 할 것이다. 그럴 때 같은 기능인데도 불구하고, 고객이 여러명이면 객체를 여러개 생성할 수 밖에 없을 것이다. 싱글톤 패턴은 이런 상황에서 객체를 1번만 생성하고 그 객체를 이용할 수 있게 하는 패턴인 것이다. ​ 그렇다면 이 싱글톤 패턴은 어떻게 사용하는지 살펴보자. ​ 이른 초기화 방법 public class SingletonService { private static final SingletonService in..

Spring

[Spring 핵심 원리] 수동 빈 등록을 통한 의존관계 주입

이번 글은 드디어 의존관계 주입을 하는 방법들에 대해서 알아보려고 한다. 첫번째 글에서는 xml 파일을 만들어 Spring을 통해 의존관계를 주입해주는 예를 들었었다. 그 방법은 이제 Spring의 기능을 직접 이용하지 않고, 파일을 직접 불러와서 해결했던 방법이었기에 생각보다 어려워 보였을 것이다. 하지만 이번에 소개할 방법을 Spring에서 제공하는 기능들을 통해서 의존관계 주입을 해보려고 한다. ​ 일단 먼저 다형성만을 이용해 문제가 된 코드를 예로 들어보겠다. public class Main { public static void main(String[] args) { Repository repository = new StuRepository(); Student stu1 = new Student(1..

Spring

[Spring 핵심 원리] SOLID

이번에는 좋은 객체지향 설계를 위한 5가지 원칙인 SOLID에 대해서 정리해보려고 한다. 원래는 의존성 주입하는 방식들에 대한 글을 쓰려했으나 이것을 먼저 정리하는 것이 좋을 것 같다고 생각되어 정리하게되었다. SOLID 원칙같은 경우에는 굳이 Spring이 아니더라도 좋은 객체지향 프로그램을 만들고 싶다면 지켜야 될 원칙이다. 어떤 내용인지 한 번 살펴보자. ​ 1. SRP (Single Responsibility Principle, 단일 책임 원칙) 단일 책임 원칙이란 한 클래스는 하나의 책임만을 가져야 한다는 원칙이다. 예를 들어서 학생들을 저장하고 조회하는 기능을 만드려고 하는데, 이 클래스 내에서 프로그램의 실행까지 이루어진다면, 이는 한 클래스가 하나의 책임이 아닌 여러 책임을 가지게 되는 것..

언어/Java

[Java] Static import

오늘은 static import에 대해서 알아보려고 한다. 그동안 개발을 하면서 들어본 적이 없었기에 매우 편리한 기능이라고 생각되었다. 어떤 기능인지 한 번 살펴보자. public class Main{ public static void main(String[] args) { System.out.println("GG_BB"); } 쉽게 알아보기 위해서 누구나 한번 쯤은 써봤을 println을 예제로 사용하겠다. 위 코드는 그저 GG_BB라는 구문 하나를 출력하기 위한 코드이다. 이 코드에 static import를 적용시켜보겠다. import static java.lang.System.*; public class Main{ public static void main(String[] args) { out...

Spring

[Spring 핵심 원리] Spring이란?

이번에는 Spring에 대해서 정리해볼려고 한다. ​ 스프링은 무엇일까? 스프링이란 자바 플랫폼을 위한 자바 기반 프레임워크로써 객체지향 언어인 자바의 특성을 살리는 것을 도와준다. 쉽게 생각하자면 그동안 배운 자바를 활용할 수 있는 확장 라이브러리이며, 좋은 객체지향 프로그램을 만들 수 있도록 도와준다는 것이다. ​ 이러한 스프링은 여러 특징을 가지고 있다. ​ 1. POJO 기반 POJO(Plain Old Java Object) 기반은 그대로 해석해보자면 오래된 자바 객체를 기반으로 한다는 뜻인데, 이는 스프링에서 객체간의 관계를 구성할 때 별도의 API를 사용하지 않고, 그냥 Java 코드만을 사용해서 객체를 구성할 수 있다는 것이다. 별도의 다른 라이브러리 등을 숙지하지 않아도 된다는 것이다. ​..

언어/Java

[Java] 컬렉션 프레임워크

이번 글에선 컬렉션 프레임워크에 대해서 정리해보려고 한다. 컬렉션 프레임워크는 프로그래밍에 있어서 필수불가결한 요소라고 생각한다. 저번에 설명한 스트림도 컬렉션을 활용할 수 있는 것이고, 기본적으로 배열같은 데이터는 실무에서나, 혼자 코딩할 때나, 코딩테스트를 할 때도 거의 항상 들어가기 때문이다. 그렇기에 더 자세히 이해하고 활용할 수 있어야겠다는 생각을 하게 되었다. 그렇다면 한번 시작해보자. ​ 일단 컬렉션에 대해 설명하기 전에 사진을 보며 종류에 대해서 살펴보자. ​ 컬렉션 프레임워크는 인터페이스로 구현되어있다. 그 인터페이스(컬렉션)으로 구현되어있는 것들이 List, Set, Map인데 이 컬렉션 인터페이스들을 통해 구현한 것들(ArrayList, HashMap 등)을 컬렉션 클래스라고 불린다...

언어/Java

[Java] - Lambda 표현식과 Stream

이번 글에서 다룰 주제는 Java SE 8버전에서 추가된 Lambda(람다) 표현식과 Stream API에 대해서다. 나는 애석하게도 Lambda 에 대한 것이나 Stream 을 배워본 적이 없어서 활용해보질 못했었다. 그렇기에 더욱 더 제대로 공부해야겠다고 생각이든다. ​ 이번 글에서 설명할 람다 표현식과 스트림을 이용하면 많은 장점이 있다. 기존의 불필요한 코드를 줄여주고, 가독성을 높여주며 효율 면에서도 좋은 효과를 줄 수 있다. 대체 어떤 방식이길래 그러는지 정리해보겠다. ​ 1. Lambda 표현식 람다 표현식은 식별자 없이 실행이 가능한 함수를 만들 때 쓰인다. 이 한줄을 보면 식별자가 없는데 어떻게 실행을 하지? 라는 생각이 들 수도 있다. 자바스크립트를 해봤다면 변수에 함수를 넣어서 익명함..

언어/Java

[Java] 자바 프로그램의 구조

오늘은 자바 프로그램의 기본 구조에 대해서 정리해보려고 한다. 오늘 설명하는 내용은 기본적인 내용이기도 하지만, 면접질문에도 많이 나오고, 객체지향에 대한 중심이 담겨 있다고 생각한다. 얼핏하면 헷갈리는 것들도 정리해서 잘 기억할 수 있도록 해야겠다. ​ 자바 프로그램의 기본 구조 ​ 우리가 자바 코딩을 하기 위해 무언가를 추가할 때, 많은 선택지가 있다. Class, Interface, Enum, Annotation 까지... Class와 Interface 까지는 들어봤어도 Enum? Annotation?? 할 수도 있을 것 같다. 하지만 그리 어렵지는 않은 개념들이니 정확히 알아두고 활용해보는 게 좋을 것이다. ​ 1. Class 첫 번째로는 자바를 처음 배우게 되면 맞이하게 되는 클래스이다. 클래스..

언어/Java

[Java] - 자바란?

Java의 기본다지기를 해보려고한다. 아무래도 기본이 조금 부족한 걸 여러모로 느껴서, 처음 시작하는 느낌으로 돌아가 Java에 대한 걸 처음 부터 시작해서 끝까지 모르는 것이 없을 정도로 하나하나 이해하면서 넘어 갈 생각이다. ​ 오늘의 기본은 조금 고리타분하게 들릴 수도 있는 Java에 대해서이다. ​ JAVA? 자바언어는 객체 지향적 프로그래밍 언어이다. 객체지향(Object-Oriented Programming, OOP)은 명령어들이 합쳐져 만들어진 컴퓨터 프로그램을 하나의 독립된 단위로 보는 것을 말한다. 각 객체들(각 기능들)은 메시지를 주고받고 데이터를 처리하여, 프로그램을 유연하고 용이하게 변경할 수 있게 한다. 쉽게 말하자면 개발한 요소(클래스) 하나하나가 객체가 되고 그 요소끼리 상호작..

ppusda
'분류 전체보기' 카테고리의 글 목록 (7 Page)