_

Always be tactful

728x90

프로그래밍/배웠어 18

[IntelliJ] Git Clone / Clone failed: repository not found

GitHub 조직 초대를 받았다. GitHub에서 따로 알림이 오지 않아, 처음에는 초대받은 줄도 몰랐다. 어느 순간 GitHub에 연동된 이메일로 들어가 보니 초대장이 있었다.  일단 작업하기 위해 조직 리포지토리를 내 개인 계정에 포크 했다. 그리고 평소와 같이 인텔리제이로 Git Clone을 시도했는데, 해당 리포지토리가 private이라 그런지 접근을 위한 로그인 요청을 받았다. 문제는, 요청에 따라 제대로 로그인을 했음에도 계속해서 리포지토리를 찾을 수 없다며 클론에 실패했다.  아직도 왜인지는 잘 모르겠다. 아무튼 기존 로그인 방식을 선택하지 않고 토큰을 생성해 인증하는 방식을 취하니 클론에 성공했다. (사용 권한이고 뭐고 인터넷에서 나온 방식들 전부 아니었고 토큰을 사용하니 해결됐다.)토근 ..

[Java] OCP (Open-Closed Principle) / 개방-폐쇄 원칙

좋은 객체 지향 설계 원칙에는 여러 가지가 있지만, 그중 하나가 바로 OCP다.Open for extentionClosed for modification 즉, 기존 코드는 수정하지 않으면서 새로운 기능을 위해 확장할 수 있어야 한다. *기존 코드: 시스템의 핵심 동작 코드*확장된 부분: 요구사항 추가 구현Strategy Pattern  전략 패턴이란 다양한 객체 지향 디자인 패턴 중 하나로, 알고리즘을 클래스로 캡슐화하여 동적으로 변경할 수 있게 해주는 패턴이다. 이 패턴은 알고리즘을 사용하는 코드와 알고리즘 자체를 분리하여, 새로 추가된 알고리즘이 기존 코드에 영향을 주지 않도록 한다.[전략 패턴의 기본 구조]클라이언트 코드 (Context)전략 인터페이스 (Strategy)구체적인 전략 (Concre..

[Java] 인터페이스의 다중 구현

일단, 자바에서 다중 상속이 안 되는 이유가 무엇인가?특정 클래스를 상속받는다고 할 때, 자식 클래스에서 오버라이딩 하지 않은 부모 클래스의 메서드가 있다고 치자. 그런데 하필이면 A라는 부모에게도 m이라는 메서드가 있고, B라는 부모에게도 m이라는 메서드가 있다. 이 상황에서 m이라는 메서드를 호출할 때, A 클래스와 B 클래스 중 어느 부모 클래스의 메서드를 호출해야 하는가? 명확한 답이 없을 뿐더러 심각한 문제를 발생시킬 여지가 있다. 때문에, 자바에서는 다이아몬드 문제를 막고자 클래스의 다중 상속을 금지시킨다. 관련 게시물: 다이아몬드 문제 반면, 인터페이스는 다중 구현을 허용한다. 그 이유는 무엇인가? 인터페이스는 인터페이스를 구현하는 곳에서 해당 기능을 모두 구현해야만 한다. 각기 다른 인터페..

[Java] 객체 지향 프로그램과 다형성

자바는 객체 지향 언어다! 객체 지향 프로그램의 대표적인 특징은 아래와 같다.캡슐화상속다형성▶ 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 말한다. 다형성 이해를 위한 핵심 이론 두 가지은 아래와 같다.다형적 참조메서드 오버라이딩▶ 다형적 참조는 말 그대로 다양한 형태로 참조될 수 있음을 말한다. (상속 관계 주의: 부모 클래스의 객체를 자식 클래스의 참조 변수에 할당하는 것은 타입 불일치로 간주된다.)상속 예제public class Parent { public void parentMethod() { System.out.println("parent method"); }}public class Child extends Parent { public..

[Java] Getter, Setter 메서드 / 접근 제어자

접근 제어자getter/setter private 필드에 직접 접근할 수 없을 때, 보통 getter 메서드와 setter 메서드를 제공한다. 이렇게 하면 객체를 안전하게 조회하거나 변경할 수 있다.public class TestForInt { private int number; // getter public int getNumber() { return number; } // setter public void setNumber(int number) { if (number != 0) { this.number = number; } }}*get + 변수명 (낙타 표기법)*set + 변수명 (낙타 표기법)public ..

[Java] super 키워드 / 상속과 메모리 구조

자바는 단일 상속만 가능하며, 상속받고자 하는 클래스에 extends 키워드를 사용하면 된다. 아래 예제에서는 Animal 클래스를 Dog와 Cat이 상속받아 기존의 코드를 재사용한다.// 부모 클래스public class Animal { public void eat() { System.out.println("Eat!"); }}// 자식 클래스public class Dog extends Animal { public void bark() { System.out.println("bark!"); }}// 자식 클래스public class Cat extends Animal { public void meow() { System.out.println(..

[Java] static final / 매직 넘버와 상수

매직 넘버 프로그래밍에서 매직 넘버란 코드에서 의미를 명확히 알 수 없는 숫자 값을 말한다. 특정 숫자가 변수 없이 바로 사용되어 이 숫자가 어떤 의미를 가지는지 알기 어려운 경우 매직 넘버라고 부르는 것이다. 매직 넘버는 가독성을 저하시킬 뿐 아니라, 유지보수 측면에서도 매우 비효율적이므로 지양하는 것이 좋다. 그래서 이번에는 매직 넘버 문제를 해결하는 상수에 대해 포스팅하도록 하겠다.상수 관례public class Constant { // 수학 상수 public static final double PI = 3.14159265358979323846; public static final double EPS = 1e-6; // 시간 상수 public static final int..

[Java] 자바의 메모리 구조

멤버 변수 용어 정리public class Data { public String name; // 인스턴스 변수 public static int count; // 클래스 변수, 정적 변수, static 변수 public Data(String name) { this.name = name; count++; }}  위 코드에서 name과 count 모두 멤버 변수이다. 그러나 static 유무에 따라 인스턴스 변수, 클래스 변수로 구분된다. 인스턴스 변수의 경우 인스턴스를 만들 때마다 새로 만들어지지만, 클래스 변수의 경우 일반적으로 자바 프로그램을 시작할 때 딱 1개가 만들어진다. 클래스 변수는 인스턴스 변수와는 달리 여러 곳에서 공유하는 목적으로 주로 사용된다...

[IntelliJ] 인텔리제이 단축키 모음

본 게시물은 수시로 업데이트 됩니다.[마지막 수정: 25-01-19] Ctrl + 클릭Go to Definition 기능psvmpublic static void main(String[] args) {} soutSystem.out.println(); soutvSystem.out.println(변수 이름); soutmSystem.out.println(메서드 이름); iter향상된 for 문 생성 setsetter 생성 getgetter 생성Ctrl + P메서드 호출 시 파라미터 표시 Ctrl + O메서드 오버라이딩 Ctrl + W선택 영역 확장 Ctrl + Alt + V변수 선언 자동 생성 Ctrl + Alt + N코드 정리 Ctrl + Alt + M메서드 추출 Ctrl + Alt + Shift + 방향키코..

728x90