전체 글
-
[디자인 패턴] 싱글톤 패턴프로그래밍/이론 2022. 1. 9. 02:06
디자인 패턴 중 생성 패턴의 종류인 싱글톤 패턴(Singleton Pattern)은 무엇일까? 아래 예제는 로그를 출력하는 간단한 클래스이다. class Log { void info(String msg) { System.out.println("정보: " + msg); } } class One { Log log = new Log(); public One() { log.info("클래스 생성 - " + this.getClass()); } } class Two { Log log = new Log(); public Two() { log.info("클래스 생성 - " + this.getClass()); } } public class Main { public static void main(String[] args)..
-
[디자인 패턴] 의존성 주입 알아보기프로그래밍/이론 2021. 10. 18. 15:57
디자인 패턴 중 생성 패턴의 종류인 의존성 주입(Dependency Injection)은 무엇일까? 먼저 의존성은 무엇일까? public class Printer3D { private Nylon nylon; public Printer3D() { this.nylon = new Nylon(); } public static void main(String[] args) { new Printer3D(); } } class Nylon {} 다음과 같이 Printer3D클래스에서 Nylon 클래스를 이용할 때 Printer3D가 Nylon에 의존성을 가진다고 한다. Printer3D 클래스는 Nylon 클래스에 의존하기 때문에 Nylon 클래스에 맞춰 작동해야 한다. 의존을 강하게 할수록 좋지 않다. 만약 3D프린터..
-
[Android Studio] Gradle 알아보기개발/Android 2021. 10. 15. 21:28
이 포스팅에선 Android Studio에서 경험하는 Gradle을 중점으로 다룰 것이다. Android Studio를 하면 Gradle을 볼 수가 있다. 라이브러리를 추가할 때 Gradle을 건드리는데, Gradle은 무슨 기능을 할까? Gradle은 빌드 도구다. 그렇다면 빌드는 무엇인가? 빌드는 앱 리소스와 소스코드를 컴퓨터가 읽을 수 있는 바이트코드로 변환하고(컴파일), 이를 모아 실행파일(APK, AAB)을 만드는 과정이다. 프로젝트에 외부 라이브러리를 추가할 때마다 설정을 건드려주어야 한다. 이를 일일이 하기엔 시간이 많이 드니 이를 자동을 처리해주는 것이 빌드 도구다. 빌드 도구는 이런 라이브러리를 쉽게 추가해주며, 자동으로 업데이트도 해주고 설정하는 시간을 단축시켜주고 테스트까지 자동으로 ..
-
[디자인 패턴] 디자인 패턴의 정의프로그래밍/이론 2021. 10. 14. 03:26
우리가 개발을 할 땐 필연적으로 협업을 하게 된다. 이때 이미 작성되어 있는 코드를 접하게 되면 이 코드를 풀어내야 하는데, 기존의 개발자가 코드를 스파게티처럼 만들어 놓았다면... 코드를 해석하는데 많은 시간과 예산이 들어가는 것은 큰 손해이다. 코드를 짤 때 읽기 편하고, 최적화도 하고, 유지보수하기도 좋은 코드를 만드는 것이 좋다. 또 시스템을 디자인할 때 문제가 발생했을 때 이를 해결하기 위한 이론이 있으면 쉽게 문제를 해결할 수 있을 것이다. 이를 해결하기 위해 디자인 패턴을 만들었다. 디자인 패턴은 교과서이기 때문에 각자의 사정에 맞게 잘 적용시키면 되며, 알아두면 나중에 써먹을 일이 있을 거라고 생각한다. 디자인 패턴과 유사한 객체 지향 프로그래밍 설계의 5원칙인 SOLID가 있다. 디자인 ..
-
[Java] static 알아보기프로그래밍/Java 2021. 10. 13. 00:01
메서드와 필드에 붙는 static은 왜 붙는 것이고 무슨 역할을 할까? 예제를 만들어봤다. public class Marin { public int range = 4; public boolean isUpgrade; } class Academy { void upgradeRange(Marin m) { if (!m.isUpgrade) { m.range = 5; m.isUpgrade = true; } } } 마린 유닛의 사정거리는 4이고, 아카데미에서 업그레이드를 하면 사정거리는 5가 된다. 업그레이드는 한 번밖에 못하니 isUpgrade 조건을 넣어주었고, 당연히 업그레이드는 지금 생성된 유닛은 물론이고 앞으로 생성될 유닛까지 모두 오른다. 그러면 한번 작동시켜보자. public class Test { pub..
-
[Java] 접근제어자 알아보기프로그래밍/Java 2021. 10. 11. 14:34
접근제어자는 무엇일까? 접근제어자는 외부 클래스에서 클래스, 생성자, 메서드, 변수에 붙어서 접근하는 것을 제한할 때 쓰인다. 어느 곳에 붙는 것에 따라 성격이 다르다. 메서드, 변수에 붙는 접근제어자는 무엇에 쓰이는가? 바로 외부에서 직접 접근을 하지 못하게 하려고 하는 것이다. ArrayList 클래스를 통해서 예시를 들어보겠다. ArrayList 클래스에 대한 자세한 것은 나중에 설명하겠다. public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable { private int size; private void add(E e, Object[] elementData, int..
-
[Java] public static void main(String args[]) 알아보기프로그래밍/Java 2021. 10. 10. 17:27
우리는 프로그래밍을 시작할 때 맨 처음 "Hello, World!"를 출력한다. public class Test { public static void main(String[] args) { System.out.println("Hello, Java!"); } } 이때 public static void main(String[] args)는 무엇일까? public static void main(String[] args)를 메인 메서드라고 부른다. 즉 public static void main(String[] args)도 메서드의 일종이다. 앞에 붙은 예약어들이 무엇인지 하나하나 살펴보겠다. public은 접근제어자이다. 접근제어자로는 public, protected, default, private이 있다. 접..